当前位置: 首页 > 知识库问答 >
问题:

试图掌握C字节码...GNU/gcc 能不能像 Clang/LLVM 那样产生 C 字节码?

章哲彦
2023-03-14

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

GNU/gcc也编译为字节码吗?能吗?我的印象是gcc直接编译到ASM中。如果没有,是否有办法像clang命令那样查看字节码中介?

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

此外,我发现字节码相当复杂。相比之下,它让汇编语言看起来像是闲书。换句话说:我不知道它在说什么。

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

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

共有1个答案

祁嘉瑞
2023-03-14

也许可以看看语言参考。

据我所知,GCC确实有一个和GIMPLE(这里另一个参考)一样知名的IR。

如果您的意思是希望分析程序集输出而不是IR,那么可以看看这个问题,它描述了如何输出程序集文件。

 类似资料:
  • 问题内容: 如果输入参数是字节数组-byte [],则dll的本机方法可在Java中使用。如果我们使用c#中的相同方法,则会抛出EntryPointNotFoundException。 是因为java和c#中的byte []是不同的东西吗?如果是这样,我应该如何使用c#中的本机函数? 问题答案: Java缺少无符号类型。特别是,Java缺少无符号字节的原始类型。Java字节类型是带符号的,而C#字

  • 问题内容: 我使用的是Max OS X 10.10.3,在没有模块存在之前,我终于在Python 3中对此进行了展示。 但是,现在当我尝试或时,我收到消息: 是否有任何Mac用户(使用Python 3)知道出了什么问题?有人使用过Zelle书和他的模块吗?谢谢。 问题答案: 为了后代:我遇到了同样的问题,并使用 该文件似乎以多种方式弄乱了(错误的结尾等);不知道怎么… 参见: 使用以下sed命令删

  • 问题内容: 我正在尝试将有效的Python 2.7代码转换为Python 3代码,并且从urllib请求模块收到类型错误。 我使用内置的2to3 Python工具来转换以下工作的urllib和urllib2 Python 2.7代码: 2to3模块的输出为以下Python 3代码: 运行Python 3代码时,会产生以下错误: 我还阅读了另外两个票证(ticket1和ticket2),其中提到了对

  • 我在数据库中有一个包含varbinary数据的AttachmentFile列。在C#中,我将它存储在一个byte[]数组中。我需要将此内容作为字符串显示给用户。我尝试了几种不同的方法将字节数组转换为字符串,但似乎都不起作用。 但以上这些都没有给我一个清晰的线索。有什么想法吗?

  • 问题内容: 当前(Java 6)中是否有您可以用Java字节码执行的,您无法在Java语言中执行的操作? 我知道两者都已经完成了图灵,所以将“可以做”理解为“可以更快/更好地做事,或者只是以不同的方式做”。 我正在考虑无法使用Java生成额外的字节码,例如,除非特定的字节码用于将来的版本。 问题答案: 据我所知,Java 6支持的字节码中没有任何主要功能,这些功能也无法从Java源代码访问。这样做

  • 存储方向,个人做过15445 和 824。没有太多***。非典型面经 lru-k 比 lru 好在哪 k怎么选择?依据?不会 为什么要自己做缓存池,操作系统不是有pagecache吗? fsync出现卡顿怎么处理 ?不会 B+树比B树好在哪里?哪个层数更多? B+树乐观锁怎么实现? 火山模型优缺点? 接上条,虚函数开销多大测过吗?多了几次内存访问? 规则优化如何避免 overhead? (就是优化