gpt4 book ai didi

assembly - RET 2 在汇编中的含义

转载 作者:行者123 更新时间:2023-12-03 11:32:18 25 4
gpt4 key购买 nike

我对汇编很陌生,我不明白在 proc 结束时你用 ret 写一个数字的确切含义是什么。陈述。

像这样:

Function Proc
push ax cx
.
...body...
.
pop cx ax
ret 2
Function endp

我知道这与堆栈指针应该在函数结束时返回的位置有关吗?

它有什么作用?

最佳答案

是的,但是 ret 2还从堆栈中删除 2 个字节的参数。据推测,您的函数被称为:

push some_parameter
call Function

此时, cdecl函数 - “调用者清理”函数(通常由 C 使用)- 需要 add sp, 2 “清理堆栈”,删除参数。这样的函数将以普通的 ret 结尾.

一个 stdcall函数,这就是你所拥有的,是一个“被调用者清理”函数(例如由 Windows API 使用)不需要 add sp, 2 - 已由 ret 2 完成.

如果您不知道, call将返回地址放在堆栈上(并且 ret 将其弹出),因此您不能只是 pop获取函数内部的参数。

关于assembly - RET 2 在汇编中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com