Figure 1-1 Architecture and implementation of the piano
Figure 1-2 Computation of squares by tabular differences
Figure 1-3 SQUARES program for Itanium architecture
Figure 2-1 Basic computer structure
Figure 2-2 Memory organization
Figure 2-3 Memory as an array
Figure 2-4 Instruction execution
Figure 2-5 Itanium information units
Figure 3-1 Stepwise development using programming environment tools
Figure 3-2 SQUARES listing file (GNU)
Figure 3-3 Information from a link map for SQUARES (gcc)
Figure 3-4 Output from the nm command for SQUARES
Figure 4-1 Itanium instruction bundle format
Figure 4-2 Itanium instruction bit-field layout
Figure 4-3 HEXNUM: An illustration of arithmetic instructions
Figure 4-4 Itanium 2 system cache relationships
Figure 4-5 DOTPROD: An illustration of data access instructions
Figure 5-1 DOTLOOP: An illustration of a simple down-counted loop
Figure 5-2 DOTCLOOP: Using the Itanium loop count register
Figure 5-3 MAXIMUM: An illustration of conditional instructions
Figure 6-1 HEXNUM2: Illustrating masking with logical instructions
Figure 6-2 Extract and deposit instructions
Figure 6-3 SCANTEXT: An illustration of processing string data
Figure 6-4 Register scheme for the Booth algorithm
Figure 6-5 DECNUM: Multiplying by a reciprocal to perform integer division
Figure 6-6 Encapsulating the putchar and getchar routines of C
Figure 6-7 IO_C: A test of input and output
Figure 6-8 BACKWARD: An illustration of accessing bytes
Figure 7-1 Addressing quad word values stored on a stack
Figure 7-2 An Itanium procedure frame
Figure 7-3 DECNUM2: An illustration of stack usage
Figure 7-4 SPARC register windows for three procedures or functions
Figure 7-5 Register stack changes during calls and returns
Figure 7-6 Argument passing in registers and on the memory stack
Figure 7-7 Function that implements Booth's algorithm
Figure 7-8 DECNUM3 program that tests the BOOTH function
Figure 7-9 RANDOM: Illustrating a function that calls other functions
Figure 7-10 Calling program in C
Figure 7-11 Calling program in FORTRAN
Figure 8-1 HORNER: Illustrating the fused multiply add instruction
Figure 8-2 Double-precision and quad word data movement and conversion
Figure 8-3 Circle and enclosing square for estimating p
Figure 8-4 APPROXPI: Illustrating the use of floating-point instructions
Figure 9-1 Schematic relationships between logical and physical file storage
Figure 9-2 File system layers seen by a C program
Figure 9-3 SCANTERM: Showing calls to C functions for standard I/O
Figure 9-4 SORTSTR: Bubble sort for strings
Figure 9-5 SCANFILE: Using C-like input and output with files
Figure 9-6 SORTINT: Bubble sort for integer quantities
Figure 10-1 Five-stage pipeline
Figure 10-2 Execution of an instruction sequence with split issue
Figure 10-3 DOTCTOP: Illustrating modulo scheduling of a loop
Figure 10-4 DOTCTOP2: Illustrating a different modulo scheduling of a loop
Figure 10-5 FIB1: Computing Fibonacci numbers using recursion
Figure 10-6 FIB2: Computing Fibonacci numbers without recursion
Figure 10-7 FIB3: Computing Fibonacci numbers using the register stack
Figure 10-8 TESTFIB: Calling program for FIB1, FIB2, and FIB3
Figure 11-1 COM_F and COM_C: Simple programs for compiler comparisons
Figure 11-2 INLINE: Program to illustrate bringing a function inline
Figure 11-3 Simpler recursive generation of Fibonacci numbers (fib101)
Figure 13-1 Original Itanium system cache relationships
Figure F-1 SQUARES program containing the _Asm function
Figure F-2 SQUARES program containing the asm function