根据this article gcc在生成代码之前使用了几种中间格式。我读到GIMPLE格式使用三个地址代码,这似乎是最容易使用的中间语言。但是我需要更多细节,因为我需要构建一个可以获取中间代码并在生成最终代码之前插入一些代码的工具。
为此,我首先需要知道如何生成GIMPLE格式代码并将其保存在文件中。所以我正在寻找一些文件和例子。此外,如果有人使用过这些东西,我是否可以知道这项任务的复杂性,即将一些代码插入到中间代码中?
您可以使用标志-fdump-tree-gimple
轻松生成任何文件的GIMPLE表示。
如果你想编写一个插件,那么你可能会对GCC的传递方式感兴趣。您可以使用表单的标志查看每个传递的输出:
-fdump-<ir>-<passname>
ir
可能是:
tree
:GIMPLE的过程内通过ipa
:GIMPLE的过程间通行证rtl
:RTL的过程内传递使用<passname> = all
查看所有转储,例如-fdump-ipa-all
。
我试过了旗帜-fdump-tree-gimple
。它仅适用于C / C ++语言,而不适用于其他语言,如Java,Ada,Fortran和Objective-C)