青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
JIT
使用JIT技術(shù)的腳本引擎
【源碼下載】JIT腳本引擎:CMinus 0.1版開(kāi)放下載      摘要: 說(shuō)明:CMinus是一個(gè)讀入修改過(guò)語(yǔ)法的C源程序,然后編譯成x86指令集寫(xiě)入內(nèi)存,最后用__stdcall調(diào)用約定跟C++互相交流的腳本引擎。
目標(biāo):CMinus的定位是中間語(yǔ)言,用于將其他語(yǔ)言編譯到CMinus上,享受本地指令帶來(lái)的好處。
進(jìn)度:完成所有功能,但是由于指令集生成的算法不好,打算修改。
下載:【內(nèi)詳】。  閱讀全文
posted @ 2009-05-22 00:32 陳梓瀚(vczh) 閱讀(9985) | 評(píng)論 (24)  編輯
JIT腳本引擎:CMinus編譯冒泡排序程序      摘要: 雖然CMinus到中間指令的代碼是精心控制的,但是中間指令到x86的代碼卻是很隨意寫(xiě)出來(lái)的。現(xiàn)在看來(lái)用窺孔優(yōu)化只是一種治標(biāo)不治本的方法。打算在CMinus整個(gè)都完成了之后,將中間指令到x86的代碼生成那部分重寫(xiě),使用一種廣為人知的寄存器分配算法來(lái)做。下面是冒泡排序的程序:  閱讀全文
posted @ 2009-05-19 16:51 陳梓瀚(vczh) 閱讀(3012) | 評(píng)論 (3)  編輯
JIT腳本引擎:第一個(gè)CMinus程序運(yùn)行成功      摘要: 目前其實(shí)只能編譯單目運(yùn)算符和return語(yǔ)句,主要是為了看看整個(gè)大框架有沒(méi)有錯(cuò)誤。如果沒(méi)有發(fā)現(xiàn)錯(cuò)誤的話,其他種類的表達(dá)式和語(yǔ)句的代碼生成很容易加上去。下面是一個(gè)CMinus程序的例子和編譯結(jié)果(匯編):  閱讀全文
posted @ 2009-05-17 23:00 陳梓瀚(vczh) 閱讀(2624) | 評(píng)論 (1)  編輯
JIT腳本引擎:基本完成CMinus的語(yǔ)義分析      摘要: 整整寫(xiě)了一天,終于基本寫(xiě)完了CMinus的語(yǔ)義分析的代碼,只剩下一個(gè)檢查struct是否可以計(jì)算出長(zhǎng)度的問(wèn)題(環(huán)引用造成的)。下面貼出語(yǔ)義分析的結(jié)果,從結(jié)果中可以看出符號(hào)表的結(jié)構(gòu)以及構(gòu)造方法:  閱讀全文
posted @ 2009-05-06 08:13 陳梓瀚(vczh) 閱讀(3068) | 評(píng)論 (4)  編輯
JIT腳本引擎:CMinus大部分語(yǔ)法測(cè)試通過(guò)      摘要: 今天寫(xiě)了一些CMinus程序供語(yǔ)法分析器分析,然后程序從語(yǔ)法樹(shù)重新生成格式化后的代碼,兩邊比較檢查優(yōu)先級(jí)什么的是否正確處理。下面是CMinus寫(xiě)的冒泡排序、菲薄納氣數(shù)列、鏈表操作函數(shù)以及其他程序:  閱讀全文
posted @ 2009-05-04 19:44 陳梓瀚(vczh) 閱讀(1998) | 評(píng)論 (1)  編輯
JIT腳本引擎:實(shí)現(xiàn)CMinus語(yǔ)法分析器      摘要: 這一次的語(yǔ)法分析器,我使用Vczh Combinator Parser,按照文法的定義,將字符串轉(zhuǎn)換成了語(yǔ)法樹(shù)。Vczh Combinator Parser構(gòu)造較大規(guī)模的編譯器的時(shí)候還是較為吃力,主要原因出在Visual C++竟然限制一個(gè)類型全名不能超過(guò)某個(gè)長(zhǎng)度T_T……下面是代碼:  閱讀全文
posted @ 2009-05-03 19:25 陳梓瀚(vczh) 閱讀(2881) | 評(píng)論 (11)  編輯
JIT腳本引擎:C Minus語(yǔ)言語(yǔ)法樹(shù)定型      摘要: 今天照著C Minus的語(yǔ)法(略有修改)設(shè)計(jì)出了C Minus的語(yǔ)法樹(shù)。語(yǔ)法樹(shù)的設(shè)計(jì)盡量讓生成語(yǔ)法樹(shù)的代碼易于編寫(xiě)。每一個(gè)結(jié)構(gòu)的意義十分明確,而且結(jié)構(gòu)與結(jié)構(gòu)之間不需要有相互聯(lián)系。下面是語(yǔ)法樹(shù)的代碼:  閱讀全文
posted @ 2009-04-24 00:58 陳梓瀚(vczh) 閱讀(3104) | 評(píng)論 (5)  編輯
JIT腳本引擎:開(kāi)始做第一門(mén)編譯成機(jī)器碼的腳本引擎      摘要: 把中間指令都搞定了之后,得開(kāi)始做一門(mén)JIT的腳本引擎了。但是這門(mén)腳本引擎不是用來(lái)寫(xiě)的,而是用來(lái)給更高級(jí)的語(yǔ)言編譯的。這是什么意思呢?雖然我現(xiàn)在寫(xiě)了個(gè)語(yǔ)法分析器,提供了語(yǔ)法樹(shù),但是我的目的是讓我以后設(shè)計(jì)的更高級(jí)的語(yǔ)言可以編譯成這門(mén)相對(duì)底層的語(yǔ)言,而不是直接編譯成中間指令。這樣很多事情都會(huì)好做很多。

這一門(mén)語(yǔ)言主要模仿C,提供指針、結(jié)構(gòu)、數(shù)組、基本類型和函數(shù)指針。還有extern函數(shù)做外部鏈接用。因?yàn)榫幾g成機(jī)器碼,所以可以直接把一個(gè)函數(shù)指針丟進(jìn)我的腳本引擎,就可以這么用了。而且我的腳本里面的函數(shù)也可以直接作為一個(gè)函數(shù)指針提供出來(lái)。復(fù)合類型組要勇于跟C++交互。在C++與腳本里面聲明同樣的struct,不需要做額外工作,就可以互相使用了。
  閱讀全文
posted @ 2009-04-18 00:17 陳梓瀚(vczh) 閱讀(3193) | 評(píng)論 (7)  編輯
JIT腳本引擎:完成20個(gè)浮點(diǎn)函數(shù)      摘要:
FPU寫(xiě)起來(lái)還真是囧啊,下面20個(gè)函數(shù)實(shí)現(xiàn)到想死……
Sin,Cos,Tan,Cot,Sec,Csc,ASin,ACos,ATan,ACot,ASec,ACsc,Sqrt,Exp,Ln,Abs,Round,Trunc,Ceil,Floor
下面是這20個(gè)函數(shù)的匯編代碼,其中Exp更是登峰造極……  閱讀全文
posted @ 2009-04-16 05:39 陳梓瀚(vczh) 閱讀(4951) | 評(píng)論 (3)  編輯
JIT腳本引擎:測(cè)試除特殊浮點(diǎn)函數(shù)外的所有指令通過(guò)      摘要: 昨天為機(jī)器碼編譯程序?qū)懥藗€(gè)專用的unit test框架,今天用中間語(yǔ)言在這個(gè)框架上寫(xiě)了個(gè)程序。程序?qū)?2個(gè)字符串連接起來(lái),然后跟另外一個(gè)字符串進(jìn)行比較,如果相等返回true。當(dāng)然程序如果返回false了,要么就是程序有問(wèn)題,要么就是編譯器有問(wèn)題。當(dāng)然現(xiàn)在是測(cè)試通過(guò)了。程序如下:  閱讀全文
posted @ 2009-04-15 21:15 陳梓瀚(vczh) 閱讀(2149) | 評(píng)論 (1)  編輯
JIT腳本引擎:成功將第一個(gè)腳本編譯成機(jī)器碼      摘要: 這次工作將一個(gè)中間語(yǔ)言的程序翻譯成了匯編,然后再翻譯成機(jī)器碼。這一次產(chǎn)生的匯編比較爛,到時(shí)候做個(gè)窺孔優(yōu)化稍微處理一下就好了。等上層的設(shè)施搞定之后再將這個(gè)中間語(yǔ)言到匯編的程序重寫(xiě)。下面是一個(gè)菲薄納氣數(shù)列的例子。  閱讀全文
posted @ 2009-04-14 00:11 陳梓瀚(vczh) 閱讀(2762) | 評(píng)論 (9)  編輯
JIT腳本引擎:繼續(xù)工作      摘要: 大約兩個(gè)多星期沒(méi)做JIT了,經(jīng)過(guò)之前些其他代碼消遣,現(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)  編輯
JIT腳本引擎:中間語(yǔ)言定稿并完成驗(yàn)證工作      摘要: 經(jīng)過(guò)一個(gè)多星期的推敲,終于將中間語(yǔ)言定稿。為了屏蔽寄存器、堆棧、數(shù)值比較邏輯、跳轉(zhuǎn)、變量參數(shù)存放位置等,設(shè)計(jì)了以下中間語(yǔ)言。  閱讀全文
posted @ 2009-03-19 20:49 陳梓瀚(vczh) 閱讀(2232) | 評(píng)論 (1)  編輯
JIT腳本引擎:中間指令草稿      摘要: 中間指令主要用于解決以下問(wèn)題:
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、不讓用戶知道東西是放在哪里的(沒(méi)有堆棧給你push和pop,而且變量在物理上不一定存在,譬如說(shuō)可能在寄存器里面,或者直接優(yōu)化沒(méi)了等等)
2、不讓用戶接觸到各種標(biāo)志位(譬如說(shuō)那個(gè)惡心的浮點(diǎn)比較)
3、不讓用戶接觸到stdcall、cdecl和fastcall的區(qū)別(因此call指令需要將所有參數(shù)一起寫(xiě)入,而不是在之前push)
4、不讓用戶接觸不同類型數(shù)據(jù)的轉(zhuǎn)換過(guò)程(全自動(dòng)處理,就算你int32=fp32+int16,也是一條指令。)
5、為了保持靈活性,聲明變量的時(shí)候只指出其大小,在使用變量的每一處地方標(biāo)記類型(因此可以在不同的地方標(biāo)記為不同的,可以救急)
  閱讀全文
posted @ 2009-03-10 21:05 陳梓瀚(vczh) 閱讀(1835) | 評(píng)論 (0)  編輯
JIT腳本引擎:成員對(duì)齊詳解      摘要: 為了讓編譯成x86后的代碼可以轉(zhuǎn)換成C++的函數(shù)指針,我們也必須處理成員對(duì)齊的事情。如果腳本里的結(jié)構(gòu)成員對(duì)齊跟C++不一致的話,會(huì)造成很多麻煩。下面是成員對(duì)齊的計(jì)算方法:  閱讀全文
posted @ 2009-03-09 20:46 陳梓瀚(vczh) 閱讀(3775) | 評(píng)論 (2)  編輯

Full JIT Archive

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产精品网站| 久久久久久久97| 亚洲美女av黄| 欧美日本在线看| 亚洲网站啪啪| 亚洲一级黄色| 国内一区二区三区| 欧美大片一区二区三区| 免费在线视频一区| 亚洲视频一区二区免费在线观看| 亚洲国产一区二区三区在线播 | 欧美激情精品久久久久久黑人| 两个人的视频www国产精品| 欧美国产日韩精品免费观看| 久久理论片午夜琪琪电影网| 久久精精品视频| 91久久综合亚洲鲁鲁五月天| 亚洲人成人77777线观看| 欧美精品国产一区二区| 亚洲欧美日韩精品综合在线观看| 香蕉久久夜色精品| 亚洲激情二区| a91a精品视频在线观看| 在线国产精品播放| 性做久久久久久| 久久蜜桃精品| 亚洲永久视频| 欧美一区激情视频在线观看| 久久九九国产精品| 国产精品99久久久久久人| 亚洲一区在线免费观看| 亚洲国产精品成人| 亚洲午夜精品一区二区| 久久免费视频在线观看| 久久久久久久91| 亚洲亚洲精品在线观看| 激情久久五月| 日韩一二三区视频| 一区二区在线观看av| 亚洲伦理久久| 国产午夜精品全部视频在线播放| 亚洲国产精品一区二区www在线| 欧美午夜一区二区三区免费大片| 欧美电影免费观看高清| 国产精品日韩一区二区| 欧美激情一区二区三区全黄 | 最新热久久免费视频| 国产精品久久一卡二卡| 亚洲一区三区在线观看| 性伦欧美刺激片在线观看| 免费成人毛片| 美女日韩在线中文字幕| 国产精品第十页| 亚洲国产小视频| 在线观看欧美成人| 欧美一级日韩一级| 亚洲永久免费视频| 欧美日韩欧美一区二区| 亚洲日本黄色| 亚洲一区二区av电影| 国产精品久久久久aaaa樱花| 亚洲精品在线视频观看| 91久久夜色精品国产九色| 亚洲网址在线| 亚洲欧美视频在线观看| 欧美日韩一区成人| 日韩一二三区视频| 黄色在线成人| 久久久99国产精品免费| 久久久综合视频| 欧美伦理一区二区| 亚洲狼人精品一区二区三区| 9人人澡人人爽人人精品| 欧美日韩国产一区二区三区地区| 尤物九九久久国产精品的特点 | 国产夜色精品一区二区av| 91久久精品日日躁夜夜躁国产| 久久久久久穴| 亚洲国产成人在线视频| 日韩视频在线一区二区| 欧美韩国在线| 亚洲免费激情| 欧美在线视频免费| 一区二区三区免费网站| 欧美日本亚洲| 一本色道88久久加勒比精品| 在线亚洲欧美视频| 国产精品美腿一区在线看 | 一区二区三区高清在线观看| 美女黄网久久| 亚洲激情电影中文字幕| 亚洲伦理一区| 欧美日本国产视频| 亚洲美女视频在线观看| 亚洲一区二区视频| 国产欧美精品一区二区色综合| 亚洲精品在线观| 欧美日韩国产在线一区| 亚洲在线观看免费| 欧美韩国一区| 亚洲欧美国产日韩天堂区| 国外精品视频| 欧美视频四区| 久久久精品999| 日韩午夜黄色| 久久亚洲一区二区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲精品一区二区网址| 欧美性大战久久久久久久| 欧美一区二区三区成人| 91久久精品美女高潮| 久久gogo国模啪啪人体图| 亚洲欧洲三级| 国产一区二区日韩精品欧美精品| 欧美国产一区二区| 欧美在线视频a| 一区二区av在线| 欧美国产精品专区| 久久精品一二三区| 在线亚洲欧美视频| 亚洲激情亚洲| 国语自产精品视频在线看| 亚洲二区精品| 久久国产天堂福利天堂| 亚洲精品国产精品乱码不99| 国产日产精品一区二区三区四区的观看方式 | 亚洲日本黄色| 女同性一区二区三区人了人一| 午夜精品免费| 一区二区欧美激情| 91久久国产精品91久久性色| 一区二区欧美日韩| 亚洲日产国产精品| 国内外成人在线| 国产精品一区二区在线观看不卡| 欧美精品 国产精品| 一本色道久久综合狠狠躁的推荐| 久久精品亚洲热| 午夜精品免费在线| 亚洲欧美精品伊人久久| 亚洲成人在线视频播放 | 欧美精品在线免费| 久久久久国产精品厨房| 性欧美暴力猛交69hd| 日韩一区二区精品在线观看| 亚洲国产成人精品女人久久久 | 亚洲影音一区| av成人激情| 久久电影一区| 久久久久久久成人| 久久裸体视频| 久久久亚洲一区| 久久精品在线免费观看| 欧美一区激情| 久久久国产成人精品| 久久经典综合| 久热精品视频在线观看一区| 久久亚洲国产成人| 久久夜色撩人精品| 麻豆精品在线视频| 欧美激情亚洲| 亚洲精品久久久久中文字幕欢迎你 | 另类图片综合电影| 麻豆久久久9性大片| 免费在线看成人av| 欧美激情亚洲自拍| 欧美少妇一区| 国产精品一区二区欧美| 国产欧美一区二区三区在线老狼 | 久久精品卡一| 久久亚洲欧洲| 亚洲高清免费视频| 亚洲国产片色| 中文精品一区二区三区| 午夜一区二区三视频在线观看| 欧美一区二区三区在线视频| 久久精品免费播放| 欧美粗暴jizz性欧美20| 欧美伦理一区二区| 亚洲一级片在线观看| 亚洲免费视频网站| 久久久午夜视频| 欧美日韩国产在线观看| 国产日韩欧美视频| 亚洲狠狠婷婷| 正在播放日韩| 国产一区二区日韩精品| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品视频免费观看| 香蕉av777xxx色综合一区| 欧美成人精品h版在线观看| 亚洲第一页在线| 亚洲一本视频| 另类春色校园亚洲| 欧美视频在线不卡| 在线成人h网| 亚洲视频在线免费观看| 美日韩精品免费| 一本在线高清不卡dvd| 国产日韩一区|