3

我正在尝试解析DWARF信息,然后使用该信息使用 pin 工具从程序中获取局部变量。这有点像在类固醇上使用pinas GDB。但是,我很难理解它们对局部变量和分配的寄存器的含义。

例如,

<2>< 1214>  DW_TAG_variable
    DW_AT_name                  mts
    DW_AT_decl_line             69
    DW_AT_type                  <90>
    DW_AT_location              DW_OP_breg4+44

我知道,为了从变量 mts 中获取数据,我必须在某个寄存器中添加 44,我的问题是我不知道他们在谈论哪个寄存器。我该如何解释这个?我在网上找不到任何东西。

另一个例子是DW_OP_fbregDW_OP_breg5等等。

x86任何人都知道他们在上下文中谈论哪些寄存器?他们在谈论ebp还是esp?谢谢。

4

1 回答 1

7

这是一个象征性的寄存器名称。请参阅WineHQxxx_map_dwarf_register源代码中的方法:

例如,DW_OP_breg4ESPi386 上。

如果您还没有这样做,请参阅以下内容。

于 2012-11-12T19:08:41.100 回答