Programming Itanium-based Systems: Developing High Performance Applications for Intel's New Architecture

Efficient Itanium processor code is often, at the assembly-language level, very complex. Even reading compiled code can be difficult and tedious. And coding by hand in assembly language is only a viable option for certain rare routines that must be optimized to the maximum because of some execution-time-critical aspect of their usage. A programmer s best defense against this complexity is a good compiler, and good compilers are indeed being produced and continually improved for the Itanium processor.
Ten to twenty years ago, it was the norm for most PC compilers to translate HLL programs into assembly language quite literally that is to say, by associating a usually contiguous set of assembly language instructions with each high-level statement. As long as the translation of each of the individual high-level statements was correct, the program ran correctly. Compilers didn t do too much second-guessing about what statements should come in what order, what code could be eliminated from loops, or which of several alternate ways to compose a section of code made the most sense.
In more recent years, compilers have generally gotten smarter and often make good guesses, for instance, as to when to inline small functions, when variables can stay in registers instead of memory, and when critical loops can be computationally simplified beyond what was apparently written at the higher level of the source code. As a result, code has been getting faster, but the correlation between high-level source code statements and the assembly instructions that...