汇编语言和c语言的混合编程中,为什么ESP+4可以用来接收c语言函数的参数?

 我来答
好求知
推荐于2017-12-16 · TA获得超过6515个赞
知道大有可为答主
回答量:966
采纳率:80%
帮助的人:1172万
展开全部
ESP用于指向栈的栈顶(下一个压入栈的活动记录的顶部),而栈由高地址向低地址成长,函数调用是用入栈的方式传递参数,故在函数处理参数时,ESP+4就是最后一个入栈的参数的地址,ESP+8就是再前一个参数的地址。
更多追问追答
追问
顺便一问,int8中的ret是返回哪个值?
追答
调用函数后返回值都是存储在EAX中,MOV EAX, 0,所以返回值是0
精神病院长12
2020-12-10
知道答主
回答量:13
采纳率:0%
帮助的人:8670
展开全部
ESP栈顶存放的是返回地址,使用32位模式的话,地址应该也是32位,ESP的栈顶开始的4个字节存储这个32位地址,再然后C语言大部分编译器编译出来,入参的时候都是倒着PUSH参数的,所以最后一次PUSH,是第一个参数,所以ESP+4之后就是第一个参数了,可以参考CALL指令和RET指令的相关信息就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式