在Google Native Client的论文中,作者将nacljmp
定义为以下两条指令:
and %eax, 0xffffffe0 // Clears the 5 least significant bits in %eax.
jmp *%eax
首先,我可以看到它们清除了5个最低有效位,使指令在跳转到之前进行32位对齐。但是,在%eax
之前,星号是什么意思?我已经搜索了许多关于x86程序集的教程而没有太多运气。
答案 0 :(得分:7)
jmp *%eax
是jmp eax
的AT& T语法,是jmp r/m32
的一种形式。它将跳转到寄存器eax
中包含的地址:
跳转到r / m32中给出的绝对间接地址。
相同类型的跳转指令的另一种形式是jmp *(%eax)
,它对应于Intel语法中的jmp [eax]
。它将跳转到寄存器eax
指向的32位存储单元中存储的地址。