GENERIC,GIMPLE和RTL

来源:互联网 发布:js开头的白色车牌 编辑:程序博客网 时间:2024/06/05 16:14


在编译过程中,GCC使用了三种主要的中间语言来表示程序:GENERIC,GIMPLE和RTL。GENERIC是一种由每个前端生成的语言无关的表示。它用来作为解析器和优化器之间的接口。GENERIC是一种通用表示,能够表示GCC支持的所有语言程序。

GIMPLE和RTL用于优化程序。GIMPLE用于目标和语言无关的优化(例如,内联,常数传播,尾调用消除,冗余消除等)。与GENERIC比较相似,GIMPLE是一种语言无关的树型表示。不过,与GENERIC不同的是GIMPLE的语法有更多的限制:表达式不包含3个以上的操作数(函数调用除外),它没有控制流程结构,并且具有副作用的表达式只允许出现在赋值语句的右端。详情参见描述GENERIC和GIMPLE的章节。

这章描述在GIMPLE优化器(也被称为“树优化器”或者“中端”)中使用的数据结构和函数。特别是侧重于所有的宏,数据结构,函数和实现GIMPLE优化过程所需要的编程架构。

  • GENERIC: 一种高层次的语言无关的表示。
  • GIMPLE: 一种低层次的树型表示。
  • 注解: 语句和变量的属性。
  • 语句操作数: 由GIMPLE语句所引用的变量。
  • SSA: 静态单赋值表示。
  • 别名分析: 加载和存储的别名表示。

引用自:http://www.blogbus.com/public/tb.php/5671217/67098498/ff56e02b0367cb79cc66bfbcb9627a27

0 0
原创粉丝点击