記得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)及其圖片,說明幫助文檔若干.... |