最近有人告诉我看看 C 函数是如何编译成 LLVM 字节码的,然后是 LLVM 字节码是如何翻译成 x86 ASM 的。作为一个普通的 GNU/gcc 用户,我对此有一些疑问。说得客气一点。
GNU/gcc 也编译成字节码吗?它可以?我的印象是 gcc 直接编译成 ASM。如果没有,有没有办法像使用 clang 命令一样查看字节码中介?
~$ clang ~/prog_name.c -S -emit-llvm -o -
<== 将显示 prog_name.c 的字节码。
此外,我发现字节码相当拜占庭式。相比之下,它使汇编语言看起来像是轻读。换句话说:我不知道它在说什么。
是否有人对模糊破译字节码提供的信息有任何建议或参考?目前我与实际的 ASM 进行比较和对比,所以说它进展缓慢是一种恭维。
也许这一切都显得幼稚可笑,但我发现要突破它的表面非常具有挑战性。