In 64-bit mode, the operand size for all near branches (CALL, RET, JCC, JCXZ, JMP,
and LOOP) is forced to 64 bits
. These instructions update the 64-bit RIP without the need for a REX operand-size prefix.
The following aspects of near branches are controlled by the effective operand size:
Truncation of the size of the instruction pointer
Size of a stack pop or push, due to a CALL or RET
Size of a stack-pointer increment or decrement, due to a CALL or RET
Indirect-branch operand size
-----------------------------------------------------------------------

In one sentence it says the operand size of 64 bit branch instructions is 64 bits but then it talks about the effective operand size! Can effective operand size( in 64 bit mode) not
be 64 bits?

What is the meaning of truncation of the instruction pointer in the above line of the Intel manual?
Posted on 2010-08-03 02:58:50 by logicman112

Can effective operand size( in 64 bit mode) not be 64 bits?

What is the meaning of truncation of the instruction pointer in the above line of the Intel manual?


In 64-bit mode default operand size is 32 (with exceptions, as said). REX.W prefix promotes operand size to 64; there is no much sense for 32-bit call/ret/etc. in 64-bit code, hence for them default operand size is 64 (for example, 32-bit displacement in direct call is sign-extended before addition to rip).

Truncation means ip/eip/rip usage.
Posted on 2010-08-26 00:18:37 by baldr