1

It seems that x86 supports several addressing modes, as shown in following picture.

x86 addressing modes

It seems that far jump does not support immediate addressing mode, however I am not sure.

What x86 addressing modes are supported or legal for the far jump (FF /5) and the far call (FF /3) instructions?

1201ProgramAlarm
  • 32,384
  • 7
  • 42
  • 56
Albaforia
  • 13
  • 5
  • 2
    Any normal addressing mode is allowed. `m16:16` means jump to the [16 bit segment:16-bit offset] that is stored at the memory address supplied. `m16:32` is a memory operand that points to an address containing a 48 bit address (16 bit segment:32-bit offset). The `ptr16:16` and `ptr16:32` are effectively immediate values encoded as part of the instruction. Some assemblers (ancient MASM) may not have an encoding for some variants of FAR JMPs and CALLs. If in protected mode `segments` are `selectors`. The syntax for encoding the target as an immediate differs from assembler to assembler. – Michael Petch Jul 14 '16 at 06:15
  • 1
    That table is mysteriously missing the "absolute" addressing mode. – Raymond Chen Jul 14 '16 at 07:02
  • Yes, far jmp in 16 and 32-bit mode supports immediate absolute `ptr16:32`, but *near* jmp only supports relative immediate, not absolute. Related: [Call an absolute pointer in x86 machine code](//stackoverflow.com/q/19552158). – Peter Cordes Apr 27 '18 at 04:57

0 Answers0