【问题标题】:Trying to grasp C bytecode... does/can GNU/gcc produce C bytecode like Clang/LLVM?试图掌握 C 字节码... GNU/gcc 是否/可以生成像 Clang/LLVM 这样的 C 字节码?
【发布时间】:2013-03-07 11:58:07
【问题描述】:

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

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

~$ clang ~/prog_name.c -S -emit-llvm -o -

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

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

也许这一切都是可笑的天真,但我发现要突破这个表面非常具有挑战性。

【问题讨论】:

标签: c gcc llvm clang bytecode


【解决方案1】:

或许可以试试看language reference

据我所知,GCC 确实有一个众所周知的 IR,即 GIMPLE(另一个 reference here)。

如果您的意思是更愿意分析程序集输出而不是 IR,您可以查看描述如何输出程序集文件的 this question

【讨论】:

  • @d0rmLife 确实我相信 gcc 网站暂时关闭了,我还是把它们链接了,因为它们是你想看到的链接(又名官方等)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多