GCC:汇编指令生命周期
GCC: assembly instruction lifecycle
有没有人见过关于汇编指令如何在 GCC 中诞生和转换的描述(文章、教程)?它(它的 IR 前身,是正确的)如何在扩展过程中出现,通过 rtl passes,变得越来越特定于目标等。
非常感谢链接!
首先,大多数 GCC 优化发生在它的中间端,在 GIMPLE 中间表示上(即优化过程将 GIMPLE 转换为 GIMPLE)。只有稍后,在后端层(在 RTL 级别)才会生成汇编程序指令。
事实上,与汇编指令生命周期(几乎没有意义)相比,您最好从 GCC 内部表示(主要是 GIMPLE)的角度来思考。
您可以使用 -fdump-tree-all
(以及一些优化标志,例如 -O1
)进行编译,您可以使用 MELT 自定义 GCC(注意:我是 MELT 的主要作者) .
印度GCC resource center包含大量与GCC相关的资源。
我的 GCC MELT documentation page contains many links and slides describing GCC internals. See also this 答案。
PS。我不再从事 GCC MELT 的工作(自 2017 年以来)。这是一个不活跃的项目(绑定到旧版本的 GCC)。
有没有人见过关于汇编指令如何在 GCC 中诞生和转换的描述(文章、教程)?它(它的 IR 前身,是正确的)如何在扩展过程中出现,通过 rtl passes,变得越来越特定于目标等。
非常感谢链接!
首先,大多数 GCC 优化发生在它的中间端,在 GIMPLE 中间表示上(即优化过程将 GIMPLE 转换为 GIMPLE)。只有稍后,在后端层(在 RTL 级别)才会生成汇编程序指令。
事实上,与汇编指令生命周期(几乎没有意义)相比,您最好从 GCC 内部表示(主要是 GIMPLE)的角度来思考。
您可以使用 -fdump-tree-all
(以及一些优化标志,例如 -O1
)进行编译,您可以使用 MELT 自定义 GCC(注意:我是 MELT 的主要作者) .
印度GCC resource center包含大量与GCC相关的资源。
我的 GCC MELT documentation page contains many links and slides describing GCC internals. See also this 答案。
PS。我不再从事 GCC MELT 的工作(自 2017 年以来)。这是一个不活跃的项目(绑定到旧版本的 GCC)。