生活随笔
收集整理的這篇文章主要介紹了
虚拟机及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 信箱:skywindt@yeah.net? lwwind@yeah.net 無名鳥游戲工作組制作?http://softnb.51.net ?http://www.joynb.net | |
總結
以上是生活随笔為你收集整理的虚拟机及VmBasic编译引擎实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。