奇怪的汇编问题
在一个.S文件中定义了一个函数int func(int a, int b),功能是返回(a + b)
- func:
- //push %ecx
- push %ebp
- movl %esp, %ebp
- subl $16, %esp
- movl 8(%ebp), %eax
- addl 12(%ebp), %eax
- movl %ebp, %esp
- pop %ebp
- //pop %ecx
- ret
复制代码如果用上代码,一切正常,如果将上述代码里面的push %ecx和pop %ecx用上,函数func的返回值就错了,不知为啥不能保存%ecx?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为你改变了正常的栈帧结构
movl 8(%ebp), %eax
addl 12(%ebp), %eax
这里的值要相应地加4
回复 2# qtdszws
所言极是