assembly - 替代x86汇编的“调用”指令?

标签 assembly x86 call

x86调用指令有哪些替代选择?
也许像推回寄信人地址然后跳转一样?

它们也是获取内存中当前位置的命令吗?

最佳答案

call指令实际上为您执行此操作。例如,call my_func将执行以下操作:

push ret_address
jmp my_func


后续的ret调用在某种意义上只会使用您刚刚推回jmp的地址。是否有特定原因导致您不想使用call或对您不可用?
对于内存中的当前位置,您可以尝试读取eip寄存器(无法对其进行写操作)。

关于assembly - 替代x86汇编的“调用”指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060970/

相关文章:

linux-kernel - 当 mov 指令导致 x86 上禁用中断的页面错误时会发生什么?

ios - iPhone 通话记录和应用商店

javascript - 为什么我不能 .call() Function.call?

assembly - 什么是 Irvine32 库,我们为什么要使用它?

sorting - assembly 中的选择排序过程

assembly - x86 保护模式下段寄存器的用途是什么?

linux - 使用内存映射的IO时调用ioread函数有什么好处

c++ - 为什么表达式 (int) +1e10 不会产生 -2147483648 正如 CSAPP 所描述的那样?

c# - 如何从一个类调用另一个类的方法

c - 从内联汇编调用函数时针对符号重定位 R_X86_64_PC32