Я ищу способ синтаксического анализа файла c-source в Python.
Я знаю, что есть библиотека типа pycparse, которая может анализировать c-файлы, но кажется, что это зависит от компилятора gcc.,
Я работаю над инструментом вроде readelf, который читает файл ELF, извлекает коды операций из функции.Мне нужно прочитать c-sourcefiles, чтобы получить соответствующий c-код функции из файла.
Так что, если мы думаем на разделенном экране, я хочу видеть ассемблер / коды операций слева, исоответствующий c-код справа.
Так, например, когда я открываю базовый калькулятор, написанный на c, у меня есть функция с именем «add» в моем двоичном файле.Я извлекаю коды операций / ассемблер и показываю его в левой части окна.Теперь мне нужна функция python, которая открывает все c-файлы в каталоге, чтобы найти соответствующий c-код функции.
У кого-нибудь есть идеи, как решить эту проблему?
Вотпример вывода материала, который у меня сейчас есть:
|==================================================================|
| Adress | Function | Size |
|====================|================================|============|
| 0x000000000000065a | sub | 31 |
|==================================================================|
| 55 48 89 e5 89 7d ec 89 75 e8 c7 45 fc 00 00 00 00 8b 45 ec 2b |
| 45 e8 89 45 fc 8b 45 fc 5d c3 |
|==================================================================|
| int sub(int a, int b) |
| { |
| int c = 0; |
| c = a - b; |
| return c; |
| } |
|==================================================================|
Но мой код в настоящее время может работать только с pycparse и basic-c-файлами, потому что pycparse завершается ошибкой, если мне приходится искать в разных c-файлах дляфункция.Я думаю, что он использует компилятор для компиляции кода и просто действует как обертка arround gcc.