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.
Note that symbol_name(%rip)
calculates the offset required to reach symbol_name
from here, rather than adding the absolute address of symbol_name
to RIP as an offset.
But yes, for numeric offsets like mov 4(%rip), %rax
, that will load 8 bytes starting at 4 bytes past the end of this instruction.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With