是否有支持带偏移的寄存器间接寻址的CALL指令?

时间:2016-07-05 02:46:07

标签: assembly x86

如果我在EAX有一个模块的基地址并且想要调用位于EAX+C的函数,那么是否有以下代码的单行代替?

ADD EAX, C
CALL EAX

似乎CALL [EAX+C]给出了未定义的行为。

1 个答案:

答案 0 :(得分:7)

没有

call eaxRegister indirect,它调用其地址位于 EAX 的例程。
call [eax+C]Memory indirect,它调用其地址位于 MEM [EAX + C] 的例程。

这就是他们有不同行为的原因 x86不支持call eax+C形式,即带间隙的寄存器间接。 没有单一的指令可以做。