В информации DWARF, что именно они означают под регистрами DW_OP?

Я пытаюсь разобрать DWARF info, а затем, используя эту информацию, получают локальные переменные из программы с помощью инструмента pin. Это вроде как использовать pin как 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_fbreg, DW_OP_breg5 и так далее.

Кто-нибудь знает, о каких регистрах они говорят в x86 контекст? Они говорят об ebp или esp? Благодарю.

3

Решение

Это символическое имя регистра. Увидеть xxx_map_dwarf_register методы в WineHQИсточник для:

Например, DW_OP_breg4 является ESP на i386.

Также смотрите следующее, если вы еще этого не сделали.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]