"mov offset(%rip),%rax"是做什么的?

Bin*_*ang 4 x86 assembly att

是否rax得到偏移加上该指令的地址,或下一个?从微码的角度来看,如果答案是下一条指令可能会更容易.

har*_*old 8

下一个.这是x86的一般规则(另见分支).

在英特尔手册第2卷第2.2.1.6节RIP相对寻址中:

一种新的寻址形式,RIP相对(相对指令指针)寻址,以64位模式实现.通过向下一条指令的64位RIP添加位移来形成有效地址.


Pet*_*des 6

请注意,symbol_name(%rip)计算symbol_name从这里到达所需的偏移量,而不是添加symbol_name到 RIP的绝对地址作为偏移量。

但是是的,对于像 那样的数字偏移量mov 4(%rip), %rax,它将从该指令末尾的 4 个字节开始加载 8 个字节。