3-536 Vol. 2A LEA—Load Effective Address
INSTRUCTION SET REFERENCE, A-M
Operation
IF OperandSize = 16 and AddressSize = 16
THEN
DEST ← EffectiveAddress(SRC); (* 16-bit address *)
ELSE IF OperandSize
= 16 and AddressSize = 32
THEN
temp ← EffectiveAddress(SRC); (* 32-bit address *)
DEST ← temp[0:15]; (* 16-bit address *)
FI;
ELSE IF OperandSize
= 32 and AddressSize = 16
THEN
temp ← EffectiveAddress(SRC); (* 16-bit address *)
DEST ← ZeroExtend(temp); (* 32-bit address *)
FI;
ELSE IF OperandSize
= 32 and AddressSize = 32
THEN
DEST ← EffectiveAddress(SRC); (* 32-bit address *)
FI;
ELSE IF OperandSize
= 16 and AddressSize = 64
THEN
temp ← EffectiveAddress(SRC); (* 64-bit address *)
Table 3-59. 64-bit Mode LEA Operation with Address and Operand Size Attributes
Operand Size Address Size Action Performed
16 32 32-bit effective address is calculated (using 67H prefix). The
lower 16 bits of the address are stored in the requested
16-bit register destination (using 66H prefix).
16 64 64-bit effective address is calculated (default address size).
The lower 16 bits of the address are stored in the requested
16-bit register destination (using 66H prefix).
32 32 32-bit effective address is calculated (using 67H prefix) and
stored in the requested 32-bit register destination.
32 64 64-bit effective address is calculated (default address size)
and the lower 32 bits of the address are stored in the
requested 32-bit register destination.
64 32 32-bit effective address is calculated (using 67H prefix),
zero-extended to 64-bits, and stored in the requested 64-bit
register destination (using REX.W).
64 64 64-bit effective address is calculated (default address size)
and all 64-bits of the address are stored in the requested
64-bit register destination (using REX.W).