我使用 NASM,并且对 ret
指令有疑问。我知道我应该在 ret 之后指定发送到堆栈的变量数量,但是如何动态地执行此操作呢?我尝试过:
ret eax
和
ret dword[var]
但是这些都不起作用。有办法做到这一点吗?
最佳答案
没有操作码可以做到这一点,唯一可用的操作码要求数字是常量。
理论上,您可以将返回值弹出到寄存器中,然后根据动态值调整堆栈指针,压入返回地址和RET
,但这有点复杂。
您需要这样做的原因是什么?通常,堆栈中返回地址之前的任何值都属于调用函数,处理它们是它们的工作。
关于assembly - 清理堆栈时可以将动态值(寄存器或内存)与 RET 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38372949/