Недавно мне сказали посмотреть, как функции C компилируются в байт-код LLVM, а затем как байт-код LLVM транслируется в x86 ASM. Как у обычного пользователя GNU/gcc, у меня есть несколько вопросов по этому поводу. Мягко говоря.
GNU/gcc тоже компилирует в байт-код? Возможно? У меня сложилось впечатление, что gcc компилируется непосредственно в ASM. Если нет, есть ли способ просмотреть посредника байт-кода, как с командой clang?
~$ clang ~/prog_name.c -S -emit-llvm -o -
‹== покажет байт-код для prog_name.c.
Кроме того, я считаю байт-код довольно византийским. Напротив, он делает язык ассемблера легким чтением. Другими словами: я плохо понимаю, о чем он говорит.
Есть ли у кого-нибудь какие-либо советы или ссылки для неопределенной расшифровки информации, которую дает байт-код? В настоящее время я сравниваю и сравниваю с реальным ASM, поэтому сказать, что он работает медленно, - это комплимент.
Возможно, все это до смешного наивно, но мне довольно сложно пробиться сквозь поверхность этого.
gcc -fdump-tree-ssa
- person SK-logic   schedule 20.03.2013gcc -fdump-tree-ssa program.c -o program.ssa
, ноnano program.ssa
выглядит как крылышки... или это так должно выглядеть? - person d0rmLife   schedule 20.03.2013program.c
. - person SK-logic   schedule 20.03.2013