計組第四章:指令系統
4.1 指令系統概述
指令
- 是計算機硬體能夠識别并直接執行操作的指令
- 微指令
- 是微程式級的指令,屬于硬體
- 宏指令
- 是由若幹條機器指令組成的軟體指令, 屬于軟體
- 機器指令
- 也就是我們通常所說的指令,介于 微指令與宏指令之間,每條指令可完成一個獨立的算術運算或邏輯運算操作
指令系統
- 一台計算機中所有指令的集合
- 發展
- 性能要求
- 完備性
- 是指用彙編語言編寫各種程式時,指令系統直接提供的指令足夠使用,而不必用軟體來實作
- 有效性
- 是指利用指令系統提供的指令而編 寫的程式能夠高效率地運作
- 規範性
- 是指指令系統的對稱性、勻齊性、指令格式和資料格式的一緻性
- 對稱性
- 是指在指令系統中所有的寄存器和存儲器單元都可同等對待,所有的指令都可使用各種尋址方式
- 勻齊性
- 是指一種操作性質的指令可以支援各種資料類型
- 指令格式和資料格式的一緻性
- 是指指令長度和資料長度有一定的關系,以友善處理和存取
- 對稱性
- 是指指令系統的對稱性、勻齊性、指令格式和資料格式的一緻性
- 相容性
- 是指計算機的體系結構設計基本相同,計算機之間具有相同的基本結構、資料表示和共同的基本指令集合
- 完備性
4.2 指令格式
指令字(簡稱指令)
- 表示一條指令的機器字
指令格式
- 是指令字用二進制代碼表示的結構形式 ,一般由兩部分組成(操作碼字段+位址碼字段)
操作碼字段表征指令的操作特性與功能
位址碼字段通常用來指定參與操作的操作數的位址
操作碼
- 指明操作性質的指令碼
- n位操作碼的指令系統最多表示2n條指令
位址碼
- 描述指令的操作對象
- 按數量分
- 零位址指令
- 無需操作數
- 操作數是預設的
- 一位址指令
- 單操作數運算
- 二進制運算
- 二位址指令
- 三種類型
- 存儲器-存儲器型指令(SS)
- 寄存器-寄存器型指令(RR)
- 寄存器-存儲器型指令(RS)
- 三種類型
- 三位址指令
- 多位址指令
- 零位址指令
指令字長度
- 一個指令字中包含二進制代碼的位數
機器字長
- 計算機能直接處理的二進制資料的位數
指令字長度
- 單字長指令
- 半字長指令
- 雙字長指令
- 多字長指令
- 必須兩次或多次通路主存以取出一 整條指令
- 等長指令字結構
- 變長指令字結構
指令助記符
- 用一些比較容易記憶的文字元号來表示指令中的操作碼和操作數
4.3 指令分類
資料傳送指令
- 最基本、最常用、最重要
- 用來使資料在主存與CPU寄存器之間進行傳輸
算術運算指令
邏輯運算指令
程式控制指令
- 轉移指令
- 條件轉移
- 無條件轉移
- 轉子程式指令與子程式傳回指令
- 轉子程式指令
- 實作子程式調用的指令
- 子程式傳回指令
- 從子程式中正确傳回到主程式的斷點并繼續執行
- 轉子程式指令
- 程式中斷指令
輸入輸出指令
- 主機與外圍裝置進行資訊交換的一類指令
- 輸入
- 資訊由外圍裝置傳向主機
- 輸出
- 資訊由主機傳向外圍裝置
字元串處理指令
系統控制指令
- 用于改變計算機系統的工作狀态
- 條件碼
- 儲存目前指令執行結果的特征
- 條件碼指令
- 對條件碼進行置位或清除操作
- 開/關中斷指令
- 可視為特殊的條件碼指令
- 意味着對中斷請求的允許或禁止
特權指令
- 具有特殊權限的指令
- 主要用于系統資源的配置設定和管理
- 一般不直接提供給使用者使用
4.4 尋址方式
在程式運作過程中,形成指令或操作數位址的方式
- 指令尋址方式
- 簡單
- 資料尋址方式
- 複雜
指令尋址方式
- 順序尋址方式
- 跳躍尋址方式
- 下一條指令的位址碼不 是由程式計數器給出,而是由本條指令直接給出
操作數尋址方式
操作數的尋址方式形式位址
- 指令中形成操作數或操作數位址的方式
各種不同的存儲器尋址方式
- 指令中直接給出的位址
- 從形式位址生成有效位址的各種方式
- 立即尋址模式
- 指令的位址碼字段指出操作數本身
- 直接尋址模式
- 在指令的位址字段中直接指出操作數在主存中的位址
- 簡單、直覺
- 間接尋址模式
- 指令位址碼字段所指向的存儲單元中存儲操作數的位址
- 擴大指令的尋址能力
- 寄存器尋址模式
- 指令中的位址碼是寄存器的編号
- 無需通路主存,速度快
- 直接尋址
- 寄存器内容是操作數本身
- 間接尋址
- 寄存器内容是操作數位址
- 基址尋址模式
- 将基址寄存器的内容加上指令中的形式位址而形成操作數的有效位址
- 擴大尋址能力
- 用于擴大尋址範圍
- 變址尋址方式
- 将變址寄存器的内容加上指令中的形式位址而形成操作數的有效位址
- 實作程式塊的規律性變化
- 用于數組的通路(與基址尋址模式不同點)
- 相對尋址方式
- 相對于目前的指令位址而言的尋址方式
- 把程式計數器PC的内容加上指令中的形式位址而形成操作數的有效位址
- 附
- 塊尋址
- 在指令中指出資料塊的起始位址和資料塊的長度,使用一條塊尋址指令完成一個資料塊的傳送
- 段尋址
- 将存儲器空間劃分為若幹個單元, 在尋址一個具體單元時,由一個基位址(CPU中的段寄存器)再加上某些寄存器提供的偏移量來形成有效位址
- 塊尋址
堆棧尋址方式
堆棧進棧或壓棧
- 一組能存儲和取出資料的暫時存儲單元
棧頂
- 資料按順序存入堆棧
出棧或彈棧
- 堆棧中的一個單元的資料
棧頂元素
- 棧項按與進棧相反的順序從堆棧中取出
- 最後進棧的資料或最先出棧的資料
- 寄存器堆棧
- 直接設定于CPU中
- 存儲器堆棧
- 在主存中
- 優點
- 任意長度
- 随意建立
- 任何對存儲器尋址的指令都可尋址堆棧中的資料
堆棧硬體
- 存儲區
- 堆棧執政SP
存儲器堆棧
- 從高位址開始生成堆棧
- 從低位址開始生成堆棧
4.5 指令系統執行個體
8086/8088指令系統
- 資料傳送類指令
- 算術運算類指令
- 邏輯運算與移位類指令
- 串操作類指令
- 控制轉移類指令
- 處理器控制類指令
Pentium指令系統
- CPU辨別指令(CPUID)
- 寄存器與CR4之間的傳送指令(MOV)
- 八位元組的比較并交換指令(CMPXCHG8B)
Pentium 4指令系統
- 讀時間标記計數器指令(RDTSC)
- 讀/寫模式專用寄存器指令(RDMSR/ WRMSR)
- 恢複系統管理模式指令(RSM)
- 讀性能監控計數器指令(RDPMC)
- SSE2和SSE3擴充指令集
Core 2指令系統
- 優化指令(ADDPS/HSUBPS/HADDPD/HSUBPD)
- 資料處理指令( ADDSUBPS/ADDSUBPD/MOVSHDUP/MOVSLDUP/ MOVDDUP)
- 資料傳輸指令(FISTTP)
- 特殊處理指令(LDDQU)