隧洞開挖

[拼音]:zhiling xitong

[英文]:instruction set

一臺計算機所能識別並執行的全部指令的集合。指令是一組程式碼,規定由計算機執行的程式的一步操作。程式由指令組成,是為解決某一問題而設計的一系列指令。指令一般包括兩個部分:操作碼域和地址域。操作碼域存放指令的操作碼。地址域確定運算元的值或地址、操作結果的地址和下一條指令的地址等。指令系統表徵計算機的基本功能,是計算機系統結構的重要組成部分。

指令的格式

指令包括操作碼域和地址域兩部分。根據地址域所涉及的地址數量,常見的指令格式有以下幾種(圖1)。

(1)三地址指令:一般地址域中A1、A2分別確定第一、第二運算元地址,A3確定結果地址。下一條指令的地址通常由程式計數器按順序給出。

(2)二地址指令:地址域中A1確定第一運算元地址,A2同時確定第二運算元地址和結果地址。

(3)單地址指令:地址域中A 確定第一運算元地址。固定使用某個暫存器存放第二運算元和操作結果。因而在指令中隱含了它們的地址。

(4)零地址指令:在堆疊型計算機中,運算元一般存放在下推堆疊頂的兩個單元中,結果又放入棧頂,地址均被隱含,因而大多數指令只有操作碼而沒有地址域。

(5)可變地址數指令:地址域所涉及的地址的數量隨操作定義而改變。如有的計算機的指令中的地址數可少至 0個,多至6個。

指令的定址方式

根據指令內容確定運算元地址的過程稱為定址。完善的定址方式可為使用者組織和使用資料提供方便。

(1)直接定址:指令地址域中表示的是運算元地址。

(2)間接定址:指令地址域中表示的是運算元地址的地址即指令地址碼對應的儲存單元所給出的是地址A,操作資料存放在地址A指示的主存單元內。有的計算機的指令可以多次間接定址,如A指示的主存單元記憶體放的是另一地址B,而操作資料存放在B指示的主存單元內,稱為多重間接定址(圖2a)。

(3)立即定址:指令地址域中表示的是運算元本身。

(4)變址定址:指令地址域中表示的是變址暫存器號i和位移值D。將指定的變址暫存器內容E與位移值D相加,其和E+D為運算元地址(圖2b)。許多計算機具有雙變址功能,即將兩個變址暫存器內容與位移值相加,得運算元地址。變址定址有利於陣列操作和程式共用。同時,位移值長度可短於地址長度,因而指令長度可以縮短。

(5)相對定址:指令地址域中表示的是位移值D。程式計數器內容(即本條指令的地址)K與位移值D相加,得運算元地址K+D(圖2c)。當程式在主儲存器浮動時,相對定址能保持原有程式功能。

此外,還有自增定址、自減定址、組合定址等定址方式。定址方式可由操作碼確定,也可在地址域中設標誌,指明定址方式。

指令的種類

常見指令按功能可劃分為以下幾類。

(1)資料處理指令:包括算術運算指令、邏輯運算指令、移位指令、比較指令等。

(2)資料傳送指令:包括暫存器之間、暫存器與主儲存器之間的傳送指令等。

(3)程式控制指令:包括條件轉移指令、無條件轉移指令、轉子程式指令等。

(4)輸入-輸出指令:包括各種外圍裝置的讀、寫指令等。有的計算機將輸入-輸出指令包含在資料傳送指令類中。

(5)狀態管理指令:包括諸如實現置儲存保護、中斷處理等功能的管理指令。

隨著計算機系統結構的發展,有些計算機還不斷引入新指令。如“測並置”指令是為在多機系統和多道程式中防止重入公用子程式而設定的。指令先測試標誌位以判斷該子程式是否正在使用。如未被使用,則轉入子程式並置該標誌位,以防其他程序重入。後來又出現功能更強的訊號(PV操作)指令。有的計算機還設定“執行”指令。“執行“指令執行由地址域所確定的儲存單元中的指令。其目的是避免用程式直接修改程式中的指令。這對程式的檢查和流水線等技術的應用均有好處。有的計算機採用堆疊實現程式的呼叫指令和返回指令。呼叫時將返回地址和各種狀態、引數壓入堆疊頂部,這樣就能較好地實現子程式的巢狀和遞迴呼叫,並可使子程式具有可重入性。另外,一些計算機使不少複雜的操作固定化,形成諸如多項式求值、佇列插項、佇列撤項和各種翻譯、編輯等指令。

向量指令和標量指令

有些大型機和巨型機設定功能齊全的向量運算指令系統。向量指令的基本操作物件是向量,即有序排列的一組數。若指令為向量操作,則由指令確定向量運算元的地址(主儲存器起始地址或向量暫存器號),並直接或隱含地指定如增量、向量長度等其他向量引數。向量指令規定處理機按同一操作處理向量中的所有分量,可有效地提高計算機的運算速度。不具備向量處理功能,只對單個量即標量進行操作的指令稱為標量指令。

特權指令和使用者指令

在多使用者環境中,某些指令的不恰當使用會引起機器的系統性混亂。如置儲存保護、中斷處理、輸入輸出等這類指令,均稱為特權指令,不允許使用者直接使用。為此,處理機一般設定特權和使用者兩種狀態,或稱管(理)態和目(的)態。在特權狀態下,程式可使用包括特權指令在內的全部指令。在使用者狀態下,只允許使用非特權指令,或稱使用者指令。使用者如使用特權指令則會發生違章中斷。如使用者需要申請作業系統進行某些服務,如輸入-輸出等,可使用“廣義指令”,或稱為“進監督”、“訪管”等的指令。