随笔-341  评论-2670  文章-0  trackbacks-0
 
     摘要: 昨天为机器码编译程序写了个专用的unit test框架,今天用中间语言在这个框架上写了个程序。程序将12个字符串连接起来,然后跟另外一个字符串进行比较,如果相等返回true。当然程序如果返回false了,要么就是程序有问题,要么就是编译器有问题。当然现在是测试通过了。程序如下:  阅读全文
posted @ 2009-04-15 21:15 陈梓瀚(vczh) 阅读(2120) | 评论 (1)编辑 收藏
     摘要: 这次工作将一个中间语言的程序翻译成了汇编,然后再翻译成机器码。这一次产生的汇编比较烂,到时候做个窥孔优化稍微处理一下就好了。等上层的设施搞定之后再将这个中间语言到汇编的程序重写。下面是一个菲薄纳气数列的例子。  阅读全文
posted @ 2009-04-14 00:11 陈梓瀚(vczh) 阅读(2705) | 评论 (9)编辑 收藏
     摘要: 大约两个多星期没做JIT了,经过之前些其他代码消遣,现在还是继续做下去的好。目前的成果是完成了汇编数据结构、完成了汇编到机器码的转换器、知道了成员对齐、调用转换的约定、知道如何实现异常处理以及完成了中间指令的数据结构和检查。现在需要做的事中间指令到汇编的转换程序。  阅读全文
posted @ 2009-04-10 23:30 陈梓瀚(vczh) 阅读(1906) | 评论 (1)编辑 收藏
     摘要: 今天闲得无聊,早上起来习惯性瞟一瞟boost,突然看中了它的MPL库,所以自己实现了一个子集消磨时间。

已经实现的功能有:整数运算、闭包、列表处理等。我用了自己的unit test框架,通过写一个函数输出一个属于自己的MPL类型的字符串(譬如List,List,Empty>>产生"[0 , 1]"),然后用自己写的字符串比较,可以发现库里面是否有错。

一下有两份代码,第一份是使用,第二份是自己的MPL的源代码:  阅读全文
posted @ 2009-04-08 05:17 陈梓瀚(vczh) 阅读(3705) | 评论 (13)编辑 收藏
     摘要:
对上一次的分析器进行重构之后,Combinator Parser加入了对字符串、词法分析器以及正则表达式的新支持。功能上则添加了对于歧义和非歧义的控制。

源代码与Demo下载内详
  阅读全文
posted @ 2009-04-06 06:18 陈梓瀚(vczh) 阅读(10165) | 评论 (34)编辑 收藏

寻找软件高手一起开发产品

我们在寻找技术牛人。

我们要做的项目,具有相当的技术难度。换句话说,不难的活,我们不干。所以,对于一般软件人才,这些活显得过于富有挑战性。平心而论,人没有必要活得不必要的累,所以,对于一般软件人才,最好不要试。当然,高手一定要试。

我们提供富有竞争力的薪水和足够的平台施展您的才华。我们的工作方式很灵活,可兼职可全职,以您的时间而定。当然,这里的兼职绝不是随意,跟全职一样,也有严格的工作计划。

目前我们的团队刚刚起步,成员来自于微软,oracle,autodesk等著名外企,工作经验都在5年以上,拥有至少7年的开发经验,同时我们也是一支很年轻
的团队,平均年龄为27岁。以下是一些基本要求:
1) 对自己的技术有足够的自信,有扎实的功底。
2)基本的英文读写能力(听说不做要求)。
3)有良好的团队合作能力。
4)有责任心,想捞一票就跑的不适合。
5)年龄小于35岁。
6)目前在北京。

欢迎有兴趣者把简历发往careers#banckle.com(请把#换成@),对符合条件者我们会尽快与您联系。

posted @ 2009-04-05 05:00 陈梓瀚(vczh) 阅读(1548) | 评论 (10)编辑 收藏
     摘要: 这个分析器包含了四个文件:
VL_Data_Basic.h(使用了其中的智能指针VL_AutoPtr和一些类型重命名)
VL_CpData.h(数据结构)
VL_CpKernel.h/cpp(词法分析器和语法分析器)

这个东西供给熟悉编译原理(至少熟悉BNF notation)的人互相学习交流。
内附代码下载以及使用的例子。  阅读全文
posted @ 2009-04-03 01:21 陈梓瀚(vczh) 阅读(6292) | 评论 (9)编辑 收藏
     摘要:
华南理工大学微软俱乐部程序设计语言特别兴趣小组——手把手教你写脚本引擎系列(一)
陈梓瀚

PPT内容:
1、简单指令集的设计方法(支持分支、循环、函数、递归)。
2、编译控制流程(分支和循环)的一般模式。
3、函数调用的详细过程。
4、5个示例程序。

Demo内容:
PPT中5个示例程序的运行过程(动画),左边是单步,右边是堆栈内容。

含下载,内详。  阅读全文
posted @ 2009-03-28 01:43 陈梓瀚(vczh) 阅读(10596) | 评论 (11)编辑 收藏
     摘要: 经过一个多星期的推敲,终于将中间语言定稿。为了屏蔽寄存器、堆栈、数值比较逻辑、跳转、变量参数存放位置等,设计了以下中间语言。  阅读全文
posted @ 2009-03-19 20:49 陈梓瀚(vczh) 阅读(2191) | 评论 (1)编辑 收藏
     摘要: 中间指令主要用于解决以下问题:
1、不同大小的整数、浮点、指针的互相转换和计算
2、寄存器分配
3、跳转
4、调用转换(stdcall、cdecl、fastcall)
5、临时存储单位(变量等)

因此指令在设计的时候需要
1、不让用户知道东西是放在哪里的(没有堆栈给你push和pop,而且变量在物理上不一定存在,譬如说可能在寄存器里面,或者直接优化没了等等)
2、不让用户接触到各种标志位(譬如说那个恶心的浮点比较)
3、不让用户接触到stdcall、cdecl和fastcall的区别(因此call指令需要将所有参数一起写入,而不是在之前push)
4、不让用户接触不同类型数据的转换过程(全自动处理,就算你int32=fp32+int16,也是一条指令。)
5、为了保持灵活性,声明变量的时候只指出其大小,在使用变量的每一处地方标记类型(因此可以在不同的地方标记为不同的,可以救急)
  阅读全文
posted @ 2009-03-10 21:05 陈梓瀚(vczh) 阅读(1800) | 评论 (0)编辑 收藏
仅列出标题
共35页: First 17 18 19 20 21 22 23 24 25 Last