GCC 插件、GCC Melt 或 gcc Python 插件来编写 gcc 扩展
GCC Plugins, GCC Melt or gcc Python plugins to write a gcc extension
我需要编写一个 GCC 扩展,我正在尝试使用 GCC 附带的 GCC 插件 API,但它的文档很少,而且很难使用,我找不到任何使用它的最新版本的例子......
我读到有许多其他方法可以创建 gcc 扩展,例如 GCC Melt, and GCC python plugins,谁能告诉我每个方法的 benefits/drawbacks,这 3 种方法之间有什么主要区别吗创建插件?
我已经使用 C++ API 和 Python 插件编写了插件。我没试过 MELT,所以我不能说。
我的首选方法是使用 Python。以这种方式安装和 运行 插件要简单得多——无需担心编译,API 有据可查且简单,最后,插件非常容易从头开始构建(仅 make
)。
使用 Python 插件有两个主要缺点。
我最常遇到的缺点是它没有公开 GCC 的所有有用部分。不过,这并不是一个主要问题,过去我发现只需将所需的功能添加到 Python 插件即可。
另一个可能的缺点是 Python 插件可能比用 C++ 编写的插件慢。这对我来说从来都不是问题。
根据@Basile 的说法,使用 Melt 开发插件更容易。好处是:
1) 当 GCC 编译器处理您的文件时,它可用于探索 GCC 编译器的内部表示
2) 它使用现有的 GCC 插件挂钩来处理 GCC 内部中端表示
还有更多...
我需要编写一个 GCC 扩展,我正在尝试使用 GCC 附带的 GCC 插件 API,但它的文档很少,而且很难使用,我找不到任何使用它的最新版本的例子......
我读到有许多其他方法可以创建 gcc 扩展,例如 GCC Melt, and GCC python plugins,谁能告诉我每个方法的 benefits/drawbacks,这 3 种方法之间有什么主要区别吗创建插件?
我已经使用 C++ API 和 Python 插件编写了插件。我没试过 MELT,所以我不能说。
我的首选方法是使用 Python。以这种方式安装和 运行 插件要简单得多——无需担心编译,API 有据可查且简单,最后,插件非常容易从头开始构建(仅 make
)。
使用 Python 插件有两个主要缺点。
我最常遇到的缺点是它没有公开 GCC 的所有有用部分。不过,这并不是一个主要问题,过去我发现只需将所需的功能添加到 Python 插件即可。
另一个可能的缺点是 Python 插件可能比用 C++ 编写的插件慢。这对我来说从来都不是问题。
根据@Basile 的说法,使用 Melt 开发插件更容易。好处是:
1) 当 GCC 编译器处理您的文件时,它可用于探索 GCC 编译器的内部表示
2) 它使用现有的 GCC 插件挂钩来处理 GCC 内部中端表示
还有更多...