2013-03-18 18 views
1

最近有人告诉我如何将C函数编译为LLVM字节码,然后如何将LLVM字节码转换为x86 ASM。作为一个常规的GNU/gcc用户,我对此有一些疑问。轻描淡写地说。试图抓住C字节码...... GNU/gcc可以生成像Clang/LLVM这样的C字节码吗?

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

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

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

有没有人有任何建议或引用模糊地解密字节码给出的信息?目前我与实际的ASM进行比较和对比,所以说这很慢是一种恭维。或许这一切都很滑稽,但我觉得突破这一点非常具有挑战性。

+0

http://llvm.org/releases/1.3/docs/CommandGuide/html/llvmgcc.html – 2013-03-18 23:26:36

+0

而对于LLVM语言本身的文档:http://llvm.org/docs/LangRef.html – 2013-03-18 23:27:46

+0

@RobertHarvey看起来比http://llvm.org/docs/LangRef.html更有帮助......谢谢 – d0rmLife 2013-03-18 23:29:26

回答

3

也许试试看看language reference

据我所知,海湾合作委员会确实有一个知名的红外线,如​​(另一reference here)。

如果您的意思是说您宁愿分析组件输出而不是IR,那么您可以看看this question,它描述了如何输出组件文件。

+0

不幸的是,您的GIMPLE链接都不适合我。 – d0rmLife 2013-03-18 23:33:24

+0

@ d0rmLife事实上,我相信gcc网站暂时关闭了,无论如何我都链接了它们,因为它们是您想要查看的链接(又名官方等) – 2013-03-18 23:34:00

+0

@ d0rmLife gcc站点已备份;链接应该工作。 – 2013-03-20 21:30:51