IA-32 Intel® Architecture Optimization
D-10
Inlined Assembly and
ebx
When using aligned frames, the
ebx
register generally should not be
modified in inlined assembly blocks since
ebx
is used to keep track of
the argument block. Programmers may modify
ebx
only if they do not
need to access the arguments and provided they save
ebx
and restore it
before the end of the function (since
esp
is restored relative to
ebx
in the
function’s epilog).
For additional information on the use of
ebx
in inline assembly code and
other related issues, see relevant application notes in the Intel
Architecture Performance Training Center.
CAUTION.
Do not use the
ebx
register in inline
assembly functions that use dynamic stack alignment
for double, __m64, and __m128 local variables unless
you save and restore
ebx
each time you use it. The
Intel C++ Compiler uses the
ebx
register to control
alignment of variables of these types, so the use of
ebx
,
without preserving it, will cause unexpected program
execution.
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...