摘要: 昨天為機(jī)器碼編譯程序?qū)懥藗€(gè)專用的unit test框架,今天用中間語言在這個(gè)框架上寫了個(gè)程序。程序?qū)?2個(gè)字符串連接起來,然后跟另外一個(gè)字符串進(jìn)行比較,如果相等返回true。當(dāng)然程序如果返回false了,要么就是程序有問題,要么就是編譯器有問題。當(dāng)然現(xiàn)在是測(cè)試通過了。程序如下:
閱讀全文
posted @
2009-04-15 21:15 陳梓瀚(vczh) 閱讀(2149) |
評(píng)論 (1) |
編輯 收藏
摘要: 這次工作將一個(gè)中間語言的程序翻譯成了匯編,然后再翻譯成機(jī)器碼。這一次產(chǎn)生的匯編比較爛,到時(shí)候做個(gè)窺孔優(yōu)化稍微處理一下就好了。等上層的設(shè)施搞定之后再將這個(gè)中間語言到匯編的程序重寫。下面是一個(gè)菲薄納氣數(shù)列的例子。
閱讀全文
posted @
2009-04-14 00:11 陳梓瀚(vczh) 閱讀(2762) |
評(píng)論 (9) |
編輯 收藏
摘要: 大約兩個(gè)多星期沒做JIT了,經(jīng)過之前些其他代碼消遣,現(xiàn)在還是繼續(xù)做下去的好。目前的成果是完成了匯編數(shù)據(jù)結(jié)構(gòu)、完成了匯編到機(jī)器碼的轉(zhuǎn)換器、知道了成員對(duì)齊、調(diào)用轉(zhuǎn)換的約定、知道如何實(shí)現(xiàn)異常處理以及完成了中間指令的數(shù)據(jù)結(jié)構(gòu)和檢查。現(xiàn)在需要做的事中間指令到匯編的轉(zhuǎn)換程序。
閱讀全文
posted @
2009-04-10 23:30 陳梓瀚(vczh) 閱讀(1944) |
評(píng)論 (1) |
編輯 收藏
摘要: 今天閑得無聊,早上起來習(xí)慣性瞟一瞟boost,突然看中了它的MPL庫,所以自己實(shí)現(xiàn)了一個(gè)子集消磨時(shí)間。
已經(jīng)實(shí)現(xiàn)的功能有:整數(shù)運(yùn)算、閉包、列表處理等。我用了自己的unit test框架,通過寫一個(gè)函數(shù)輸出一個(gè)屬于自己的MPL類型的字符串(譬如List
,List,Empty>>產(chǎn)生"[0 , 1]"),然后用自己寫的字符串比較,可以發(fā)現(xiàn)庫里面是否有錯(cuò)。
一下有兩份代碼,第一份是使用,第二份是自己的MPL的源代碼: 閱讀全文
posted @
2009-04-08 05:17 陳梓瀚(vczh) 閱讀(3766) |
評(píng)論 (13) |
編輯 收藏
摘要:
對(duì)上一次的分析器進(jìn)行重構(gòu)之后,Combinator Parser加入了對(duì)字符串、詞法分析器以及正則表達(dá)式的新支持。功能上則添加了對(duì)于歧義和非歧義的控制。
源代碼與Demo下載內(nèi)詳
閱讀全文
posted @
2009-04-06 06:18 陳梓瀚(vczh) 閱讀(10253) |
評(píng)論 (34) |
編輯 收藏
尋找軟件高手一起開發(fā)產(chǎn)品
我們?cè)趯ふ壹夹g(shù)牛人。
我們要做的項(xiàng)目,具有相當(dāng)?shù)募夹g(shù)難度。換句話說,不難的活,我們不干。所以,對(duì)于一般軟件人才,這些活顯得過于富有挑戰(zhàn)性。平心而論,人沒有必要活得不必要的累,所以,對(duì)于一般軟件人才,最好不要試。當(dāng)然,高手一定要試。
我們提供富有競(jìng)爭(zhēng)力的薪水和足夠的平臺(tái)施展您的才華。我們的工作方式很靈活,可兼職可全職,以您的時(shí)間而定。當(dāng)然,這里的兼職絕不是隨意,跟全職一樣,也有嚴(yán)格的工作計(jì)劃。
目前我們的團(tuán)隊(duì)剛剛起步,成員來自于微軟,oracle,autodesk等著名外企,工作經(jīng)驗(yàn)都在5年以上,擁有至少7年的開發(fā)經(jīng)驗(yàn),同時(shí)我們也是一支很年輕
的團(tuán)隊(duì),平均年齡為27歲。以下是一些基本要求:
1) 對(duì)自己的技術(shù)有足夠的自信,有扎實(shí)的功底。
2)基本的英文讀寫能力(聽說不做要求)。
3)有良好的團(tuán)隊(duì)合作能力。
4)有責(zé)任心,想撈一票就跑的不適合。
5)年齡小于35歲。
6)目前在北京。
歡迎有興趣者把簡(jiǎn)歷發(fā)往careers#banckle.com(請(qǐng)把#換成@),對(duì)符合條件者我們會(huì)盡快與您聯(lián)系。
posted @
2009-04-05 05:00 陳梓瀚(vczh) 閱讀(1595) |
評(píng)論 (10) |
編輯 收藏
摘要: 這個(gè)分析器包含了四個(gè)文件:
VL_Data_Basic.h(使用了其中的智能指針VL_AutoPtr和一些類型重命名)
VL_CpData.h(數(shù)據(jù)結(jié)構(gòu))
VL_CpKernel.h/cpp(詞法分析器和語法分析器)
這個(gè)東西供給熟悉編譯原理(至少熟悉BNF notation)的人互相學(xué)習(xí)交流。
內(nèi)附代碼下載以及使用的例子。 閱讀全文
posted @
2009-04-03 01:21 陳梓瀚(vczh) 閱讀(6346) |
評(píng)論 (9) |
編輯 收藏
摘要:
華南理工大學(xué)微軟俱樂部程序設(shè)計(jì)語言特別興趣小組——手把手教你寫腳本引擎系列(一)
陳梓瀚
PPT內(nèi)容:
1、簡(jiǎn)單指令集的設(shè)計(jì)方法(支持分支、循環(huán)、函數(shù)、遞歸)。
2、編譯控制流程(分支和循環(huán))的一般模式。
3、函數(shù)調(diào)用的詳細(xì)過程。
4、5個(gè)示例程序。
Demo內(nèi)容:
PPT中5個(gè)示例程序的運(yùn)行過程(動(dòng)畫),左邊是單步,右邊是堆棧內(nèi)容。
含下載,內(nèi)詳。 閱讀全文
posted @
2009-03-28 01:43 陳梓瀚(vczh) 閱讀(10677) |
評(píng)論 (11) |
編輯 收藏
摘要: 經(jīng)過一個(gè)多星期的推敲,終于將中間語言定稿。為了屏蔽寄存器、堆棧、數(shù)值比較邏輯、跳轉(zhuǎn)、變量參數(shù)存放位置等,設(shè)計(jì)了以下中間語言。 閱讀全文
posted @
2009-03-19 20:49 陳梓瀚(vczh) 閱讀(2232) |
評(píng)論 (1) |
編輯 收藏
摘要: 中間指令主要用于解決以下問題:
1、不同大小的整數(shù)、浮點(diǎn)、指針的互相轉(zhuǎn)換和計(jì)算
2、寄存器分配
3、跳轉(zhuǎn)
4、調(diào)用轉(zhuǎn)換(stdcall、cdecl、fastcall)
5、臨時(shí)存儲(chǔ)單位(變量等)
因此指令在設(shè)計(jì)的時(shí)候需要
1、不讓用戶知道東西是放在哪里的(沒有堆棧給你push和pop,而且變量在物理上不一定存在,譬如說可能在寄存器里面,或者直接優(yōu)化沒了等等)
2、不讓用戶接觸到各種標(biāo)志位(譬如說那個(gè)惡心的浮點(diǎn)比較)
3、不讓用戶接觸到stdcall、cdecl和fastcall的區(qū)別(因此call指令需要將所有參數(shù)一起寫入,而不是在之前push)
4、不讓用戶接觸不同類型數(shù)據(jù)的轉(zhuǎn)換過程(全自動(dòng)處理,就算你int32=fp32+int16,也是一條指令。)
5、為了保持靈活性,聲明變量的時(shí)候只指出其大小,在使用變量的每一處地方標(biāo)記類型(因此可以在不同的地方標(biāo)記為不同的,可以救急)
閱讀全文
posted @
2009-03-10 21:05 陳梓瀚(vczh) 閱讀(1836) |
評(píng)論 (0) |
編輯 收藏