QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 660|回复: 3

问一个C和汇编编程的问题?

[复制链接]
发表于 2003-7-29 23:09:33 | 显示全部楼层 |阅读模式
c语言调用汇编子程序,在子程序执行完返回主程序时,是不是C语言自动恢复先前压入堆栈的参数。我的意思就是说:在编程时看不到这步,是不是C编译器自动加入弹出 “因先前要传递参数给子程序的时压入到堆栈的参数所占据的堆栈” 的语句
发表于 2003-7-30 23:11:05 | 显示全部楼层
U right 应该是编译器生成了弹栈的指令
你可以用objdump把编译链接后的可执行文件反汇编看一下。
回复

使用道具 举报

发表于 2003-7-30 23:13:22 | 显示全部楼层
实际上也不是自动加入的问题,这就是编译器的将高级语言转成中级语言应该做的,把硬件指令给透明掉了,使程序员只需要考虑高级算法和数据结构即可。
回复

使用道具 举报

 楼主| 发表于 2003-7-31 08:06:40 | 显示全部楼层
经过验证,确实是如此,并且清楚的看到调用子程序后,断点是自动压入堆栈的,并且,子程序返回后,确实有一个堆栈恢复的汇编语句,有几个参数,sp的值就加几。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 09:06 , Processed in 0.038333 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表