c语言 - 使用 gcc 的中间 GIMPLE 格式



根据本文,gcc在生成代码之前使用了几种中间格式。我读到GIMPLE格式使用三个地址代码,这似乎是最容易使用的中间语言。但我需要更多的细节,因为我需要构建一个工具,在生成最终代码之前,可以获取中间代码并插入一些代码。

为此,我首先需要知道如何生成GIMPLE格式的代码并将其保存在文件中。所以我在找一些文件和例子。此外,如果有人处理过这样的事情,我能知道这个任务的复杂性吗?这个任务是在中间代码中插入一些代码?

您可能会发现为GCC编写插件更容易,这将允许您挂接GIMPLE生成并在GCC中更改它,这将减少保存、编辑然后尝试从GIMPLE表单编译的停机时间。MELT就是这样一个插件(尽管它提供了的方式而不仅仅是更改较低级别的表示)。这里还有一个很好的PDF关于GIMPLE更改插件。

另外,您可以在这里查看GCC的GIMPLE如何工作的信息。就倾销而言:

您可以请求使用标志-fdump-tree GIMPLE转储类似C的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)

相关内容

  • 没有找到相关文章

最新更新