什么是解釋程序
解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執(zhí)行源程序或源程序的內部形式(中間代碼)。因此,解釋程序并不產(chǎn)生目標程序,這是它和編譯程序的主要區(qū)別。
工作原理
解釋程序由一個總控程序和若干個執(zhí)行子程序組成。解釋程序的工作過程如下:首先,由總控程序執(zhí)行初始準備工作,置工作初態(tài);然后,從源程序中取一個語句S,并進行語法檢查。如果語法有錯,則輸出錯誤信息;否則,根據(jù)所確定的語句類型轉去執(zhí)行相應的執(zhí)行子程序。返回后檢查解釋工作是否完成,如果未完成,則繼續(xù)解釋下一語句;否則,進行必要的善后處理工作。
組成模塊
解釋程序的一般結構可以分為解釋模塊和運行模塊兩個主要模塊。前者的職能是按源程序動態(tài)執(zhí)行順序逐個輸入語句,并對單個語句進行分析和解釋,包括語法和語義的正確性檢驗、生成等價的中間代碼或機器語言代碼,以及錯誤信息提供等處理。后者的職能是運行語句的翻譯代碼,并輸出中間結果或最終結果。由于解釋程序的設計思想不同,運行模塊的執(zhí)行方式也不同。一種方法是解釋模塊直接生成源程序語句等價的機器語言代碼;通常一個語句生成多條機器指令的代碼段。運行模塊負責控制這段代碼的執(zhí)行并處理中間結果(保存或輸出)。另一種方法是,解釋模塊生成語句等價的中間代碼(但不是機器語言代碼),如程序調用及其參數(shù)形式。運行模塊負責選擇相應功能部分并控制中間代碼的執(zhí)行,并處理相關運行結果。
特點
解釋程序的工作方式非常適于人通過終端設備與計算機會話,如在終端上打一條命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令并提交硬件立即執(zhí)行且將執(zhí)行結果反映到終端,從終端把命令打入后,就能立即得到計算結果。
這的確是很方便的,很適合于一些小型機的計算問題。但解釋程序執(zhí)行速度很慢,例如源程序中出現(xiàn)循環(huán),則解釋程序也重復地解釋并提交執(zhí)行這一組語句,這就造成很大浪費。
對源程序邊解釋翻譯成機器代碼邊執(zhí)行的高級語言程序。所以,解釋程序的功能是:解釋執(zhí)行高級語言程序。由于它的方便性和交互性較好,早期一些高級語言采用這種方式,如BASIC、dBASE。但它的弱點是運行效率低,程序的運行依賴于開發(fā)環(huán)境,不能直接在操作系統(tǒng)下運行。
解釋程序的突出優(yōu)點是可簡單地實現(xiàn),且易于在解釋執(zhí)行過程中靈活、方便地插入修改和調試措施,但最大缺點是執(zhí)行效率很低。例如,需要多次重復執(zhí)行的語句,采用編譯程序時只需要翻譯一次;但在解釋程序中卻需要重復翻譯,重復執(zhí)行。
適用范圍
1、有些語言中的大多數(shù)語句,如字符串加工語言中的字符串查找語句和加工語句,其執(zhí)行時間比翻譯時間長得多。對于這種語言,采用生成性方案,效果甚微,而采用解釋性方案則易于實現(xiàn)。
2、為了便于用戶調試和修改程序,又能保證程序高效運行,很多程序設計語言配置兩個加工系統(tǒng),一個用于調試,一個用于有效地運行。調試用的系統(tǒng)一般用解釋程序實現(xiàn),以便及時監(jiān)視運行情況、動態(tài)地輸出調試信息和靈活地修改錯誤。
3、交互式會話語言(如BASIC,APL),要為用戶提供并行、交錯編寫、執(zhí)行、調試和修改源程序的功能。采用解釋程序易于實現(xiàn)這些功能。
命令解釋程序的工作流程
命令解釋程序的作用
在聯(lián)機操作方式下,終端處理程序把用戶鍵入的信息送鍵盤緩沖區(qū)中保存。一旦用戶鍵入回車符,便立即把控制權交給命令處理程序。顯然,對于不同的命令,應有能完成特定功能的命令處理程序與之對應。可見,命令解釋程序的主要作用,是在屏幕上給出提示符,請用戶鍵入命令,然后讀入該命令,識別命令,再轉到相應命令處理程序的入口地址,把控制權交給該處理程序去執(zhí)行,并將處理結果送屏幕上顯示。若用戶鍵入的命令有錯,而命令解釋程序未能予以識別,或在執(zhí)行中間出現(xiàn)問題時,則應顯示出某一出錯信息。
命令解釋程序的組成
1、常駐部分
這部分包括一些中斷服務子程序。例如,正常退出中斷INT 20,它用于在用戶程序執(zhí)行完畢后,退回操作系統(tǒng);駐留退出中斷INT 27,用這種方式,退出程序可駐留在內存中;還有用于處理和顯示標準錯誤信息的INT 24等。常駐部分還包括這樣的程序:當用戶程序終止后,它檢查暫存部分是否已被用戶程序覆蓋,若已被覆蓋,便重新將暫存部分調入內存。
2、初始化部分
它跟隨在常駐內存部分之后,在啟動時獲得控制權。這部分還包括對AUTOEXEC.BAT文件的處理程序,并決定應用程序裝入的基地址。每當系統(tǒng)接電或重新啟動后,由處理程序找到并執(zhí)行AUTOEXEC.BAT文件。由于該文件在用完后不再被需要,因而它將被第一個由COMMAND.COM裝入的文件所覆蓋。
3、暫存部分
這部分主要是命令解釋程序,并包含了所有的內部命令處理程序、批文件處理程序,以及裝入和執(zhí)行外部命令的程序。它們都駐留在內存中,但用戶程序可以使用并覆蓋這部分內存,在用戶程序結束時,常駐程序又會將它們重新從磁盤。
命令解釋程序的工作流程
系統(tǒng)在接通電源或復位后,初始化部分獲得控制權,對整個系統(tǒng)完成初始化工作,并自動執(zhí)行AUTOEXEC.BAT文件,之后便把控制權交給暫存部分。暫存部分首先讀入鍵盤緩沖區(qū)中的命令,判別其文件名、擴展名及驅動器名是否正確。若發(fā)現(xiàn)有錯,在給出出錯信息后返回;若無錯,再識別該命令。一種簡單的識別命令的方法是基于一張表格,其中的每一表目都是由命令名及其處理程序的入口地址兩項所組成。如果暫存部分在該表中能找到鍵入的命令,且是內部命令,便可以直接從對應表項中獲得該命令處理程序的入口地址 ,然后把控制權交給該處理程序去執(zhí)行該命令。
評論
查看更多