Как анализировать внутреннее представление 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 почти несжимаемы, и ему нужно глубокое понимание этого диалекта

Другие вопросы по тегам