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