assemblyx86-64attaddressing-moderelative-addressing

what does "mov offset(%rip), %rax" do?


Does rax get offset plus the address of this instruction, or the next? From a microcode point of view it might be easier if the answer was the next instruction.


Solution

  • The next. That's a general rule on x86 (see also branches).

    In Intel's manual volume 2 section 2.2.1.6 RIP-Relative Addressing:

    A new addressing form, RIP-relative (relative instruction-pointer) addressing, is implemented in 64-bit mode. An effective address is formed by adding displacement to the 64-bit RIP of the next instruction.