User Guide
70 General-Purpose Programming
AMD64 Technology 24592—Rev. 3.15—November 2009
• ARPL—Adjust Requestor Privilege Level. Opcode becomes the MOVSXD instruction.
• DEC (one-byte opcode only)—Decrement by 1. Opcode becomes a REX prefix. Use the two-byte
DEC opcode instead.
• INC (one-byte opcode only)—Increment by 1. Opcode becomes a REX prefix. Use the two-byte
INC opcode instead.
3.4.7 Instructions with 64-Bit Default Operand Size
Most instructions default to 32-bit operand size in 64-bit mode. However, the following near branches
instructions and instructions that implicitly reference the stack pointer (RSP) default to 64-bit operand
size in 64-bit mode:
• Near Branches:
- Jcc—Jump Conditional Near
- JMP—Jump Near
- LOOP—Loop
- LOOPcc—Loop Conditional
• Instructions That Implicitly Reference RSP:
- ENTER—Create Procedure Stack Frame
- LEAVE—Delete Procedure Stack Frame
- POP reg/mem—Pop Stack (register or memory)
- POP reg—Pop Stack (register)
- POP FS—Pop Stack into FS Segment Register
- POP GS—Pop Stack into GS Segment Register
- POPF, POPFD, POPFQ—Pop to rFLAGS Word, Doubleword, or Quadword
- PUSH imm32—Push onto Stack (sign-extended doubleword)
- PUSH imm8—Push onto Stack (sign-extended byte)
- PUSH reg/mem—Push onto Stack (register or memory)
- PUSH reg—Push onto Stack (register)
- PUSH FS—Push FS Segment Register onto Stack
- PUSH GS—Push GS Segment Register onto Stack
- PUSHF, PUSHFD, PUSHFQ—Push rFLAGS Word, Doubleword, or Quadword onto Stack
The default 64-bit operand size eliminates the need for a REX prefix with these instructions when
registers RAX–RSP (the first set of eight GPRs) are used as operands. A REX prefix is still required if
R8–R15 (the extended set of eight GPRs) are used as operands, because the prefix is required to
address the extended registers.
The 64-bit default operand size can be overridden to 16 bits using the 66h operand-size override.
However, it is not possible to override the operand size to 32 bits, because there is no 32-bit operand-