根据这篇文章, gcc在生成代码之前使用了几种中间格式.我读到GIMPLE格式使用三个地址代码,这似乎是最容易使用的中间语言.但我需要一些更详细,因为我需要建立一个工具,可以把中间代码,并生成最终的代码之前插入一些代码到它.
为此,我首先需要知道如何生成GIMPLE格式代码并将其保存在文件中.所以我正在寻找一些文件和例子.此外,如果有人使用过这些东西,我是否可以知道这项任务的复杂性,即将一些代码插入到中间代码中?
GIMPLE是GCC系统的内部表示之一.可以通过-fdump-*compiler参数转储GIMPLE或任何其他内部表示.但有没有办法编译转储的GIMPLE或任何其他表示?似乎GCC没有GIMPLE前端.我想做的是转储,分析,修改然后重新编译转储的GIMPLE以执行各种代码检测.
PS我知道GCC插件,我知道LLVM/Clang,所以请尽量回答确切的问题而不建议替代解决方案.谢谢!
我正在进行代码优化并通过gcc内部.我在我的程序中写了一个简单的表达式,然后检查了该表达式的gimple表示,我被卡住了为什么gcc已经这样做了.说我有一个表达式:
if(i < 9)
Run Code Online (Sandbox Code Playgroud)
然后在gimple表示中它将被转换为
if(i <= 8)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么gcc这样做.它是某种优化,如果是,那么任何人都可以告诉我它如何优化我们的程序?