
IA-32 Intel® Architecture Optimization
2-90
Prolog Sequences
Assembly/Compiler Coding Rule 57. (M impact, MH generality) In
routines that do not need a frame pointer and that do not have called routines
that modify
ESP
, use
ESP
as the base register to free up
EBP
. This optimization
does not apply in the following cases: a routine is called that leaves
ESP
modified upon return, for example,
alloca
; routines that rely on
EBP
for
structured or C++ style exception handling; routines that use
setjmp
and
longjmp
; routines that use EBP to align the local stack on an 8- or 16-byte
boundary; and routines that rely on
EBP
debugging.
If you are not using the 32-bit flat model, remember that
EBP
cannot be
used as a general purpose base register because it references the stack
segment.
Code Sequences that Operate on Memory Operands
Careful management of memory operands can improve performance.
Instructions of the form “
OP REG, MEM
” can reduce register pressure by
taking advantage of scratch registers that are not available to the
compiler.
Assembly/Compiler Coding Rule 58. (M impact, ML generality) For
arithmetic or logical operations that have their source operand in memory and
the destination operand is in a register, attempt a strategy that initially loads
the memory operand to a register followed by a register to register ALU
operation. Next, attempt to remove redundant loads by identifying loads from
the same memory location. Finally, combine the remaining loads with their
corresponding ALU operations.
The recommended strategy follows:
1.
Initially, operate on register operands and use explicit load and
store instructions, minimizing the number of memory accesses by
merging redundant loads.
2.
In a subsequent pass, free up the registers that contain the operands
that were in memory for other uses by replacing any detected code
sequence of the form shown in Example 2-25 with
OP REG2
,
MEM1
.
Summary of Contents for ARCHITECTURE IA-32
Page 1: ...IA 32 Intel Architecture Optimization Reference Manual Order Number 248966 013US April 2006...
Page 220: ...IA 32 Intel Architecture Optimization 3 40...
Page 434: ...IA 32 Intel Architecture Optimization 9 20...
Page 514: ...IA 32 Intel Architecture Optimization B 60...
Page 536: ...IA 32 Intel Architecture Optimization C 22...