生活随笔
收集整理的這篇文章主要介紹了
虚拟机及VmBasic编译引擎实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
| 虛擬機(jī)及VmBasic編譯引擎說明 |
| ? | 1.關(guān)于虛擬機(jī)及其編譯器的說明 2.VmBasic開發(fā)/調(diào)試環(huán)境的介紹及說明 3.關(guān)于其他 | | 下載地址一 | 源程序下載 | | 下載地址二 | 設(shè)計(jì)說明書 | |
| 關(guān)于虛擬機(jī)及其編譯器的說明 | | ? | 記得3DS/MAX里面實(shí)現(xiàn)了一個(gè)類似BASIC的腳本,Animator里面實(shí)現(xiàn)了一個(gè)類C的腳本語言,Autodesk公司的軟件對(duì)于腳本支持的很出色,好的腳本引擎在乎平臺(tái)無關(guān)性、高效性和擴(kuò)充性,一個(gè)腳本引擎的需要對(duì)一個(gè)好程序來說非常迫切,于是半年前我寫了一款虛擬機(jī),最近又實(shí)現(xiàn)了一個(gè)類Basic的腳本編譯器,特性說明: | 1 | 高效性和獨(dú)立于平臺(tái):由于虛擬機(jī)運(yùn)行是解釋二進(jìn)制的字節(jié)碼因此速度明顯快于每次運(yùn)行及時(shí)解釋的腳本語言,比如Perl和PHP,而虛擬機(jī)的核心程序代碼也經(jīng)過數(shù)個(gè)C++編譯器和平臺(tái)的測(cè)試,可以毫無修改的編譯運(yùn)行于多個(gè)操作系統(tǒng)。 | | ? | | 2 | 充分的開放:通過虛擬機(jī)的端口I/O技術(shù),要對(duì)它進(jìn)行擴(kuò)充變得十分容易,VmBeta指令通過輸出/輸入的方法向用戶自己的程序進(jìn)行通訊,用戶通過處理輸出輸入消息來達(dá)到功能的擴(kuò)充,使它符合你產(chǎn)品的需要,具體的虛擬機(jī)實(shí)現(xiàn)和設(shè)計(jì)說明參考文檔 vmbeta.txt | | ? | | 3 | 可設(shè)安全級(jí)別:通過可設(shè)置安全級(jí)別,對(duì)程序運(yùn)行狀態(tài)進(jìn)行檢控 | 通過半年的修改我自己覺得虛擬機(jī)夠高效開放,就是vmbasic編譯器寫的沒有多高的水準(zhǔn):完全沒有對(duì)生成代碼做優(yōu)化,弄出許多繁瑣的中間代碼,不過還是明顯快于及時(shí)解釋語言,通過測(cè)試速度大概是DOS自帶的QBASIC程序的三倍左右(可以通過目錄下的幾個(gè)算法程序來實(shí)驗(yàn))。 為了檢驗(yàn)其效率和擴(kuò)充性,我將虛擬機(jī)程序擴(kuò)充了一些作圖功能寫成了Windows版本的,然后用vmbasic編寫了一個(gè)空戰(zhàn)小游戲,雖然由于一開始我太相信GDI而沒有選擇DDraw,且編譯器要生成1/2左右的重復(fù)性代碼,但是仍可以從游戲中看出效率來(可以用vmbide.exe打開fire.bas運(yùn)行),關(guān)于編譯程序VmBasic的更詳細(xì)說明見basic.htm 程序說明:壓縮檔包括虛擬機(jī)運(yùn)行程序(vmbeta.exe)VmBasic調(diào)試開發(fā)平臺(tái)(vmbide.exe)四個(gè)算法例子(alex1-4.bas) 一個(gè)射擊游戲例子(fire.bas)及其圖片,說明幫助文檔若干.... | | VmBasic開發(fā)/調(diào)試環(huán)境的介紹及說明 | | ? | | 右邊的圖是完整的開發(fā)環(huán)境左邊是語句幫助,中間是代碼編寫區(qū),下面是編譯的錯(cuò)誤和過程記錄,系統(tǒng)熱鍵說明: | | 1.F8編譯成VMS文件 | | 2.F9編譯并運(yùn)行程序 | | 3.F1對(duì)VmBasic的幫助 | | 4.Shift+F1幫助IDE | | ? | | 另外點(diǎn)擊運(yùn)行圖表左邊的圖表可以查看編譯出來的虛擬機(jī)匯編代碼。點(diǎn)擊工具目錄,可以做一系列設(shè)置:虛擬機(jī)程序設(shè)置,預(yù)連接庫設(shè)置,開發(fā)環(huán)境設(shè)置等,都是簡(jiǎn)單的東西 | | ? | | | | ? | ? | | 用VmBasic編寫的射擊小游戲:必須Windows版的虛擬機(jī)程序運(yùn)行(擴(kuò)充了GDI圖形功能) | | | | 顯示查看虛擬機(jī)匯編 | | | | | 關(guān)于其他 | | ? | 半年前在論壇上面看見過一些師兄們關(guān)于編譯的爭(zhēng)論,忽然有所感悟,那時(shí)剛好寫了虛擬機(jī),于是就決定為它寫款語言,本來考慮寫類C或者類Pascal的,但是想著Basic用起來簡(jiǎn)單,而且分析起來似乎也簡(jiǎn)單,后來我才發(fā)現(xiàn)雖然沒有C的編譯難寫但由于Basic經(jīng)歷了長時(shí)間的發(fā)展,語法變化很大,總的來說沒有同意的規(guī)范,模塊表示也不明確,就連IF語句都有好多種版本,所以一個(gè)支持函數(shù)/過程的Basic編譯器我覺得比Pascal難寫的多。目錄DOS下有DOS環(huán)境的編譯器和虛擬機(jī),可以用來編譯運(yùn)行非擴(kuò)展的vmbasic程序:alex1-4.bas,可以在IDE的工具->設(shè)置里面設(shè)定虛擬機(jī)的運(yùn)行程序。 這是個(gè)引擎的演示版本,畢竟好的東西都不是一個(gè)人整出來的,我也會(huì)在學(xué)校不斷的學(xué)習(xí),非常歡迎來信討論相關(guān)技術(shù),和游戲/圖形程式設(shè)計(jì),如果你覺得這套引擎對(duì)你有價(jià)值,可以寫信給我,如果你對(duì)相關(guān)的東西很感興趣,也可以寫信給我,聯(lián)系方法: 成都建設(shè)路電子科技大學(xué)20013080 林偉 郵編:610000 電話:028-83200790 信箱:skywindt@yeah.net? lwwind@yeah.net 無名鳥游戲工作組制作?http://softnb.51.net ?http://www.joynb.net | |
總結(jié)
以上是生活随笔為你收集整理的虚拟机及VmBasic编译引擎实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。