3

我需要编写一个 GCC 扩展,我正在尝试使用带有 GCC 的 GCC Plugins API,但它的文档记录很差,而且很难使用,我找不到任何使用它的最新版本的示例.. .

我读到有很多其他方法可以创建 gcc 扩展,例如GCC MeltGCC python 插件,谁能告诉我它们各自的优点/缺点,这 3 种创建插件的方法之间有什么主要区别吗?

4

2 回答 2

4

我使用 C++ API 和 Python 插件编写了插件。我还没试过 MELT,所以我不能说。

我首选的方法是使用 Python。以这种方式启动和运行插件要简单得多——无需担心编译,API 文档齐全且简单,最后,从头开始构建插件非常容易(只需make)。

使用 Python 插件有两个主要缺点。

我经常遇到的缺点是它没有暴露 GCC 的所有有用部分。不过,这并不是一个大问题,而且在过去,我发现只需将所需的功能添加到 Python 插件中很简单。

另一个可能的缺点是 Python 插件可能比用 C++ 编写的插件慢。这对我来说从来都不是问题。

于 2015-04-22T18:16:23.967 回答
3

根据@Basile,使用 Melt 开发插件更容易。好处是:

1) 它可用于在 GCC 编译器处理您的文件时探索其内部表示

2) 它使用现有的 GCC 插件钩子来处理 GCC 内部中间端表示

还有很多...

于 2015-07-24T07:30:31.647 回答