虛擬機及VmBasic編譯引擎實現

虛擬機及VmBasic編譯引擎說明
 1.關於虛擬機及其編譯器的說明
2.
VmBasic開發/調試環境的介紹及說明
3.關於其他
下載地址一源程序下載
下載地址二設計說明書

關於虛擬機及其編譯器的說明
 

  記得3DS/MAX裏面實現了一個類似BASIC的腳本,Animator裏面實現了一個類C的腳本語言,Autodesk公司的軟件對於腳本支持的很出色,好的腳本引擎在乎平臺無關性、高效性和擴充性,一個腳本引擎的需要對一個好程序來說非常迫切,於是半年前我寫了一款虛擬機,最近又實現了一個類Basic的腳本編譯器,特性說明:

1高效性和獨立於平臺:由於虛擬機運行是解釋二進制的字節碼因此速度明顯快於每次運行及時解釋的腳本語言,比如Perl和PHP,而虛擬機的核心程序代碼也經過數個C++編譯器和平臺的測試,可以毫無修改的編譯運行於多個操作系統。
 
2充分的開放:通過虛擬機的端口I/O技術,要對它進行擴充變得十分容易,VmBeta指令通過輸出/輸入的方法向用戶自己的程序進行通訊,用戶通過處理輸出輸入消息來達到功能的擴充,使它符合你產品的需要,具體的虛擬機實現和設計說明參考文檔 vmbeta.txt
 
3可設安全級別:通過可設置安全級別,對程序運行狀態進行檢控

  通過半年的修改我自己覺得虛擬機夠高效開放,就是vmbasic編譯器寫的沒有多高的水準:完全沒有對生成代碼做優化,弄出許多繁瑣的中間代碼,不過還是明顯快於及時解釋語言,通過測試速度大概是DOS自帶的QBASIC程序的三倍左右(可以通過目錄下的幾個算法程序來實驗)。

  爲了檢驗其效率和擴充性,我將虛擬機程序擴充了一些作圖功能寫成了Windows版本的,然後用vmbasic編寫了一個空戰小遊戲,雖然由於一開始我太相信GDI而沒有選擇DDraw,且編譯器要生成1/2左右的重複性代碼,但是仍可以從遊戲中看出效率來(可以用vmbide.exe打開fire.bas運行),關於編譯程序VmBasic的更詳細說明見basic.htm

  程序說明:壓縮檔包括虛擬機運行程序(vmbeta.exe)VmBasic調試開發平臺(vmbide.exe)四個算法例子(alex1-4.bas) 一個射擊遊戲例子(fire.bas)及其圖片,說明幫助文檔若干....


VmBasic開發/調試環境的介紹及說明
 
右邊的圖是完整的開發環境左邊是語句幫助,中間是代碼編寫區,下面是編譯的錯誤和過程記錄,系統熱鍵說明:
 1.F8編譯成VMS文件
 2.F9編譯並運行程序
 3.F1對VmBasic的幫助
 4.Shift+F1幫助IDE
 
另外點擊運行圖表左邊的圖表可以查看編譯出來的虛擬機彙編代碼。點擊工具目錄,可以做一系列設置:虛擬機程序設置,預連接庫設置,開發環境設置等,都是簡單的東西
 
  
用VmBasic編寫的射擊小遊戲:必須Windows版的虛擬機程序運行(擴充了GDI圖形功能)
顯示查看虛擬機彙編
關於其他
 

  半年前在論壇上面看見過一些師兄們關於編譯的爭論,忽然有所感悟,那時剛好寫了虛擬機,於是就決定爲它寫款語言,本來考慮寫類C或者類Pascal的,但是想着Basic用起來簡單,而且分析起來似乎也簡單,後來我才發現雖然沒有C的編譯難寫但由於Basic經歷了長時間的發展,語法變化很大,總的來說沒有同意的規範,模塊表示也不明確,就連IF語句都有好多種版本,所以一個支持函數/過程的Basic編譯器我覺得比Pascal難寫的多。目錄DOS下有DOS環境的編譯器和虛擬機,可以用來編譯運行非擴展的vmbasic程序:alex1-4.bas,可以在IDE的工具->設置裏面設定虛擬機的運行程序。

  這是個引擎的演示版本,畢竟好的東西都不是一個人整出來的,我也會在學校不斷的學習,非常歡迎來信討論相關技術,和遊戲/圖形程式設計,如果你覺得這套引擎對你有價值,可以寫信給我,如果你對相關的東西很感興趣,也可以寫信給我,聯繫方法:

成都建設路電子科技大學20013080 林偉
郵編:610000
電話:028-83200790
信箱:[email protected]
   [email protected]


無名鳥遊戲工作組製作 http://softnb.51.net  http://www.joynb.net

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章