酒精温度计测量范围:Semo Compiler 析码多目标编译器(国产开源) 0.3.0 来了 ARMv7、York-Town分配器等。

来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 02:12:52
析码多目标编译器是国内某开源社区发起的开源项目,三年以来先后发布了三次二进制版本,这次的0.3.0在上一版本基础上改动略小一些,主要完成了寄存器分配模块、完善了ARM汇编器等。

0.3.0 更新以下特性:

前段部分
全面支持预处理指令与宏特性。
实现了C99的变量定义、变量引用、函数定义、if-else、while、do-while,以及二元表达式等语法。

中段部分
实现了抽象语法与第0层抽象代码模块、SSA、寄存器分配器(基于YT模型)。

后段部分
实现了部分第0层抽象代码到ARMv7汇编代码转换模块、ARMv7汇编器,实现加减乘除、寻址等THUMB指令集编码。
实现了ARM-ELF动态链接器,支持多目标链接,并建立内存镜像,内存镜像可直接运行。

代码:http://semo.googlecode.com/svn/trunk/
程序:http://code.google.com/p/semo/do ... &q=#makechanges

最新更新
2011年1月29号:
1. 修正了C语言预处理模块,宏函数替换bug。
2. 修正C语言词法分析模块,预读取FUNDEF与FUNCAL时原始状态丢失问题。

2011年1月28号:
1. 更新“内部原理”文档。
2. 更新“front-para”只要针对因为输入尚未实现的语法可能引起的异常错误。

2011年1月27号:
1. 修改生命域的干涉关系判定函数判定误差问题。
2. 修改编译后的输出信息,如总时间开销、二进制编码总量、生命域分裂次数、寄存器分配器开销等。

2011年1月26号 修改mid-para以下几处 bug:
1. a = a , a1.0 = a1 无法确定生命域编号。
2. 检测LiveScopeMonitor?中的节点时,无法确定全部节点的交涉关系,需要O(N*N)。
3. 生命域分裂时,在原始LAC中操作。否则是无效的。

2011年1月25号:
1. 添加ISA_INTEGER。
2. 汇编模块词法分析解析代码时,遇到寄存器直接返回机器码。
3. 对于ISA_INTEGER等立即数不产生SSA。