gpt4 book ai didi

c++ - 我用 DW_OP_call_frame_cfa 做什么

转载 作者:太空狗 更新时间:2023-10-29 21:39:24 25 4
gpt4 key购买 nike

我正在尝试使用 libdwarf 计算正在运行的程序中局部变量的位置。我曾经能够通过执行 DW_OP_fbreg 来做到这一点,它最终会映射到一个寄存器,该寄存器将成为该功能的框架基础。在较新的矮人标准中,框架基础是 DW_OP_call_frame_cfa。我似乎无法找到任何信息来告诉我如何执行 DW_OP_call_frame_cfa 并返回框架基准位置。有很多对 CFA 表的引用以及谁恢复了哪些寄存器,但我不知道如何获取该信息以及如何应用它。有人可以填补空白吗?

最佳答案

DW_OP_call_frame_cfa 表示您必须使用调用帧信息来计算 CFA;然后将其压入表达式堆栈。

请参阅 DWARF 4 标准的第 6.4 节(“调用帧信息”)以获取对此的解释。本质上,您现在必须阅读 .debug_frame 部分并根据 6.4 中描述的规则对其进行解码。这相当于为另一种小型字节码语言编写另一个解释器;并可能重用 DWARF 表达式解释器。

这个操作码基本上是 DWARF 中的空间优化。编译器已经发出调用帧信息,这个操作码也让他们可以重用它来计算变量位置。

关于c++ - 我用 DW_OP_call_frame_cfa 做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33071545/

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