通过多个函数调用了解函数序言

问题描述

让我们以单个函数中的以下示例为例:

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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...