2
如果我有一个模块的基地址为EAX
,并且想要调用位于EAX+C
的函数,那么是否有以下代码的单行替代?是否有一个CALL指令支持带偏移量的寄存器间接寻址?
ADD EAX, C
CALL EAX
看起来好像CALL [EAX+C]
给出未定义的行为。
如果我有一个模块的基地址为EAX
,并且想要调用位于EAX+C
的函数,那么是否有以下代码的单行替代?是否有一个CALL指令支持带偏移量的寄存器间接寻址?
ADD EAX, C
CALL EAX
看起来好像CALL [EAX+C]
给出未定义的行为。
号
call eax
是Register indirect,它调用其地址是EAX的程序。
call [eax+C]
是Memory indirect,它调用地址在MEM [EAX + C]的例程。
这就是为什么他们有不同的行为。
表格call eax+C
,这将是寄存器间接与偏移,不支持x86。
没有单一的指令可以做。
很好解释,非常感谢! – cdonts