- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 编译器后端寄存器分配算法SSA(静态单一赋值法)
1 SSA是什么?SSA即静态单赋值,Static Single-Assignment,这是一种中间表示形式。 之所以称之为单赋值,是因为每个名字在SSA中仅被赋值一次.如下图中的一段程序的控制流图。从这张图中可以看到,最后一个基本块中y值的定义或者来自左侧的分支,或者来自右侧的分支。SSA_example1.1将每个赋值语句中的变量赋予一个唯一的名称后
2013-07-08 22:01:38
5230
1
转载 编译器后端,寄存器分配算法
寄存器分配,是通过将程序变量尽可能地分配到寄存器,从而提高程序执行速度的一种方法。寄存器是编译器优化中最为重要的问题之一(好的寄存器分配能够提高程序执行速度超过250%);也是编译器理论中最热点的研究领域之一(研究界已经提出来大量寄存器分配相关的算法)。1. 图着色(graph coloring)方法是解决寄存器分配问题最常用的方法。 利用相交图(interferenc
2013-07-08 22:00:00
3615
转载 窥孔优化
1 定义:一种很局部的优化方式,编译器仅仅在一个基本块或者多个基本块中,针对已经生成的代码,结合CPU自己指令的特点,过一些认为可能带来性能提升的转换规则,或者通过整体的分析,通过指令转换,提升代码性能。这个窥孔,你可以认为是一个滑动窗口,编译器在实施窥孔优化时,就仅仅分析这个窗口内的指令。每次转换之后,可能还会暴露相邻窗口之间的某些优化机会,所以可以多次调用窥孔优
2013-07-08 21:57:53
1576
原创 中间代码生成中的优化
1) 消除仅初始化一次的临时变量:遍历所有中间变量,对于仅仅在t := x时进行过一次赋值的临时变量t置标记,对于有标记的临时变量,遍历中间变量,将t全部替换为x,并且删除原有的t := x,如return 0;会产生中间代码t1 := #0, return t1经过优化后变为return #0 2) 常量计算:遍历所有中间变量,对于x := y +/-/*// z的中间
2013-07-08 21:56:08
1506
转载 分享链接
对于实验一二都很有用的资料链接:http://gps.nju.edu.cn:88/mediawiki/index.php/Bison_Quick_Tutorial
2013-07-08 21:52:05
474
原创 关于文c--法定义的分析
High-Level Definitions 这一部分包含了C(-)*语言中所有的高层(全局变量以及函数定义)语法。 语法单元Program是初始语法单元,代表整个程序。 每一个Program可以产生一个ExtDefList,这里ExtDefList代表零个或多个ExtDef。 每一个ExtDef就代表着一个全局变量的定义、一个结构体的定义或者一个函数的
2013-07-08 21:49:08
1301
转载 Yacc介绍与使用
概念?什么是YACC?yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器).使用巴克斯范式(BNF)定义语法,能处理上下文无关文法(context-free)。出现在每个产生式左边(left-hand side:lhs)的符号是非终端符号,出现在产生式右边(right-hand side:
2013-07-08 21:42:52
1198
原创 编译原理实验初步设计
一、语言名称 我是一人团队,鉴于想要完成的语言是类c语言,所以取名为BosiC,即李博的基础C语言。二、语言可能包含设施 首先是语言的基本语法和变量定义:GrammarTokensINT → /* A sequence ofdigits without spaces */FLOAT → /*A real numberconsisting
2013-07-08 21:40:02
1312
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅