gpt4 book ai didi

assembly - 堆栈指针和帧指针指向 ARM 64 中的相同地址是否有效?

转载 作者:行者123 更新时间:2023-12-04 08:07:40 25 4
gpt4 key购买 nike

我在理解堆栈帧在 ARM 中的工作方式时遇到了一些麻烦。我目前的理解是,堆栈帧是堆栈指针和帧指针之间的内存区域,这是程序存储信息的空间。 然而,我正在调试的程序同时具有堆栈指针和帧指针,指向到相同的内存地址。
有谁知道这是否是有效状态?我一直无法找到有关这种情况的任何文档,我想知道是否还有其他人知道计算机如何处理这种情况。

最佳答案

我想你想看看
Procedure Call Standard for the Arm 64-bit Architecture
在第 6.2.3 节中有

Conforming code shall construct a linked list of stack-frames. Each frame shall link to the frame of its caller by meansof a frame record of two 64-bit values on the stack (independent of the data model). The frame record for theinnermost frame (belonging to the most recent routine invocation) shall be pointed to by the Frame Pointer register(FP). The lowest addressed double-word shall point to the previous frame record and the highest addresseddouble-word shall contain the value passed in LR on entry to the current function.


因此,如果函数使用堆栈将参数传递给被调用函数或进行“动态分配”,则 SP 将与 FP 不同。否则 SP 和 FP 中的地址是相同的。
PS:这个文件在细节上很吝啬,恕我直言。如果我弄错了这个规范,我很高兴得到纠正
Frame Pointer Scheme

关于assembly - 堆栈指针和帧指针指向 ARM 64 中的相同地址是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66143047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com