Как анализировать внутреннее представление GCC, например, GIMPLE, RTL
Я сгенерировал выходные файлы с помощью команды -fdump-tree-all
а также -fdump-rtl-all
и я получил много файлов дампа. Я читал, что коды в GIMPLE имеют синтаксис псевдо-C, а файлы дампа RTL слишком низкого уровня, чтобы их можно было понять. Есть ли способы понять файлы дампа GIMPLE и RTL? Любое программное обеспечение, которое может преобразовать его в C-код или что-то полезное? Любой учебник, чтобы научиться понимать это? Спасибо
1 ответ
Лучший способ сделать это (для меня) - это набросать несколько примеров и самостоятельно понять испущенный код. Это не сложно, есть некоторые изменения по сравнению с оригинальным кодом (например, циклы преобразуются, если с помощью goto), в gcc есть много проходов, и мой совет - выбросить то, что вам нужно. В моем случае я часто использую команды:
-fdump-tree-lower
-fdump-tree-cfg
-fdump-tree-ssa
-fdump-tree-optimized (it's the last pass before going into rtl passes)
RTL почти несжимаемы, и ему нужно глубокое понимание этого диалекта