分享

Semo Compiler 析码多目标编译器(国产开源) 0.3.0 来了 ARMv7、York-Town分配器等。

 敦行斋 2011-06-21
析码多目标编译器是国内某开源社区发起的开源项目,三年以来先后发布了三次二进制版本,这次的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。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多