- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 一个国产编译器的寄存器分配试验
到目前为止,析码编译器的寄存器分配模块基本上已经完成了。核心基于“York-Town”模型,其将复杂的生命域特征建模为直观的无向图染色问题,“York-Town”的核心是通过一系列过程分析中间代码,从中将其生命域之间的关系抽象为一个无向图图,然后对该图染色,从而确定寄存器的分配策略。以下是简单的实验,先来看一个列子,下图由析码编译器在解析中间代码过程中实时生成。我们来看一下“YorkTown”分配器的工作情况,图中节点表示生命域,节点之间的边表示两个生命域相交。节点中间有两个数字,从上到下依次是:邻接点个数
2011-01-24 20:36:00
1137
原创 国内开源项目“C语言正则表达式”——特性、使用方法、正则模式等介绍。
就REEC 1.2.0版本特性跟功能部分虽然已经在突壳的官方文档中做了介绍,但是细节部分可能讲得不够详细乃至进行REEC二次开发或是使用上有诸多不便之处,为了能让大家更好的使用REEC做开发,或基于REEC做一些相关研究,在这里我们从其整体架构到正则模式做一下详细介绍,但并不涉及REEC实现原理。 正则表达式的历史比C语言更来的久远,但其正式被纳入到编程语言标准中应该是在后C++时代,如JAVA、PHP、Perl等等都有各自的一套正则标准,虽然实现的形式是多样化的,但是他们解决的根本问题无非是“模式匹配”。
2010-07-30 21:36:00
1931
原创 《突壳开源》编译小组的招募试题
职责:负责Smart C()mpiler前段的开发与维护。试题:(一):编译器的兼容性有两方面,前段兼容性是指编译器所能支持的语言数目。后段兼容性是指所能支持的目标机数目。如何可以提高编译器的兼容性?(二):传统的两端式架构将编译器分为前端后端两大模块组,阐述一下这种架构的缺点。(三):请用形式化语言描述一下编程语言的共同点。(四):请用描述一下目标机器的共同点。(五):如果让你实现一个C语言编译器,除支持完整的C99标准之外,允许C于JAVA混合编程,你会如何实现?(六):词法分析器基于自动机理论由若干组
2010-07-20 21:07:00
812
原创 C语言正则表达式引擎 REEC 1.2.0 版本,适用于MTK等嵌入式平台。
项目:http://www.tok.cc/?p=5项目:http://code.google.com/p/reec/ 出于C语言标准对正则表达式支持的欠缺,市面上流行着一些第三方开发的正则式引擎,其特点是要么是非复杂,代码相当臃肿,不适用于资源紧张的系统环境。要么在功能上的不足,远远满足不了实际需求,等等诸多问题使得没有一个可以在嵌入式平台完美运行的正则引擎。REEC是整合了
2010-05-12 22:20:00
1254
原创 国内一个开源小组的C语言编译器项目
项目地址:http://www.tok.cc/ 三段式架构:从编译器运行期间各模块的任务特点来看,由传统观点“前端”跟“后端”把架构分为两大模组以维护角度来说,如此划分来实现存在一些问题,主要体现在改变源语言或目标机器的工作量之上。在任何编译体系中有一个共同特性,越靠前的模块跟具体语言的关系越紧密,越往后的模块则跟具体机器的关系越紧密,而位于体系结构中间的模块相对来说是独立的,如果能把
2009-06-04 22:53:00
3531
3
原创 C语言环境下正则表达式支持库
该库中集成了36种基本模式,通过这36种基本模拟可以组合出任意复杂的模式来,代码例子如下: //引擎返回 “http://www.gtkings.com”TOKRegularExpressionEngineRun("||","TOKRegularExpressionhttp//www.gtkings.com">http://)^1>||","Txpressionhttp://
2009-05-30 10:08:00
1020
原创 【视频压缩二】视频编解码器的基本方法
编码方法跟图像的描述模型有关。如果采用“一幅图像由许多像素构成”的描述模型,编解码器的输入参数是每个像素的亮度和色度的幅度值。对这些参数的压缩编码称为基于波形的编码。如果采用一个分量有几个物体构成的描述模型,编解码器的输入参数是各个物体的形状、纹理和运动,对这些参数进行压缩编码称为基于内容的编码。 根据采用的描述模型,视频编码分为两大类:基于波形和基于内容的编码。它们利用不同的编码方法,得
2009-05-11 19:57:00
1181
原创 帧内预测编码
一幅图像中的像素之间具有较强的相关性,两像素距离越近相关性越高,通俗的讲,即两个像素的值越接近。换句话说,两个相邻像素的值发生突变的概率极小。可以利用这种像素间的相关性进行压缩编码,例如当前像素X可用前一个像素a或b或c或三者的线性加权来预测。这些 a、b、c 被称为预测像素。 编码器通过下式压缩像素X 压缩:X-a 解码器通过上式的逆运算恢复原像素X 解压:(X-a)+a
2009-05-11 16:53:00
2040
原创 运动估计跟补偿
残差 = 运动补偿(运动估计(当前帧,参考帧),当前帧,参考帧) 参数:当前帧,参考帧返回:求出参考帧对应块在当前帧中的矢量运动估计(frame1,frame2); 参数:矢量,当前帧,参考帧返回:用当前帧或者参考帧由矢量指定的块相减得出残差块运动补偿(v,frame1,frame2)
2009-05-10 21:37:00
1273
原创 【司马编译器】“命名空间”分析
司马中实现了一种叫作“线锁”的结构,线锁把结构体的定义头链在一起,逻辑上可以把它看作是树形结构。这种结构可以把诸如结构体变量属性的引用简化为一个线性遍历过程。当分析某个结构体变量语义时可以在线锁中搜索,上例中的结构体“定义头”a是线锁父节点,其余b、c、d、e、d都它在的线锁上,该规则可以推广到任意满足这个特性的结构体定义头上,例如上例的定义头c是a的递归,它的基本性质跟a相同
2009-05-02 16:19:00
736
原创 【开源】司马编译器结构
编译器前段部分:源代码经过预处理模块处理之后,剔除了一些空格,跟注释,把源代码重新组织给了词法分析器,词法分析器处理后形成了记号流,记号(终结符、非终结符)被存放到了词法表中。语法分析器根据词法表中的终结符、非终结符开始语法分析。需要注意的是,在该体系结构中,词法分析器、语法分析器、语义分析器之间没有接口存在。这样做是有好处的,例如当改动语法分析器的时候,影响不到词法分析器,反之亦然,提高了维
2009-02-22 17:30:00
1436
原创 【开源】司马编译器 Smart Compiler 符号表
整个编译过程,编译器需要不断地保存并修改从源代码中获取的各种数据,符号表的重要性越是接近后端越明显。在不同的编译器实例中,开始使用符号表的“时机”都不相同,选择什么时机去使用符号表取决于编译器结构的设计原则,司马编译器从前段到后端的设计遵循了一个原则,那就是“在保证把维护性能最大化的前提下提高时间性能”,为了达到这个要求,尽可能地推迟了调用符号表API的时机,从语义分析阶段开始调用,这种安排可以让
2009-02-18 21:56:00
1135
原创 【开源】司马编译器 Smart Compiler
输入:int gtkings(int a,int a2){}int main() { gtkings(gtkings(1,2),gtkings(1)) + 1; int a = 0x; int aa}说明:该代码中有一个词法错误,一个语法错误,跟一个语义错误。编译器输出结果如下图。"0x” 十六进制数写法错误(词法错误)。"int aa” 变量定义缺少分号(语法错误
2009-02-05 01:02:00
1422
原创 《holon 教程四,AP 层》
教程进行到这里已经到了尾声,我们在这里只关注项目开发中最重要的部分,一些实现的细节问题我们就不说了,理解了这四本教程的内容后开始做一个项目应该没问题了。虽然不想牵扯太多实现上面的细节,但是因为“AP层”的特点,因而本文掺杂的实现内容要比前几本教程多一点。为什么这么不喜欢跟“实现”牵连太多?依小弟自己的习惯经验很不喜欢上来就看实现看代码,尤其是对于一个未知的概念,很难从代码中理解其本质。 “
2008-10-11 11:45:00
2110
原创 《holon 教程三,控件》
前头语:界面的相关开发,无非是定义控制件之间来往的路径,Windows系统以及很多系统的界面都是基于“消息”运作的。只要弄清楚控件之间是怎么样传递消息的就便可以开始做东西了。Holon 是专门针对“事务性数据系统”开发的一套语言,其所使用的框架是MFC的再封装,因此它的很多机制跟mfc完全相同,或者干脆说,它就是穿了马甲的mfc。接下来让我们先了解一下“消息”是怎么样传递的。Message T
2008-10-11 10:34:00
1994
原创 《holon 教程二,它的体系结构》
holon 开发的系统由四部分组成,从上到下依次是,“启动器”,“界面”,“AP层”,“DB”。启动器是一个EXE,它会调用“界面”,界面被编译成了若干个“dll文件”。做项目一般都集中在“界面”跟“AP层上面”。AP层由DO跟BO构成(后续会有介绍),他们负责与最底层的“DB”连接。“SQL文”都放在AP层中。图中绿线为数据库返回的结果。
2008-10-11 01:45:00
1291
原创 《holon 教程一,什么是holon?》
holon是NEC专门针对事务性数据库系统开发设计的一套语言,它的底层是在微软基础类库的基础上进行的再封装,虽然它有自己的一套语法体系,但最终还是映射成了C++代码,并使用其编译器。很多人刚接触holon的时候心头或许都会有这么一个疑问,“为什么不直接用MFC?”记得小弟第一次接触的时候问过几个做了项目很久的同事,有的说是因为比较接近机器底层,有的说因为没有指针比较安全,众说纷纭。holon的优势
2008-10-11 01:09:00
3373
原创 深度优先遍历在编译器中的妙用
关于“司马”文档我们先放一下,来看看下面这个算法,AHO 教给了我们那么多好东西,可我笨的不能理解其思想所在,今天早上上班路上总算有了所收获,拿出来跟大家分享一下。 Aho 提到了这个算法,小弟之前的理解是,自己做一个存储结构,像数据结构书中那样用这个算法遍历它,这个想法很愚蠢,它并非普通图的“深度优先便利”,书上说到哪里你想到哪里,照搬而不能灵活,这成了什么?这样的看书是不行的
2008-10-11 00:29:00
785
C语言环境正则表达式支持库
2009-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人