汇编如何在标签后用寄存器解释跳转

时间:2016-02-14 16:02:01

标签: pointers assembly syntax x86-64 att

jmp    *.L4 (,%rdx,8)

我正在进行一项将其作为无条件跳转之一的作业。 我的问题是:

  1. rdx * 8如何影响跳跃?
  2. *之前做的有什么不同.L4?

1 个答案:

答案 0 :(得分:2)

这只是间接跳过一张桌子。正如您所知,.L4(,%rdx,8)是一个内存地址,值为.L4 + rdx * 8。在64位模式下,指针是8个字节,因此是缩放因子。 rdx只是表格中条目的索引。

*除了静音汇编程序警告之外没有任何区别:)你应该使用*进行间接跳转,但是当汇编程序能够弄明白时,它会发出警告。 (,%rdx,8)是一个死的赠品,这是间接跳跃。如果您有jmp *.L4,则需要*将其与jmp .L4区分开来。前者是间接跳过.L4的指针,而后者只是直接跳转到.L4