如何解决通过多个函数调用了解函数序言
让我们以单个函数中的以下示例为例:
first_function:
pushq %rbp
movq %rsp,%rbp
movq $2,-8(%rbp)
movq $4,-16(%rbp)
...
pop %rbp
ret
如果我们查看...
之前的堆栈,它将为我们提供:
>>> x/4g $rbp-16
0x7fffffffe410: 0x0000000000000004 0x0000000000000002
0x7fffffffe420: 0x0000000000000000 0x00000000004000bd
或者对我来说,一种更简单的可视化方法是:
+----------------+--------------------+---------------------------+
| 0x7fffffffe420 | 0x00000000004000bd | # function return address |
+----------------+--------------------+---------------------------+
| 0x7fffffffe418 | 0x0000000000000000 | # from push %rbp |
+----------------+--------------------+---------------------------+
| 0x7fffffffe410 | 0x0000000000000002 | # from mov $2,-8(%rbp) |
+----------------+--------------------+---------------------------+
| 0x7fffffffe408 | 0x0000000000000004 | # from mov $4,-16(%rbp) |
+----------------+--------------------+--------------------------
然后我的问题是不是一个子函数调用(例如,如果我在...
部分中调用了另一个函数调用)可能破坏了我在上面添加的所有两个变量({{1} }和2
)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。