本文介绍了用最简单的中间格式的工作方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一个工具,我的工作需要,采取由编译器生成的中间格式,添加一些code到它,然后给该修改的中间code编译器的后端来生成最终$ C $℃。

A tool I'm working on needs to take the intermediate format generated by the compiler, add some code to it and then give that modified intermediate code to the backend of the compiler to generate the final code.

这样做对GCC一个小小的研究,我发现GIMPLE格式很容易理解,但我不知道的修改GIMPLE code的复杂性和不知道有什么方法重新启动编辑从那里除了使用插件,并添加自己的通行证。也有人警告我说,文件是稀缺的,当你使用gcc时被卡住吃不了艰难。

By doing a little research on gcc, I found that the GIMPLE format is easy to understand, but I'm not sure about the complexity of modifying the GIMPLE code and don't know of any way to restart the compilation from there except using plugins and adding your own pass. Also people warned me that documentation is scarce and the going gets tough when you are stuck when working with gcc.

另一种选择是使用LLVM字节code。但我从来没有与LLVM工作过,所以不知道我的任务是多么复杂与LLVM。有甚至更好的选择,我不知道的。所以,我只是想知道最好的选择。我的preferences有以下几种。

Another option is to use the LLVM bytecode. But I have never worked with LLVM, so don't know how complex my task would be with LLVM. There maybe even better options I'm not aware of. Therefore, I just want to know the best option. My preferences are the following.


  • 平台独立性

  • 易于使用

  • 有据可查

  • 更人使用它,让更多的帮助可用

推荐答案

根据你的描述,LLVM完全符合该法案。它的主要目的是作为一个灵活的库和框架IR code的操纵。无数的优化,转换和分析通过它带有既作为一个证明和很好的例子。 IMO LLVM还回答了4点,你在你的问题列举得非常好:

According to your description, LLVM fits the bill perfectly. One of its main aims is to serve as a flexible library and framework for manipulation of IR code. The countless optimization, transformation and analysis "passes" it comes with serve both as a proof and as great examples. IMO LLVM also answers the 4 points you list in your question very well:


  • 平台无关:LLVM运行在各大平台(Linux,Mac和Windows),并且知道如何产生code为众多的CPU类型

  • 易于使用:IR和编译器后端是一个困难的领域破解,但就这样的事情LLVM是一个很好的选择,因为它是一个相对较新的项目,有据可查,有一个非常干净的code基地。

  • 有据可查:

  • 更人使用它。非常活跃的开发和使用,有一些公司已经投入巨资它(最明显的是苹果和谷歌)

这篇关于用最简单的中间格式的工作方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 05:09