• <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>
            隨筆-341  評論-2670  文章-0  trackbacks-0

                考試結束了,Vczh Free Script 2.0也放出來了,正則表達式的代碼也一并發包含在VFS 2.0里面了。于是想寫一個關于如何開發腳本引擎的系列。過幾天要去實習了,如果找到晚上上網的辦法的話會陸續發出來,要不然的話只能在實習結束之后一并發上來了。

                腳本引擎在很多時候都能用上,而且現在也有很多腳本引擎的產品了。為什么還要學習如何寫腳本引擎呢?其一是為了學習,其二是為了了解。學習對于自己的編程水平的提高很有幫助,了解對于使用當今的腳本引擎也很有幫助。而且自己開發腳本引擎的好處在于可以自己控制安全問題。雖然這個在大多數情況下并不是優先考慮的條件。

                腳本引擎的開發是有一定的方法的。首先,要把輸入的腳本代碼變成記號,也就是說把“printf("Hello World");”變成print、(、"HelloWorld"、)和;五個部分。至于開發可配置的高速詞法分析器可以看這篇文章。接下來就是語法分析器。這個時候首先需要了解為什么代碼是一棵樹(數據結構的樹),然后才能開始工作。至于如何寫語法分析器,或者詞法分析器也想手寫的話,可以看這篇文章。為了執行效率,我們需要將語言抽象成指令集,就像X86的指令集一樣,但是更加簡單。可以使用堆棧機。

                一門支持能垃圾收集的string、array和不能垃圾收集的class的語言是很容易編譯成機器碼的。現在我正在閱讀intel的文檔了解x86(32位)的指令格式。如果在寫文章的過程中這個問題被我解決了的話,我也會順便把如何將腳本編譯成機器碼以便加快執行速度的辦法寫出來。現在我對于x86指令集的模式已經了解了,剩下具體問題。垃圾收集器的資料并不多,我唯一找到的就是《Garbage Collection,Algorithms for Automatic Dynamic Memory Management》。中文版貌似賣完了,我只能下載英文版的影印版看。很慘。在文章里面我會講述一種比較簡單的單代compact垃圾收集器(.NET用的是多代)。

                文章的組織暫時決定使用如下方法:
                ·如何設計合適自己使用的語言
                ·詞法分析器、語法分析器與語法樹的結構(一開始只有函數、字符串以及能進行垃圾收集的數組,弱類型語言)
                ·如何設計合適的指令集
                ·指令集(堆棧機)的數據結構以及從語法樹翻譯到指令集的方法
                ·虛擬機的開發
                ·如何向虛擬機加入外部函數以便讓腳本可以調用程序提供的其他功能
                ·進一步修改語言,加上其他特性等
                如果x86的指令集研究的速度夠快的話,將會添加如下內容
                ·分配寄存器的算法
                ·x86指令格式
                ·如何調用自己產生的機器碼

                這個系列持續的時間將比較久,而且每一篇文章將附帶示例代碼。如果只需要了解方法而不需要看具體的實現的朋友們可以略過這個部分。關于具體實現的部分我將可能在文章中標明出來。

            posted on 2008-07-06 08:37 陳梓瀚(vczh) 閱讀(2286) 評論(5)  編輯 收藏 引用 所屬分類: 腳本技術

            評論:
            # re: 關于腳本引擎 2008-07-06 16:31 | foxtail
            寫完可以出書了 ^_^  回復  更多評論
              
            # re: 關于腳本引擎 2008-07-06 17:43 | Lnn
            wow!  回復  更多評論
              
            # re: 關于腳本引擎 2008-07-06 18:37 | 空明流轉
            光有x86的code還不行,還得弄成PE格式才有價值。
            我現在就編譯成C code,然后調用C編譯器編譯成本地代碼。
            這樣的話不是x86也能用,還能享受一點C的優化能力。  回復  更多評論
              
            # re: 關于腳本引擎 2008-07-07 01:43 | 陳梓瀚(vczh)
            PE沒有宿主程序,所以就不是腳本了,因此不是腳本的考慮范圍。  回復  更多評論
              
            # re: 關于腳本引擎 2008-07-07 17:14 | 空明流轉
            no,dll。  回復  更多評論
              
            伊人久久大香线蕉亚洲| 亚洲乱码精品久久久久.. | 亚洲欧美日韩精品久久| 91精品国产高清久久久久久国产嫩草 | 精品熟女少妇aⅴ免费久久| 三级韩国一区久久二区综合 | 久久精品国产2020| 2021久久精品国产99国产精品| 四虎国产精品免费久久5151| 久久综合亚洲色一区二区三区| 99国产精品久久久久久久成人热| 久久99精品久久久久久9蜜桃| 亚洲综合伊人久久综合| 亚洲午夜久久影院| 麻豆亚洲AV永久无码精品久久| 国产精品VIDEOSSEX久久发布| 中文字幕日本人妻久久久免费| 91久久精品国产成人久久| 18岁日韩内射颜射午夜久久成人| 丁香五月综合久久激情| 亚洲精品无码久久久久| 无码乱码观看精品久久| 国产成人精品久久亚洲高清不卡| 中文字幕人妻色偷偷久久| 久久无码一区二区三区少妇| 香港aa三级久久三级| 精品午夜久久福利大片| 激情伊人五月天久久综合| 7777精品久久久大香线蕉| 青青青青久久精品国产h久久精品五福影院1421 | 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 99久久精品国产麻豆| 久久久久久久久久久免费精品 | 日韩va亚洲va欧美va久久| 91精品日韩人妻无码久久不卡| 久久66热人妻偷产精品9| 亚洲中文字幕无码一久久区| 欧美伊人久久大香线蕉综合| 国产精品久久久久久久app| 久久久久无码专区亚洲av| 污污内射久久一区二区欧美日韩|