編譯程式過程
使用編譯程式開發BASIC應用程式的過程如圖所示。首先是用解釋程式或行編輯程式EDLIN建立BASIC源程式檔案,保存在磁碟上。再用解釋程式對程式進行調試(運行),調試完畢後再用編譯程式進行編譯和連線,生成可執行的.EXE檔案,最後在作業系統支持下運行。在這一過程中,編譯系統承擔了編譯、連線生成執行檔的任務。
編譯BASIC的主要特點
(1)能充分利用解釋程式支持下易建立BASIC源程式及可邊修改邊運行的優點。
(2)能將各種程式連線起來,組成一個較大的執行檔。任何高級語言源程式,在同一型號的機器上,經編譯後生成的目標程式都是同一機器的指令序列,這樣就可以把若干個BASIC程式、彙編程式或其它高級語言中的子程式(過程)的目標程式連成一個較大的執行檔。這就是各種高級語言源程式的“低級接口”。
(3)所有翻譯過程都發生在運行用戶檔案之前,因此程式的運行效率高,速度快。
(4)可將BASIC程式轉換為在作業系統管理和控制下的執行檔。運行時已脫離了源程式檔案和編譯程式,以及在編譯過程中的代碼最佳化等,故可以節省記憶體空間。如果開發者僅向用戶提供磁碟上的執行檔,則開發者可為自己的源程式保密。
差別
由於BASIC源程式在編譯和解釋程式支持下的運行方式和環境不同,故編譯BASIC和解釋BASIC不是全兼容的,某些語句和操作命令有一些差別。在使用中應予以注意。
大多數情況下,用戶在解釋程式支持下運行的BASIC程式,可以不作變動或稍作修改就可以在編譯程式下進行編譯。只有少數輔助性語句和函式,以及某些操作命令存在著一些差別或受某些限制。只要注意這些差別和限制,在解釋程式調試後,按編譯程式的有關規則作點修改,即可在編譯程式下進行編譯。
在語言上的差別
說明語句一般應放在程式的首部,並注意下列語句的特殊要求。
1、COMMON語句必須放在所有可執行語句之前。
2、DIM語句的下標表達式必須是整型常數。
3、REM語句除作注釋語句外,在編譯BASIC中有特殊作用,用以表示編譯命令,其格式為:REM$(編譯元命令)。
4、對於幾個程式模組共同使用的公共變數的說明部分,應放在一個單獨的包含檔案中,並在各程式塊前都用包含編譯元命令$INCLUDE將包含檔案嵌入。
調用和連線語句有差別
CALL語句可以調用彙編子程式或其它語言的子程式,被調用的程式不必在調用前裝入記憶體,而是在連線時自動裝入。CALL語句中的變數名必須與被調用的子程式名一致。
CHAIN語句不允許使用ALL、MERGE、DELETE和行號等選擇項,所有公共變數都必須用COMMON語句說明。
其他限制和擴充
1、1.0版本的編譯不支持時間陷阱語句。如ON TIMER(n)語句。使用事件陷阱和出錯陷阱語句時,編譯中必須帶相應的參數(即開關)進行編譯。
2、編譯程式不支持輸入/輸出,也不支持ERASE語句和MOTOR語句。
3、編譯中如遇END語句,將關閉所有已打開的檔案,返回作業系統。