Dwarf 格式如何计算 Proious SP 指针

how dwarf format caculate provious sp pointer

提问人:radong 提问时间:8/4/2022 最后编辑:radong 更新时间:8/7/2022 访问量:94

问:

enter image description here enter image description here enter image description here enter image description here enter image description here

enter image description here这是来自 Dwarf 文档的示例。 如何计算 provious sp(r7) 指针,我的意思是它没有将 sp 保存在某个地方,因为 sp 是一个被调用者保存寄存器。

The architectural ABI committee specifies that the stack pointer (R7) is the
same as the CFA

这意味着什么? 这是否意味着“r7=cfa”,为什么这有助于计算以前的 SP,并且调用一个函数可能会改变 SP。

在这个例子中,r8 是虚拟的吗?外观是虚拟的。

矮人 PDF。

https://dwarfstd.org/doc/DWARF5.pdf 页码 325

装配 堆栈 Dwarf Stack-Frame 堆栈 - 展开

评论

0赞 Erik Eidt 8/4/2022
一般来说,你要找出答案,不是吗?fsize
1赞 Erik Eidt 8/4/2022
它必须为调用方还原,但这并不意味着它必须将其保存到内存中,因为它可以重新计算。sp
0赞 Jester 8/4/2022
然而,我发现令人费解的是,为什么当明显更改了两次时,该列一直充满(相同的值)。另外评论说显然是错误的,只是在以后恢复R7sR7Start epilogue (R7 has been returned to entry value)R7add R7, R7, <fsize>
0赞 radong 8/5/2022
是的,sp 可以被编译器重新计算,但是调试器如何根据 dwarf 信息计算 sp 值呢?
0赞 radong 8/5/2022
sp 值在执行时可能会更改(调用其他函数将保存调用者保存寄存器并在堆栈上推送额外的参数)。如果我想进行回溯意味着我想在执行 .

答: 暂无答案