Hello, I have upgraded my KEIL from uv4 V4.00a to V4.70.0.0.I chave compiled same project(NXP-LPC2220) in both versions & found that there is difference in hex files generated by both. Why there is such a change,can anybody help me out? Thanks in advance.
different compiler versions frequently produce different executables.
updates of development environments are normally done for a reason. like bug fixes or improvements in optimizations.
There are no magic 1:1 mapping between C and machine code instructions. The machine code is produced as a result of a huge number of decisions that the compiler + linker is making.
Any tiny change to some decision priority inside the compiler can result in significant changes to the produced code for a specific project.
That is a reason why you normally test and qualify a program based on a specific version of the build tools. Then you either stay with the same build tools, or perform a new and extensive qualification tests. A compiler change can result in bugs because of issues with the new compiler, or because the source code may contain errors that didn't manifest themselves with a specific version of the compiler but does with another version.
Apart from differences in code generation by the compiler/linker, the standard library can be updated as well. This will lead to a different binary image too.
... any use of __DATE__ and/or __TIME__ in the source...