2

最近有人告诉我看看 C 函数是如何编译成 LLVM 字节码的,然后是 LLVM 字节码是如何翻译成 x86 ASM 的。作为一个普通的 GNU/gcc 用户,我对此有一些疑问。说得客气一点。

GNU/gcc 也编译成字节码吗?它可以?我的印象是 gcc 直接编译成 ASM。如果没有,有没有办法像使用 clang 命令一样查看字节码中介?

~$ clang ~/prog_name.c -S -emit-llvm -o -<== 将显示 prog_name.c 的字节码。

此外,我发现字节码相当拜占庭式。相比之下,它使汇编语言看起来像是轻读。换句话说:我不知道它在说什么。

是否有人对模糊破译字节码提供的信息有任何建议或参考?目前我与实际的 ASM 进行比较和对比,所以说它进展缓慢是一种恭维。

也许这一切都显得幼稚可笑,但我发现要突破它的表面非常具有挑战性。

4

1 回答 1

3

也许尝试看看语言参考

据我所知,GCC 确实有一个 IR,即众所周知的GIMPLE(此处的另一个参考)。

如果您的意思是您宁愿分析程序集输出而不是 IR,您可以查看描述如何输出程序集文件的这个问题。

于 2013-03-18T23:28:48.370 回答