第5章指令系統(tǒng)_第1頁(yè)
第5章指令系統(tǒng)_第2頁(yè)
第5章指令系統(tǒng)_第3頁(yè)
第5章指令系統(tǒng)_第4頁(yè)
第5章指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩96頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Ch5: Instruction Set指令系統(tǒng)指令系統(tǒng)第第1 1講:指令系統(tǒng)的設(shè)計(jì)講:指令系統(tǒng)的設(shè)計(jì)第第2 2講:程序的機(jī)器級(jí)表示講:程序的機(jī)器級(jí)表示2第一講第一講 指令系統(tǒng)設(shè)計(jì)指令系統(tǒng)設(shè)計(jì)u指令系統(tǒng)設(shè)計(jì)的基本原則指令系統(tǒng)設(shè)計(jì)的基本原則u指令類(lèi)型和格式指令類(lèi)型和格式u數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型寄存器組織、存儲(chǔ)器組織寄存器組織、存儲(chǔ)器組織u操作數(shù)的尋址方式操作數(shù)的尋址方式立即立即 / 寄存器寄存器 / 寄存器間接寄存器間接 / 直接直接 / 間接間接 / 堆棧堆棧 / 偏移偏移u操作碼的編碼操作碼的編碼定長(zhǎng)編碼法、變長(zhǎng)擴(kuò)展編碼法定長(zhǎng)編碼法、變長(zhǎng)擴(kuò)展編碼法u條件碼和標(biāo)志寄存器條件碼和標(biāo)志寄存器u指令設(shè)計(jì)風(fēng)

2、格指令設(shè)計(jì)風(fēng)格 u指令系統(tǒng)舉例指令系統(tǒng)舉例主主 要要 內(nèi)內(nèi) 容容3Instruction Set Designinstruction setsoftwarehardware一個(gè)完善的指令系統(tǒng)應(yīng)滿(mǎn)足以下幾個(gè)方面的要求:一個(gè)完善的指令系統(tǒng)應(yīng)滿(mǎn)足以下幾個(gè)方面的要求:u完備性:指令系統(tǒng)提供的指令足夠使用完備性:指令系統(tǒng)提供的指令足夠使用u有效性:程序能夠高效率運(yùn)行有效性:程序能夠高效率運(yùn)行u規(guī)整性:對(duì)稱(chēng)性、勻齊性、一致性規(guī)整性:對(duì)稱(chēng)性、勻齊性、一致性u(píng)兼容性:相同的基本結(jié)構(gòu)、共同的基本指令兼容性:相同的基本結(jié)構(gòu)、共同的基本指令集集u可擴(kuò)充性:操作碼字段預(yù)留一定的空間可擴(kuò)充性:操作碼字段預(yù)留一定的空間u

3、指令系統(tǒng)處在軟指令系統(tǒng)處在軟/硬件交界面,同時(shí)被硬件設(shè)計(jì)者和系統(tǒng)程序員看到硬件交界面,同時(shí)被硬件設(shè)計(jì)者和系統(tǒng)程序員看到u硬件設(shè)計(jì)者角度:指令系統(tǒng)為硬件設(shè)計(jì)者角度:指令系統(tǒng)為CPU提供功能需求,要求易于硬件設(shè)計(jì)提供功能需求,要求易于硬件設(shè)計(jì)u系統(tǒng)程序員角度:通過(guò)指令系統(tǒng)來(lái)使用硬件,要求易于編寫(xiě)編譯器系統(tǒng)程序員角度:通過(guò)指令系統(tǒng)來(lái)使用硬件,要求易于編寫(xiě)編譯器u指令系統(tǒng)設(shè)計(jì)的好壞還決定了:計(jì)算機(jī)的性能和成本指令系統(tǒng)設(shè)計(jì)的好壞還決定了:計(jì)算機(jī)的性能和成本u偽指令偽指令u指令指令u微指令微指令4一條指令須包含的信息一條指令須包含的信息問(wèn)題:一條指令必須問(wèn)題:一條指令必須明顯明顯或或隱含隱含包含的信息有哪

4、些?包含的信息有哪些?u操作碼:指定操作類(lèi)型操作碼:指定操作類(lèi)型 (操作碼長(zhǎng)度:操作碼長(zhǎng)度:固定可變固定可變) )u源操作數(shù)參照:一個(gè)或多個(gè)源操作數(shù)所在的地址源操作數(shù)參照:一個(gè)或多個(gè)源操作數(shù)所在的地址 (操作數(shù)來(lái)源操作數(shù)來(lái)源:主:主( (虛虛) )存存/ /寄存器寄存器/ /I/OI/O端口端口/ /指令本身)指令本身)u結(jié)果值參照:產(chǎn)生的結(jié)果存放何處(目的操作數(shù))結(jié)果值參照:產(chǎn)生的結(jié)果存放何處(目的操作數(shù)) (結(jié)果地址結(jié)果地址:主:主( (虛虛) )存存/ /寄存器寄存器/ /I/OI/O端口端口) )u下一條指令地址:下條指令存放何處下一條指令地址:下條指令存放何處 (下條指令地址下條指令

5、地址 :主:主( (虛虛) )存存) ) ( (正常情況隱含在正常情況隱含在PCPC中,改變順序時(shí)由指令給出)中,改變順序時(shí)由指令給出)回顧:馮回顧:馮.諾依曼結(jié)構(gòu)機(jī)器對(duì)指令規(guī)定:諾依曼結(jié)構(gòu)機(jī)器對(duì)指令規(guī)定:u 用二進(jìn)制表示,和數(shù)據(jù)一起存放在主存中用二進(jìn)制表示,和數(shù)據(jù)一起存放在主存中u 指令由兩部分組成:操作碼和操作數(shù)(或其地址碼)指令由兩部分組成:操作碼和操作數(shù)(或其地址碼) Operation Code: defines the operation type Operands: indicate operation source and destination5一條指令中應(yīng)該有幾個(gè)地址碼字段

6、?一條指令中應(yīng)該有幾個(gè)地址碼字段?零地址指令零地址指令 (1) (1) 無(wú)需操作數(shù)如:空操作停機(jī)等無(wú)需操作數(shù)如:空操作停機(jī)等 (2) (2) 所需操作數(shù)為默認(rèn)的如:堆棧累加器等所需操作數(shù)為默認(rèn)的如:堆棧累加器等 形式:形式:一地址指令一地址指令 其其地址既是操作數(shù)的地址,也是結(jié)果的地址地址既是操作數(shù)的地址,也是結(jié)果的地址 (1) (1) 單目運(yùn)算:如:取反取負(fù)等單目運(yùn)算:如:取反取負(fù)等 (2) (2) 雙目運(yùn)算:另一操作數(shù)為默認(rèn)的如:累加器等雙目運(yùn)算:另一操作數(shù)為默認(rèn)的如:累加器等 形式:形式:二地址指令(最常用)二地址指令(最常用) 分別存放雙目運(yùn)算中兩個(gè)操作數(shù),并將其中一個(gè)地址作為結(jié)果的地

7、址。分別存放雙目運(yùn)算中兩個(gè)操作數(shù),并將其中一個(gè)地址作為結(jié)果的地址。 形式:形式:三地址指令(三地址指令(RISC風(fēng)格)風(fēng)格) 分別作為雙目運(yùn)算中兩個(gè)源操作數(shù)的地址和一個(gè)結(jié)果的地址。分別作為雙目運(yùn)算中兩個(gè)源操作數(shù)的地址和一個(gè)結(jié)果的地址。 形式:形式:多地址指令多地址指令 大中型機(jī)中用于成批數(shù)據(jù)處理的指令大中型機(jī)中用于成批數(shù)據(jù)處理的指令,如如:向量向量 / 矩陣等(矩陣等(SIMD)OPOPA1A2A3OPA1A1OPA26從指令執(zhí)行周期看指令設(shè)計(jì)涉及的問(wèn)題從指令執(zhí)行周期看指令設(shè)計(jì)涉及的問(wèn)題InstructionFetchInstructionDecodeOperandFetchExecuteRe

8、sultStoreNextInstruction從存儲(chǔ)器取指令從存儲(chǔ)器取指令對(duì)指令譯碼,以確定將要做什么操作對(duì)指令譯碼,以確定將要做什么操作 計(jì)算操作數(shù)地址并取操作數(shù)計(jì)算操作數(shù)地址并取操作數(shù)進(jìn)行相應(yīng)計(jì)算,并得到標(biāo)志位進(jìn)行相應(yīng)計(jì)算,并得到標(biāo)志位將計(jì)算結(jié)果保存到目的地將計(jì)算結(jié)果保存到目的地計(jì)算下條指令地址(通常和取指令同時(shí)進(jìn)行)計(jì)算下條指令地址(通常和取指令同時(shí)進(jìn)行)指令地址、指令長(zhǎng)度(定長(zhǎng)指令地址、指令長(zhǎng)度(定長(zhǎng)/變長(zhǎng))變長(zhǎng))指令格式、操作碼編碼、操作數(shù)類(lèi)型指令格式、操作碼編碼、操作數(shù)類(lèi)型地址碼、尋址方式、操作數(shù)格式和存放方式地址碼、尋址方式、操作數(shù)格式和存放方式操作類(lèi)型、標(biāo)志或條件碼操作類(lèi)型、

9、標(biāo)志或條件碼結(jié)果數(shù)據(jù)位置(目的操作數(shù))結(jié)果數(shù)據(jù)位置(目的操作數(shù))下條指令地址(順序下條指令地址(順序 / 轉(zhuǎn)移)轉(zhuǎn)移)7指令格式的選擇應(yīng)遵循的幾條基本原則指令格式的選擇應(yīng)遵循的幾條基本原則u應(yīng)盡量短應(yīng)盡量短u要有足夠的操作碼位數(shù)要有足夠的操作碼位數(shù)u指令編碼必須有唯一的解釋?zhuān)駝t是不合法的指令指令編碼必須有唯一的解釋?zhuān)駝t是不合法的指令u指令字長(zhǎng)應(yīng)是字節(jié)的整數(shù)倍指令字長(zhǎng)應(yīng)是字節(jié)的整數(shù)倍u合理地選擇地址字段的個(gè)數(shù)合理地選擇地址字段的個(gè)數(shù)u指令盡量規(guī)整指令盡量規(guī)整與指令集設(shè)計(jì)相關(guān)的重要方面與指令集設(shè)計(jì)相關(guān)的重要方面u操作碼的全部組成:操作碼個(gè)數(shù)操作碼的全部組成:操作碼個(gè)數(shù) / 種類(lèi)種類(lèi) / 復(fù)雜度

10、復(fù)雜度 LD/ST/INC/BRN 四種指令已足夠編制任何可計(jì)算程序,但程序會(huì)很長(zhǎng)四種指令已足夠編制任何可計(jì)算程序,但程序會(huì)很長(zhǎng)u數(shù)據(jù)類(lèi)型:對(duì)哪幾種數(shù)據(jù)類(lèi)型完成操作數(shù)據(jù)類(lèi)型:對(duì)哪幾種數(shù)據(jù)類(lèi)型完成操作u指令格式:指令長(zhǎng)度指令格式:指令長(zhǎng)度 / 地址碼個(gè)數(shù)地址碼個(gè)數(shù) / 各字段長(zhǎng)度各字段長(zhǎng)度u通用寄存器:個(gè)數(shù)通用寄存器:個(gè)數(shù) / 功能功能 / 長(zhǎng)度長(zhǎng)度u尋址方式:操作數(shù)地址的指定方式尋址方式:操作數(shù)地址的指定方式u下條指令的地址如何確定:順序,下條指令的地址如何確定:順序,PC+1;條件轉(zhuǎn)移;無(wú)條件轉(zhuǎn)移;條件轉(zhuǎn)移;無(wú)條件轉(zhuǎn)移;指令格式的設(shè)計(jì)指令格式的設(shè)計(jì)一般通過(guò)對(duì)操作碼進(jìn)行不同的編碼來(lái)定義不同的含

11、義,一般通過(guò)對(duì)操作碼進(jìn)行不同的編碼來(lái)定義不同的含義,操作碼相同時(shí),再由功能碼定義不同的含義操作碼相同時(shí),再由功能碼定義不同的含義! !8操作類(lèi)型操作類(lèi)型u不同機(jī)器的指令系統(tǒng)是各不相同的不同機(jī)器的指令系統(tǒng)是各不相同的u從系統(tǒng)功能來(lái)考慮,一個(gè)較為完善的指令系統(tǒng)中常見(jiàn)的指從系統(tǒng)功能來(lái)考慮,一個(gè)較為完善的指令系統(tǒng)中常見(jiàn)的指令類(lèi)型包括:令類(lèi)型包括: 數(shù)據(jù)傳送指令:數(shù)據(jù)傳送指令:用于數(shù)據(jù)在寄存器、主存單元、棧頂和用于數(shù)據(jù)在寄存器、主存單元、棧頂和I/O之間進(jìn)之間進(jìn)行傳送行傳送 運(yùn)算指令:運(yùn)算指令:用于各種算術(shù)運(yùn)算和邏輯運(yùn)算用于各種算術(shù)運(yùn)算和邏輯運(yùn)算 字符串處理指令:字符串處理指令:用于字符串查找、掃描、轉(zhuǎn)

12、換等用于字符串查找、掃描、轉(zhuǎn)換等 程序流控制指令:程序流控制指令:用于條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移、調(diào)用、返回等用于條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移、調(diào)用、返回等 輸入輸出指令:輸入輸出指令:用于用于CPU與外設(shè)接口進(jìn)行數(shù)據(jù)、狀態(tài)、命令等信與外設(shè)接口進(jìn)行數(shù)據(jù)、狀態(tài)、命令等信息的交換息的交換 系統(tǒng)控制指令:系統(tǒng)控制指令:用于內(nèi)核進(jìn)程控制機(jī)器的啟動(dòng)、停止、系統(tǒng)模式用于內(nèi)核進(jìn)程控制機(jī)器的啟動(dòng)、停止、系統(tǒng)模式切換等切換等9操作數(shù)類(lèi)型和存儲(chǔ)方操作數(shù)類(lèi)型和存儲(chǔ)方式式操作數(shù)是指令處理的對(duì)象,與高級(jí)語(yǔ)言數(shù)據(jù)類(lèi)型對(duì)應(yīng),基本類(lèi)型有哪些?操作數(shù)是指令處理的對(duì)象,與高級(jí)語(yǔ)言數(shù)據(jù)類(lèi)型對(duì)應(yīng),基本類(lèi)型有哪些?地址(指針)地址(指針) 被看成無(wú)

13、符號(hào)整數(shù),用來(lái)參加運(yùn)算以確定主被看成無(wú)符號(hào)整數(shù),用來(lái)參加運(yùn)算以確定主(虛虛)存地址存地址數(shù)值數(shù)據(jù)數(shù)值數(shù)據(jù) 定點(diǎn)數(shù)定點(diǎn)數(shù)(整數(shù)整數(shù)):一般用二進(jìn)制補(bǔ)碼表示:一般用二進(jìn)制補(bǔ)碼表示 浮點(diǎn)數(shù)浮點(diǎn)數(shù)(實(shí)數(shù)實(shí)數(shù)):大多數(shù)機(jī)器采用:大多數(shù)機(jī)器采用IEEE754標(biāo)準(zhǔn)標(biāo)準(zhǔn) 十進(jìn)制數(shù):用十進(jìn)制數(shù):用NBCD碼表示,壓縮碼表示,壓縮/非壓縮(匯編程序設(shè)計(jì)時(shí)用)非壓縮(匯編程序設(shè)計(jì)時(shí)用)位、位串、字符和字符串位、位串、字符和字符串 用來(lái)表示文本、聲音和圖像等用來(lái)表示文本、聲音和圖像等 4 bits is a nibble(一個(gè)十六進(jìn)制數(shù)字)(一個(gè)十六進(jìn)制數(shù)字) 8 bits is a byte 16 bits is

14、a half-word 32 bits is a word邏輯邏輯(布爾布爾)數(shù)據(jù)數(shù)據(jù) 按位操作(按位操作(0-假假1-真)真)存放在寄存器存放在寄存器或內(nèi)存單元中或內(nèi)存單元中10IA-32 & MIPS Data TypeuIA-32 基本類(lèi)型:基本類(lèi)型: 字節(jié)、字字節(jié)、字(16位位)、雙字、雙字(32位位)、四字、四字(64位位) 整數(shù):整數(shù): 16位、位、32位、位、64位三種位三種2-補(bǔ)碼表示的整數(shù)補(bǔ)碼表示的整數(shù) 18位壓縮位壓縮8421 BCD碼表示的十進(jìn)制整數(shù)碼表示的十進(jìn)制整數(shù) 無(wú)符號(hào)整數(shù)(無(wú)符號(hào)整數(shù)(8、16或或32位)位) 近指針:近指針:32位段內(nèi)偏移(有效地址)位段內(nèi)偏移(

15、有效地址) 浮點(diǎn)數(shù)浮點(diǎn)數(shù):IEEE 754(80位擴(kuò)展精度浮點(diǎn)數(shù)寄存器)位擴(kuò)展精度浮點(diǎn)數(shù)寄存器)uMIPS 基本類(lèi)型:基本類(lèi)型: 字節(jié)、半字字節(jié)、半字(16位位)、字、字(32位位)、雙字、雙字(64位位) 整數(shù):整數(shù): 16位、位、32位、位、64位三種位三種2-補(bǔ)碼表示的整數(shù)補(bǔ)碼表示的整數(shù) 無(wú)符號(hào)整數(shù):(無(wú)符號(hào)整數(shù):(16、32位)位) 浮點(diǎn)數(shù)浮點(diǎn)數(shù):IEEE 754(32位位/64位浮點(diǎn)數(shù)寄存器)位浮點(diǎn)數(shù)寄存器)11Addressing Modes(尋址方式)(尋址方式)u什么是什么是“尋址方式尋址方式”? 指令或操作數(shù)地址的指定方式。即:根據(jù)地址找到指令或操作數(shù)的方法。指令或操作數(shù)地址

16、的指定方式。即:根據(jù)地址找到指令或操作數(shù)的方法。u地址碼編碼由操作數(shù)的尋址方式?jīng)Q定地址碼編碼由操作數(shù)的尋址方式?jīng)Q定u地址碼編碼原則:地址碼編碼原則: 指令地址碼盡量短指令地址碼盡量短 操作數(shù)存放位置靈活,空間應(yīng)盡量大操作數(shù)存放位置靈活,空間應(yīng)盡量大 地址計(jì)算過(guò)程盡量簡(jiǎn)單地址計(jì)算過(guò)程盡量簡(jiǎn)單u指令的尋址指令的尋址-簡(jiǎn)單簡(jiǎn)單 正常正常:PC增值增值 跳轉(zhuǎn)跳轉(zhuǎn) ( jump / branch / call / return ):同操作數(shù)的尋址:同操作數(shù)的尋址u操作數(shù)的尋址操作數(shù)的尋址-復(fù)雜(復(fù)雜(想象一下高級(jí)語(yǔ)言程序中操作數(shù)情況多復(fù)雜想象一下高級(jí)語(yǔ)言程序中操作數(shù)情況多復(fù)雜) 操作數(shù)來(lái)源:寄存器操作數(shù)

17、來(lái)源:寄存器 / 外設(shè)端口外設(shè)端口 / 主主(虛虛)存存 / 棧頂棧頂 操作數(shù)結(jié)構(gòu):位操作數(shù)結(jié)構(gòu):位 / 字節(jié)字節(jié) / 半字半字 / 字字 / 雙字雙字 / 一維表一維表 / 二維表二維表 / 通常尋址方式特指通常尋址方式特指“操作數(shù)的尋址操作數(shù)的尋址”為什么?為什么?目標(biāo)代碼短,省空間目標(biāo)代碼短,省空間利于編譯器優(yōu)化產(chǎn)生高效代碼利于編譯器優(yōu)化產(chǎn)生高效代碼指令執(zhí)行快指令執(zhí)行快SKIP12指令順序?qū)ぶ贩绞街噶铐樞驅(qū)ぶ贩绞絬由于指令地址在主存中順序排列,當(dāng)執(zhí)行一段程序時(shí),通常是由于指令地址在主存中順序排列,當(dāng)執(zhí)行一段程序時(shí),通常是一條指令接著一條指令地順序執(zhí)行一條指令接著一條指令地順序執(zhí)行u這種程

18、序順序執(zhí)行的過(guò)程稱(chēng)為指令的這種程序順序執(zhí)行的過(guò)程稱(chēng)為指令的順序?qū)ぶ贩绞巾樞驅(qū)ぶ贩绞奖仨毷褂帽仨毷褂贸绦蛴?jì)數(shù)器程序計(jì)數(shù)器PCPC來(lái)計(jì)數(shù)指令的順序號(hào)來(lái)計(jì)數(shù)指令的順序號(hào)該順序號(hào)就是指令在主存中的地址該順序號(hào)就是指令在主存中的地址指令逐條順序執(zhí)行,由指令逐條順序執(zhí)行,由PC+1PCPC+1PC控制控制BACK13指令跳躍尋址方式指令跳躍尋址方式u指令的指令的跳躍尋址跳躍尋址,是指下一條指令的地址碼不是由程序計(jì)數(shù)器,是指下一條指令的地址碼不是由程序計(jì)數(shù)器給出,而是由本條指令直接給出給出,而是由本條指令直接給出u程序跳躍后,按新的指令地址開(kāi)始順序執(zhí)行程序跳躍后,按新的指令地址開(kāi)始順序執(zhí)行 指令計(jì)數(shù)器的內(nèi)容

19、也必須相應(yīng)改變,以便及時(shí)跟蹤新的指令指令計(jì)數(shù)器的內(nèi)容也必須相應(yīng)改變,以便及時(shí)跟蹤新的指令地址地址u采用指令跳躍尋址方式,可以實(shí)現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序,采用指令跳躍尋址方式,可以實(shí)現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序,從而縮短程序長(zhǎng)度,或?qū)⒛承┏绦蜃鳛楣渤绦蛘{(diào)用從而縮短程序長(zhǎng)度,或?qū)⒛承┏绦蜃鳛楣渤绦蛘{(diào)用u指令系統(tǒng)中的各種條件轉(zhuǎn)移或無(wú)條件轉(zhuǎn)移指令,就是為了實(shí)現(xiàn)指令系統(tǒng)中的各種條件轉(zhuǎn)移或無(wú)條件轉(zhuǎn)移指令,就是為了實(shí)現(xiàn)指令的跳躍尋址而設(shè)置的指令的跳躍尋址而設(shè)置的BACK指令地址指令內(nèi)容存儲(chǔ)器PC101JMP 4234514u尋址方式的確定尋址方式的確定 (1)沒(méi)有專(zhuān)門(mén)的尋址方式位(由操作碼確定尋址方式)沒(méi)有

20、專(zhuān)門(mén)的尋址方式位(由操作碼確定尋址方式) 如:如:MIPS指令,一條指令中最多僅有一個(gè)主指令,一條指令中最多僅有一個(gè)主(虛虛)存地址,且僅有存地址,且僅有一到兩種尋址方式,一到兩種尋址方式,Load/store型機(jī)器指令屬于這種情況。型機(jī)器指令屬于這種情況。 (2)有專(zhuān)門(mén)的尋址方式位)有專(zhuān)門(mén)的尋址方式位 如:如:X86指令,一條指令中有多個(gè)操作數(shù),且尋址方式各不相同,指令,一條指令中有多個(gè)操作數(shù),且尋址方式各不相同,需要各自說(shuō)明尋址方式,因此每個(gè)操作數(shù)有專(zhuān)門(mén)的尋址方式位。需要各自說(shuō)明尋址方式,因此每個(gè)操作數(shù)有專(zhuān)門(mén)的尋址方式位。u有效地址的含義有效地址的含義 操作數(shù)所在存儲(chǔ)單元的地址(可能是邏輯

21、地址或物理地址),可通過(guò)操作數(shù)所在存儲(chǔ)單元的地址(可能是邏輯地址或物理地址),可通過(guò)指令的尋址方式和地址碼計(jì)算得到指令的尋址方式和地址碼計(jì)算得到u基本尋址方式基本尋址方式 立即立即 / 直接直接 / 間接間接 / 寄存器寄存器 / 寄存器間接寄存器間接 / 偏移偏移 / 堆棧堆棧Operands Addressing Modes15立即立即 / 直接直接 / 間接間接 / 寄存器寄存器 / 寄存器間接寄存器間接直接尋址間接尋址寄存器尋址寄存器間接尋址andi $s1,$s2,100 立即尋址16偏移尋址方式偏移尋址方式R存儲(chǔ)器存儲(chǔ)器操作數(shù)操作數(shù)寄存器堆寄存器堆A+AOP偏移尋址:偏移尋址:EA

22、=A+(R) R可以明顯給出,也可以隱含給出可以明顯給出,也可以隱含給出 R可以為可以為PC、基址寄存器、基址寄存器B、變址寄存器、變址寄存器 I 相對(duì)尋址:相對(duì)尋址: EA=A+(PC) 相對(duì)于相對(duì)于當(dāng)前指令處當(dāng)前指令處位移量為位移量為A的單元的單元 基址尋址:基址尋址: EA=A+(B) 相對(duì)于相對(duì)于基址基址(B)處處位移量為位移量為A的單元的單元 變址尋址:變址尋址: EA=A+(I) 相對(duì)于相對(duì)于首址首址A處處位移量為位移量為(I)的單元的單元.指令中給指令中給出的地址出的地址碼碼A稱(chēng)為稱(chēng)為形式地址形式地址17偏移尋址方式偏移尋址方式 l相對(duì)尋址相對(duì)尋址 指令地址碼給出一個(gè)偏移量指令地

23、址碼給出一個(gè)偏移量(帶符號(hào)數(shù)帶符號(hào)數(shù)),基準(zhǔn)地址,基準(zhǔn)地址由由PC給出。給出。 即:即:EA=(PC)+A (ex. MIPSs instruction: Beq) 可用來(lái)實(shí)現(xiàn)程序可用來(lái)實(shí)現(xiàn)程序(公共子程序公共子程序)的浮動(dòng)的浮動(dòng) 或或 指定轉(zhuǎn)移目標(biāo)地址指定轉(zhuǎn)移目標(biāo)地址 注意:當(dāng)前注意:當(dāng)前PC的值可以是正在執(zhí)行指令的地址或下條指令的地址的值可以是正在執(zhí)行指令的地址或下條指令的地址l基址尋址基址尋址 指令地址碼給出一個(gè)偏移量,基準(zhǔn)地址指令地址碼給出一個(gè)偏移量,基準(zhǔn)地址由基址寄存器由基址寄存器B給出。給出。即:即:EA=(B)+A (ex. MIPSs instructions: lw / sw

24、) 可用來(lái)實(shí)現(xiàn)多道程序重定位可用來(lái)實(shí)現(xiàn)多道程序重定位 或或 過(guò)程調(diào)用中參數(shù)的訪問(wèn)過(guò)程調(diào)用中參數(shù)的訪問(wèn)l變址尋址變址尋址 指令地址碼給出一個(gè)基準(zhǔn)地址,而偏移量指令地址碼給出一個(gè)基準(zhǔn)地址,而偏移量(無(wú)符號(hào)數(shù)無(wú)符號(hào)數(shù))由變址寄由變址寄存器存器 I 給出。即:給出。即:EA=(I)+A 可為循環(huán)重復(fù)操作提供一種高效機(jī)制,如實(shí)現(xiàn)對(duì)線性表的方便操作可為循環(huán)重復(fù)操作提供一種高效機(jī)制,如實(shí)現(xiàn)對(duì)線性表的方便操作SKIP18相對(duì)尋址實(shí)現(xiàn)相對(duì)尋址實(shí)現(xiàn)公共子程序的浮動(dòng)公共子程序的浮動(dòng)子程序內(nèi)地址關(guān)系相對(duì)獨(dú)立,與用戶(hù)程序的地址無(wú)子程序內(nèi)地址關(guān)系相對(duì)獨(dú)立,與用戶(hù)程序的地址無(wú)關(guān),不管浮動(dòng)到哪里,總是實(shí)現(xiàn)關(guān),不管浮動(dòng)到哪里,

25、總是實(shí)現(xiàn)AX和和120相加相加5052100101=(PC)102250251=(PC)252存儲(chǔ)器存儲(chǔ)器“ . ” 表示相對(duì)尋址方式表示相對(duì)尋址方式有效地址有效地址EA=(PC)+1即:操作數(shù)在當(dāng)前指令即:操作數(shù)在當(dāng)前指令隨后的一條指令后!隨后的一條指令后!假定每條指令占一個(gè)單元假定每條指令占一個(gè)單元通常計(jì)算有效通常計(jì)算有效地址時(shí),地址時(shí),PC已已指向下條指令指向下條指令!19相對(duì)尋址實(shí)現(xiàn)相對(duì)尋址實(shí)現(xiàn)相對(duì)轉(zhuǎn)移相對(duì)轉(zhuǎn)移BACK舉例:雙字節(jié)定長(zhǎng)指令字,其中轉(zhuǎn)移指令的第一字節(jié)是操作碼舉例:雙字節(jié)定長(zhǎng)指令字,其中轉(zhuǎn)移指令的第一字節(jié)是操作碼Jxx,第二字節(jié)是位移量第二字節(jié)是位移量D,用補(bǔ)碼表示,則轉(zhuǎn)移

26、目標(biāo)指令,用補(bǔ)碼表示,則轉(zhuǎn)移目標(biāo)指令相對(duì)于轉(zhuǎn)移指令相對(duì)于轉(zhuǎn)移指令的范圍的范圍為多少?為多少?若轉(zhuǎn)移指令地址為若轉(zhuǎn)移指令地址為2000H,轉(zhuǎn)移目標(biāo)地址為,轉(zhuǎn)移目標(biāo)地址為1FF0H,總是在取指令,總是在取指令同時(shí)對(duì)同時(shí)對(duì)PC增量,則轉(zhuǎn)移指令第二字節(jié)位移量為多少?增量,則轉(zhuǎn)移指令第二字節(jié)位移量為多少?-128+127 ?只有確定了是按字還是字節(jié)編址、位移量只有確定了是按字還是字節(jié)編址、位移量D是指指令條數(shù)還是單元數(shù),才能是指指令條數(shù)還是單元數(shù),才能確定目標(biāo)地址范圍確定目標(biāo)地址范圍(目標(biāo)地址范圍不等于位移量(目標(biāo)地址范圍不等于位移量D的表示范圍!)的表示范圍?。.?dāng)按字節(jié)編址且當(dāng)按字節(jié)編址且D為單元數(shù)

27、為單元數(shù)時(shí),轉(zhuǎn)移目標(biāo)地址時(shí),轉(zhuǎn)移目標(biāo)地址= (PC)+2+D 跳轉(zhuǎn)范圍:跳轉(zhuǎn)范圍:-126128單元單元 - 6364條指令條指令 D=1FF0H2002H=EEH(18)不一定!不一定!不知道!不知道!1FF0H = 2000H+2+D舉例:舉例:MIPS指令指令“beq $1, $2, 25”的轉(zhuǎn)移目標(biāo)地址為的轉(zhuǎn)移目標(biāo)地址為(PC)+4+4*25,這里的這里的25是指令條數(shù)而不是單元數(shù)是指令條數(shù)而不是單元數(shù),MIPS采用定長(zhǎng)指令字,按字節(jié)編址,采用定長(zhǎng)指令字,按字節(jié)編址, 所有指令的長(zhǎng)度所有指令的長(zhǎng)度都是都是32位(位(4字節(jié))。字節(jié))。JxxD轉(zhuǎn)移轉(zhuǎn)移D2000H1FF0H20基址尋址實(shí)

28、現(xiàn)基址尋址實(shí)現(xiàn)程序重定位程序重定位用戶(hù)程序裝入系統(tǒng)后有一個(gè)基址,雖然偏移用戶(hù)程序裝入系統(tǒng)后有一個(gè)基址,雖然偏移量都為量都為51,但因基址不同,故操作數(shù)不同。,但因基址不同,故操作數(shù)不同。ADD AX, #511505051ADD AX, #511514051240251用戶(hù)程序用戶(hù)程序1用戶(hù)程序用戶(hù)程序2“ # ” 表示基址尋址方式表示基址尋址方式有效地址有效地址EA=基址值基址值+51基址為基址為100基址為基址為200存儲(chǔ)器存儲(chǔ)器BACK21變址尋址實(shí)現(xiàn)變址尋址實(shí)現(xiàn)線性表元素的存取線性表元素的存取u自動(dòng)變址自動(dòng)變址 指令中的地址碼指令中的地址碼A給定數(shù)組首給定數(shù)組首址,變址器址,變址器I每

29、次每次自動(dòng)加自動(dòng)加/減減數(shù)數(shù)組元素的長(zhǎng)度組元素的長(zhǎng)度x。 EA=( I )+A I=( I ) x 例如,例如,X86中的串操作指令中的串操作指令u對(duì)于對(duì)于“for (i=0;i=0;i-) .”,即地址從高即地址從高低增長(zhǎng):減低增長(zhǎng):減u可提供對(duì)線性表的方便訪問(wèn)可提供對(duì)線性表的方便訪問(wèn)若每個(gè)元素為一個(gè)字節(jié),則若每個(gè)元素為一個(gè)字節(jié),則 I=(I) 1若每個(gè)元素為若每個(gè)元素為4個(gè)字節(jié),則個(gè)字節(jié),則 I=(I) 40A0A1A2A3存儲(chǔ)器存儲(chǔ)器假定一維數(shù)組假定一維數(shù)組A從內(nèi)存從內(nèi)存100號(hào)單元開(kāi)始號(hào)單元開(kāi)始一般一般RSIC機(jī)器不提供自動(dòng)變址尋址,并將變機(jī)器不提供自動(dòng)變址尋址,并將變址和基址尋址統(tǒng)一

30、成一種偏移尋址方式址和基址尋址統(tǒng)一成一種偏移尋址方式22Example:MIPS中的循環(huán)處理中的循環(huán)處理 for (i=0;ir2,則轉(zhuǎn)移到,則轉(zhuǎn)移到label處執(zhí)行;否則順序執(zhí)行處執(zhí)行;否則順序執(zhí)行bgt的條件?的條件?無(wú)符號(hào)數(shù):無(wú)符號(hào)數(shù):ZF=0CF=0帶符號(hào)整數(shù):帶符號(hào)整數(shù):ZF=0NFOF對(duì)于帶符號(hào)和無(wú)符號(hào)運(yùn)算,標(biāo)對(duì)于帶符號(hào)和無(wú)符號(hào)運(yùn)算,標(biāo)志生成方式有沒(méi)有不同?志生成方式有沒(méi)有不同?沒(méi)有,因?yàn)榧臃娐凡恢朗菦](méi)有,因?yàn)榧臃娐凡恢朗菬o(wú)符號(hào)數(shù)還是帶符號(hào)整數(shù)!無(wú)符號(hào)數(shù)還是帶符號(hào)整數(shù)!30指令設(shè)計(jì)風(fēng)格指令設(shè)計(jì)風(fēng)格 - 按操作數(shù)位置指定風(fēng)格來(lái)分按操作數(shù)位置指定風(fēng)格來(lái)分Accumulator:

31、 (earliest machines) 累加器型累加器型特點(diǎn):其中一個(gè)操作數(shù)(源操作數(shù)特點(diǎn):其中一個(gè)操作數(shù)(源操作數(shù)1)和目的操作數(shù)總在累加器中)和目的操作數(shù)總在累加器中1 address add A acc acc + memA1(+x) address add x A acc acc + memA + xStack: (e.g. HP calculator, Java virtual machines) 堆棧型堆棧型特點(diǎn):總是將棧頂兩個(gè)操作數(shù)進(jìn)行運(yùn)算,指令無(wú)需指定操作數(shù)地址特點(diǎn):總是將棧頂兩個(gè)操作數(shù)進(jìn)行運(yùn)算,指令無(wú)需指定操作數(shù)地址0 address add tos tos + nextG

32、eneral Purpose Register: (e.g. IA-32, Motorola 68xxx) 通用寄存器型通用寄存器型特點(diǎn):操作數(shù)可以是寄存器或存儲(chǔ)器數(shù)據(jù)(即特點(diǎn):操作數(shù)可以是寄存器或存儲(chǔ)器數(shù)據(jù)(即A、B和和C可以是寄存器或存可以是寄存器或存儲(chǔ)單元)儲(chǔ)單元)2 address add A B EA(A) EA(A) + EA(B)3 address add A B C EA(A) EA(B) + EA(C)Load/Store: (e.g. SPARC, MIPS, PowerPC) 裝入裝入/存儲(chǔ)型存儲(chǔ)型特點(diǎn):運(yùn)算操作數(shù)只能是寄存器數(shù)據(jù),只有特點(diǎn):運(yùn)算操作數(shù)只能是寄存器數(shù)據(jù),只

33、有l(wèi)oad/store能訪問(wèn)存儲(chǔ)器能訪問(wèn)存儲(chǔ)器3 addressadd Ra Rb Rc Ra Rb + Rcload Ra Rb Ra memRbstore Ra Rb memRb Ra31指令風(fēng)格比較指令風(fēng)格比較Comparison:Bytes per instruction? Number of Instructions? Cycles per instruction?Code sequence for C = A + B for four classes of instruction sets:StackAccumulatorRegister Register (register- m

34、emory)(load - store)Push ALoad ALoad R1,ALoad R1,APush BAdd BAdd R1,BLoad R2,BAddStore CStore C, R1Add R3,R1,R2Pop CStore C,R3復(fù)雜表達(dá)式時(shí),累加器型風(fēng)格指令條數(shù)變多,因?yàn)樗羞\(yùn)算都要用累加復(fù)雜表達(dá)式時(shí),累加器型風(fēng)格指令條數(shù)變多,因?yàn)樗羞\(yùn)算都要用累加器,使得程序中多出許多移入器,使得程序中多出許多移入 / 移出累加器的指令!移出累加器的指令! 75年開(kāi)始,寄存器型占主導(dǎo)地位,原因:年開(kāi)始,寄存器型占主導(dǎo)地位,原因: 寄存器速度快,使用大量通用寄存器可減少訪存操作寄存器速

35、度快,使用大量通用寄存器可減少訪存操作 表達(dá)式編譯時(shí)與順序無(wú)關(guān)(相對(duì)于表達(dá)式編譯時(shí)與順序無(wú)關(guān)(相對(duì)于Stack)( Java Virtual Machine 采用采用Stack型型)想象一下想象一下“C=a*x+b*y+x*y”用累加器型風(fēng)格實(shí)現(xiàn)的情況!用累加器型風(fēng)格實(shí)現(xiàn)的情況!指令條數(shù)較少指令條數(shù)較少32Examples of Register Usage每條典型每條典型ALU指令中的存儲(chǔ)器地址個(gè)數(shù)指令中的存儲(chǔ)器地址個(gè)數(shù)每條典型每條典型ALU指令中的最多操作數(shù)個(gè)數(shù)指令中的最多操作數(shù)個(gè)數(shù)Examples03SPARC, MIPS, Precision Architecture, Power P

36、C12Intel 80 x86, Motorola 6800022VAX (also has 3-operand formats)33VAX (also has 2-operand formats)In VAX(CISC):ADDL (R9), (R10), (R11);memR9 memR10 + memR11 In MIPS(RISC): lw R1, (R10) : R1 memR10 lw R2, (R11) :R2 memR11 add R3, R1, R2 :R3 R1+R2sw R3, (R9) :memR9 R3一條指令!一條指令!四條指令!四條指令!哪一種風(fēng)格更好呢?學(xué)了第哪

37、一種風(fēng)格更好呢?學(xué)了第6和第和第7章后會(huì)有更深的體會(huì)!章后會(huì)有更深的體會(huì)!哪種哪種CPI小?小?MIPS!33指令設(shè)計(jì)風(fēng)格指令設(shè)計(jì)風(fēng)格 按指令格式的復(fù)雜度來(lái)分按指令格式的復(fù)雜度來(lái)分早期早期CISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)設(shè)計(jì)風(fēng)格的主要特點(diǎn) (1) 指令系統(tǒng)復(fù)雜指令系統(tǒng)復(fù)雜 變長(zhǎng)操作碼變長(zhǎng)操作碼 / 變長(zhǎng)指令字變長(zhǎng)指令字 / 指令多指令多 / 尋址方式多尋址方式多 / 指令格式多指令格式多 (2) 指令周期長(zhǎng)指令周期長(zhǎng) 絕大多數(shù)指令需要多個(gè)時(shí)鐘周期才能完成絕大多數(shù)指令需要多個(gè)時(shí)鐘周期才能完成 (3) 各種指令都能訪問(wèn)存儲(chǔ)器各種指令都能訪問(wèn)存儲(chǔ)器 除了專(zhuān)門(mén)的存儲(chǔ)器讀寫(xiě)指令外,運(yùn)算指令也能訪問(wèn)存儲(chǔ)器除了專(zhuān)

38、門(mén)的存儲(chǔ)器讀寫(xiě)指令外,運(yùn)算指令也能訪問(wèn)存儲(chǔ)器 (4) 采用微程序控制采用微程序控制 (5) 有專(zhuān)用寄存器有專(zhuān)用寄存器 (6) 難以進(jìn)行編譯優(yōu)化來(lái)生成高效目標(biāo)代碼難以進(jìn)行編譯優(yōu)化來(lái)生成高效目標(biāo)代碼例如,例如,VAX-11/780小型機(jī)小型機(jī)16種尋址方式;種尋址方式;9種數(shù)據(jù)格式;種數(shù)據(jù)格式;303條指令;條指令;一條指令包括一條指令包括12個(gè)字節(jié)的操作碼和下續(xù)個(gè)字節(jié)的操作碼和下續(xù)N個(gè)操作數(shù)說(shuō)明符。個(gè)操作數(shù)說(shuō)明符。一個(gè)說(shuō)明符的長(zhǎng)度達(dá)一個(gè)說(shuō)明符的長(zhǎng)度達(dá)1 10個(gè)字節(jié)。個(gè)字節(jié)。按指令格式的復(fù)雜度來(lái)分,有兩種類(lèi)型計(jì)算機(jī):按指令格式的復(fù)雜度來(lái)分,有兩種類(lèi)型計(jì)算機(jī):復(fù)雜指令集計(jì)算機(jī)復(fù)雜指令集計(jì)算機(jī)CISC

39、 (Complex Instruction Set Computer)精簡(jiǎn)指令集計(jì)算機(jī)精簡(jiǎn)指令集計(jì)算機(jī)RISC (Reduce Instruction Set Computer)34復(fù)雜指令集計(jì)算機(jī)復(fù)雜指令集計(jì)算機(jī)CISCu對(duì)對(duì)CISC進(jìn)行測(cè)試,發(fā)現(xiàn)一個(gè)進(jìn)行測(cè)試,發(fā)現(xiàn)一個(gè)事實(shí)事實(shí): 在程序中各種指令出現(xiàn)的頻率懸殊很大,最常使用的是一些簡(jiǎn)單在程序中各種指令出現(xiàn)的頻率懸殊很大,最常使用的是一些簡(jiǎn)單指令,這些指令占程序的指令,這些指令占程序的80%,但只占指令系統(tǒng)的,但只占指令系統(tǒng)的20%。而且在。而且在微程序控制的計(jì)算機(jī)中,占指令總數(shù)微程序控制的計(jì)算機(jī)中,占指令總數(shù)20%的復(fù)雜指令占用了控制的復(fù)雜

40、指令占用了控制存儲(chǔ)器容量的存儲(chǔ)器容量的80%。u1982年美國(guó)加州伯克利大學(xué)的年美國(guó)加州伯克利大學(xué)的RISC,斯坦福大學(xué)的斯坦福大學(xué)的MIPS,IBM公公司的司的IBM801相繼宣告完成,這些機(jī)器被稱(chēng)為相繼宣告完成,這些機(jī)器被稱(chēng)為第一代第一代RISC機(jī)機(jī)。uCISC的缺陷的缺陷 日趨龐大的指令系統(tǒng)不但使計(jì)算機(jī)的日趨龐大的指令系統(tǒng)不但使計(jì)算機(jī)的研制周期變長(zhǎng)研制周期變長(zhǎng),而且,而且難以保證難以保證設(shè)計(jì)的正確性,難以調(diào)試和維護(hù),設(shè)計(jì)的正確性,難以調(diào)試和維護(hù),并且因指令操作復(fù)雜而并且因指令操作復(fù)雜而增加機(jī)器增加機(jī)器周期周期,從而,從而降低了系統(tǒng)性能。降低了系統(tǒng)性能。u1975年年IBM公司開(kāi)始研究公司

41、開(kāi)始研究指令系統(tǒng)的合理性問(wèn)題指令系統(tǒng)的合理性問(wèn)題,John Cocks提出精提出精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)簡(jiǎn)指令系統(tǒng)計(jì)算機(jī) RISC ( Reduce Instruction Set Computer )。SKIP35Top 10 80 x86 Instructions Rank instructionInteger Average Percent total executed1load22%2conditional branch20%3compare16%4store12%5add8%6and6%7sub5%8move register-register4%9call1%10return1%Tota

42、l96% Simple instructions dominate instruction frequency( 簡(jiǎn)單指令占主要部分,使用頻率高!簡(jiǎn)單指令占主要部分,使用頻率高!) BACK36RISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)設(shè)計(jì)風(fēng)格的主要特點(diǎn) (1) 簡(jiǎn)化的指令系統(tǒng)簡(jiǎn)化的指令系統(tǒng) 指令少指令少 / 尋址方式少尋址方式少 / 指令格式少指令格式少 / 指令長(zhǎng)度一致指令長(zhǎng)度一致 (2) 以以RR方式工作方式工作 除除Load/Store指令可訪問(wèn)存儲(chǔ)器外,其余指令都只訪問(wèn)寄存器。指令可訪問(wèn)存儲(chǔ)器外,其余指令都只訪問(wèn)寄存器。 (3) 指令周期短指令周期短 以流水線方式工作,以流水線方式工作, 因而除因而

43、除Load/Store指令外,其他簡(jiǎn)單指令都只指令外,其他簡(jiǎn)單指令都只需一個(gè)或一個(gè)不到的時(shí)鐘周期就可完成。需一個(gè)或一個(gè)不到的時(shí)鐘周期就可完成。 (4) 采用大量通用寄存器,以減少訪存次數(shù)采用大量通用寄存器,以減少訪存次數(shù) (5) 采用組合邏輯電路控制,不用或少用微程序控制采用組合邏輯電路控制,不用或少用微程序控制 (6) 采用優(yōu)化的編譯系統(tǒng),力求有效地支持高級(jí)語(yǔ)言程序采用優(yōu)化的編譯系統(tǒng),力求有效地支持高級(jí)語(yǔ)言程序MIPS是典型的是典型的RISC處理器,處理器,82年以來(lái)新的指令集大多采用年以來(lái)新的指令集大多采用RISC體系結(jié)構(gòu)體系結(jié)構(gòu)x86因?yàn)橐驗(yàn)椤凹嫒菁嫒荨钡男枰?,保留了的需要,保留了CIS

44、C的風(fēng)格,同時(shí)也借鑒了的風(fēng)格,同時(shí)也借鑒了RISC思想思想 37指令系統(tǒng)舉例指令系統(tǒng)舉例: Address & RegistersIntel 8086VAX 11MC 68000MIPS2 x 8 bit bytesAX, BX, CX, DXSP, BP, SI, DICS, SS, DSIP, Flags2 x 8 bit bytes16 x 32 bit GPRs2 x 8 bit bytes8 x 32 bit GPRs7 x 32 bit addr reg1 x 32 bit SP1 x 32 bit PC2 x 8 bit bytes32 x 32 bit GPRs32 x 32

45、bit FPRsHI, LO, PCacc, index, count, quotstack, stack frame, stringcode,stack,data segmentr15- program counterr14- stack pointerr13- frame pointerr12- argument pointer32322420問(wèn)題:?jiǎn)栴}:GPR是什么?是什么?Flags是什么?是什么?指令系統(tǒng)舉例指令系統(tǒng)舉例:HIHI和和LOLO是是MIPSMIPS內(nèi)部?jī)?nèi)部的乘商寄存器的乘商寄存器38指令前綴段前綴操作數(shù)長(zhǎng)度地址長(zhǎng)度 0或10或1 0或1 0或1前綴類(lèi)型:字節(jié)數(shù):指令系統(tǒng)

46、舉例:指令系統(tǒng)舉例:Pentium指令格式指令格式前綴:前綴:包括指令、段、操作數(shù)長(zhǎng)度、地址長(zhǎng)度四種類(lèi)型包括指令、段、操作數(shù)長(zhǎng)度、地址長(zhǎng)度四種類(lèi)型指令:指令:含含操作碼、尋址方式、操作碼、尋址方式、SIB、位移量和直接數(shù)據(jù)、位移量和直接數(shù)據(jù)五部分,位移量和立即數(shù)都可是五部分,位移量和立即數(shù)都可是1/2/4B。SIB中基址中基址B和變址和變址I都可是都可是8個(gè)個(gè)GRS中任一個(gè)。中任一個(gè)。SS給出比例因子。操作碼:給出比例因子。操作碼:opcode; w:與機(jī)器模式(:與機(jī)器模式(16 / 32位)一起確定寄存器位數(shù)(位)一起確定寄存器位數(shù)(AL / AX / EAX); d:操:操作方向;作方向

47、;尋址方式:尋址方式: mod、r/m、 reg/op三個(gè)字段與三個(gè)字段與w字段和機(jī)器模式一起確定操作字段和機(jī)器模式一起確定操作數(shù)所在的寄存器編號(hào)或有效地址計(jì)算方式數(shù)所在的寄存器編號(hào)或有效地址計(jì)算方式變長(zhǎng)指令字:變長(zhǎng)指令字:1B17B變長(zhǎng)操作碼:變長(zhǎng)操作碼:4b / 5b / 6b / 7b / 8b /變長(zhǎng)操作數(shù):變長(zhǎng)操作數(shù):Byte / Word / DW / QW變長(zhǎng)寄存器:變長(zhǎng)寄存器:8位位 / 16位位 /32位位調(diào)用指令自動(dòng)把返回地址壓棧調(diào)用指令自動(dòng)把返回地址壓棧專(zhuān)門(mén)的專(zhuān)門(mén)的push/pop指令,自動(dòng)修改棧指針指令,自動(dòng)修改棧指針ALU指令在指令在Flags中隱含生成條件碼中隱含生

48、成條件碼ALU指令中的一個(gè)操作數(shù)可來(lái)自存儲(chǔ)器指令中的一個(gè)操作數(shù)可來(lái)自存儲(chǔ)器提供基址加比例索引尋址提供基址加比例索引尋址問(wèn)題問(wèn)題: 是累加器型、通用寄存器型、是累加器型、通用寄存器型、ld/st型?是型?是CISC型、型、RISC型?型?39Pentium處理器的尋址方式處理器的尋址方式 操作數(shù)的來(lái)源:操作數(shù)的來(lái)源: 立即數(shù)立即數(shù)(立即尋址立即尋址):直接來(lái)自指令:直接來(lái)自指令 寄存器寄存器(寄存器尋址寄存器尋址):來(lái)自:來(lái)自32位位 / 16位位 / 8位通用寄存器位通用寄存器 存儲(chǔ)單元存儲(chǔ)單元(其他尋址其他尋址):需進(jìn)行地址轉(zhuǎn)換:需進(jìn)行地址轉(zhuǎn)換 分段分段 分頁(yè)分頁(yè)指令中的信息:指令中的信息:

49、 (1) 段寄存器段寄存器SR(隱含或顯式給出)隱含或顯式給出) (2) 8/16/32位位偏移量偏移量A (顯式給出)顯式給出) (2) 基址寄存器基址寄存器B (明顯給出,任意通用寄存器皆可)明顯給出,任意通用寄存器皆可) (3) 變址寄存器變址寄存器I (明顯給出,除明顯給出,除ESP外的任意通用寄存器皆可。)外的任意通用寄存器皆可。)有比例變址和非比例變址有比例變址和非比例變址比例變址時(shí)要乘以比例變址時(shí)要乘以比例因子比例因子S (1:8位位 / 2:16位位 / 4:32位位 / 8:64位位) 指令指令“ MOV EAX, ES: EBP+ESI*8+100”的含義是什么?的含義是什

50、么?40Pentium處理器尋址方式處理器尋址方式尋址方式尋址方式算法算法立即立即( (地址碼地址碼A A本身為操作數(shù)本身為操作數(shù)) )寄存器寄存器( (通用寄存器的內(nèi)容為操作數(shù)通用寄存器的內(nèi)容為操作數(shù)) )偏移量偏移量( (地址碼地址碼A A給出給出8/16/328/16/32位偏移量位偏移量) )基址基址( (地址碼地址碼B B給出基址器編號(hào)給出基址器編號(hào)) )基址帶偏移量基址帶偏移量( (一維表訪問(wèn)一維表訪問(wèn)) )比例變址帶偏移量比例變址帶偏移量( (一維表訪問(wèn)一維表訪問(wèn)) )基址帶變址和偏移量基址帶變址和偏移量( (二維表訪問(wèn)二維表訪問(wèn)) )基址帶比例變址和偏移量基址帶比例變址和偏移量

51、( (二維表訪問(wèn)二維表訪問(wèn)) )相對(duì)相對(duì)( (給出下一指令的地址,轉(zhuǎn)移控制給出下一指令的地址,轉(zhuǎn)移控制) )操作數(shù)操作數(shù)=A操作數(shù)操作數(shù)= (R)LA=(SR)+ALA=(SR)+(B)LA=(SR)+(B)+ALA=(SR)+ (I)xS+ALA=(SR)+(B)+(I) +ALA=(SR)+(B)+(I)xS+A轉(zhuǎn)移地址轉(zhuǎn)移地址=(PC)+A41Pentium處理器的存儲(chǔ)器尋址處理器的存儲(chǔ)器尋址SSCS基址寄存器基址寄存器變址寄存器變址寄存器比例因子比例因子1/2/4/8偏移量偏移量8/16/32位位x+線性地址線性地址有效地址有效地址線性地址空間線性地址空間需要時(shí)再對(duì)線性地址空需要時(shí)再對(duì)

52、線性地址空間進(jìn)行分頁(yè)處理。間進(jìn)行分頁(yè)處理。42uRISC型型 (類(lèi)似于(類(lèi)似于MIPS,32位定長(zhǎng)操作碼、定長(zhǎng)指令字),主要不同在于位定長(zhǎng)操作碼、定長(zhǎng)指令字),主要不同在于: 提供了特殊的兩種變址尋址方式,可減少指令數(shù)提供了特殊的兩種變址尋址方式,可減少指令數(shù) 兩個(gè)寄存器相加變址(基址寄存器和索引寄存器:間接變址尋址)兩個(gè)寄存器相加變址(基址寄存器和索引寄存器:間接變址尋址) 例:例:add $t0,$a0,$s3 lw &t1,0($t0) 自動(dòng)變址(變址器自動(dòng)自動(dòng)變址(變址器自動(dòng)+1) 例:例: lw &t0, 4($s3) addi $s3,$s3,4 引入特殊的數(shù)據(jù)塊指令,可減少指令數(shù)

53、引入特殊的數(shù)據(jù)塊指令,可減少指令數(shù) 單條指令可傳送多達(dá)單條指令可傳送多達(dá)32個(gè)字,并可進(jìn)行存儲(chǔ)區(qū)數(shù)據(jù)傳送個(gè)字,并可進(jìn)行存儲(chǔ)區(qū)數(shù)據(jù)傳送 提供一個(gè)特殊計(jì)數(shù)寄存器提供一個(gè)特殊計(jì)數(shù)寄存器ctr,自動(dòng)減,自動(dòng)減1,用于循環(huán)處理,用于循環(huán)處理 例:例:for (i=n; i!=0; i=i-1) ;Loop: addi $t0,$t0,-1 bne &t0, $zero, loop指令系統(tǒng)舉例指令系統(tǒng)舉例: PowerPClw $t1,$a0+$s3lwu $t0, 4($s3)Loop: bc loop, ctr!=043 MMX(Microprocessor Media Extension)指令技術(shù)指

54、令技術(shù)u圖形圖形/像、音像、音/視頻多媒體信息處理特點(diǎn)視頻多媒體信息處理特點(diǎn) 多個(gè)短整數(shù)并行操作(如多個(gè)短整數(shù)并行操作(如8位圖形像素和位圖形像素和16位音頻信號(hào))位音頻信號(hào)) 頻繁的乘頻繁的乘-累加(如累加(如FIR濾波,矩陣運(yùn)算)濾波,矩陣運(yùn)算)uMMX的出發(fā)點(diǎn)的出發(fā)點(diǎn) 使用專(zhuān)門(mén)指令對(duì)大量數(shù)據(jù)進(jìn)行并行、復(fù)雜處理使用專(zhuān)門(mén)指令對(duì)大量數(shù)據(jù)進(jìn)行并行、復(fù)雜處理 處理的數(shù)據(jù)基本單位是處理的數(shù)據(jù)基本單位是8b、16b、32b、64b等等uMMX指令集由指令集由Intel提出,提出,1997年首次用于年首次用于P54C Pentium處理器處理器 引入新的數(shù)據(jù)類(lèi)型和通用寄存器引入新的數(shù)據(jù)類(lèi)型和通用寄存器

55、四種四種64位緊縮定點(diǎn)整數(shù)類(lèi)型(位緊縮定點(diǎn)整數(shù)類(lèi)型(8 x 1B、4 x 1W、2 x 2W、1 x 4W) 8個(gè)個(gè)64位通用寄存器位通用寄存器MX0MX7(借用(借用8個(gè)個(gè)80位浮點(diǎn)寄存器)位浮點(diǎn)寄存器) 采用采用SIMD(Single Instruction Multi Data)技術(shù))技術(shù) 單條指令同時(shí)并行處理多個(gè)數(shù)據(jù)元素單條指令同時(shí)并行處理多個(gè)數(shù)據(jù)元素 例如,一條指令完成圖像中例如,一條指令完成圖像中8個(gè)像素的并行操作個(gè)像素的并行操作 引入飽和(引入飽和(Situration)運(yùn)算)運(yùn)算 非飽和非飽和(環(huán)繞環(huán)繞)運(yùn)算:上溢時(shí)高位數(shù)據(jù)被截去;飽和運(yùn)算:上溢時(shí)結(jié)果取最大值運(yùn)算:上溢時(shí)高位數(shù)

56、據(jù)被截去;飽和運(yùn)算:上溢時(shí)結(jié)果取最大值例如,圖像插值運(yùn)算:若例如,圖像插值運(yùn)算:若a點(diǎn)亮度點(diǎn)亮度F3H,b點(diǎn)亮度點(diǎn)亮度1DH,對(duì),對(duì)a和和b線性插值結(jié)果為:線性插值結(jié)果為:環(huán)繞運(yùn)算:環(huán)繞運(yùn)算:(F3H+1DH)/2=10H/2=08H 插值點(diǎn)的亮度比插值點(diǎn)的亮度比1DH還低,不合理!還低,不合理!飽和運(yùn)算:飽和運(yùn)算: (F3H+1DH)/2=FFH/2=7FH 合理合理u在在Intel以后的處理器中又增加了以后的處理器中又增加了SSE、SSE2、SSE3,AVX等指令集等指令集 SSE(Streaming SIMD extensions)44第一講小結(jié)第一講小結(jié)u指令由指令由“操作碼操作碼”和

57、和“地址碼地址碼”兩部分組成。兩部分組成。u操作類(lèi)型操作類(lèi)型 傳送傳送 / 算術(shù)算術(shù) / 邏輯邏輯 / 移位移位 / 字符串字符串 / 轉(zhuǎn)移控制轉(zhuǎn)移控制 / 調(diào)用調(diào)用 / 中斷中斷 / 信號(hào)同步信號(hào)同步u操作數(shù)類(lèi)型操作數(shù)類(lèi)型 整數(shù)(帶符號(hào)、無(wú)符號(hào)、十進(jìn)制)、浮點(diǎn)數(shù)、位、位串整數(shù)(帶符號(hào)、無(wú)符號(hào)、十進(jìn)制)、浮點(diǎn)數(shù)、位、位串u地址碼的編碼要考慮:地址碼的編碼要考慮: 操作數(shù)的個(gè)數(shù)操作數(shù)的個(gè)數(shù) 尋址方式:立即尋址方式:立即 / 寄存器寄存器 / 寄間寄間 / 直接直接 / 間接間接 / 相對(duì)相對(duì) / 基址基址 / 變址變址 / 堆棧堆棧u操作碼的編碼要考慮:操作碼的編碼要考慮: 定長(zhǎng)操作碼定長(zhǎng)操作碼

58、 / 擴(kuò)展操作碼擴(kuò)展操作碼u條件碼的生成條件碼的生成 四種基本標(biāo)志:四種基本標(biāo)志:NF(SF) / VF(OF) / CF / ZFu指令設(shè)計(jì)風(fēng)格:指令設(shè)計(jì)風(fēng)格: 按操作數(shù)地址指定方式來(lái)分:按操作數(shù)地址指定方式來(lái)分: 累加器型累加器型 、堆棧型、堆棧型 、通用寄存器型、通用寄存器型、load/store型型 按指令格式的復(fù)雜度來(lái)分按指令格式的復(fù)雜度來(lái)分 復(fù)雜指令集計(jì)算機(jī)復(fù)雜指令集計(jì)算機(jī)CISC、精簡(jiǎn)指令集計(jì)算機(jī)、精簡(jiǎn)指令集計(jì)算機(jī)RISCu典型指令系統(tǒng)舉例典型指令系統(tǒng)舉例 Pentium / PowerPC / MMX 以下通過(guò)以下通過(guò)MIPS指令系統(tǒng),介紹如何在機(jī)器語(yǔ)言級(jí)表示程序指令系統(tǒng),介紹

59、如何在機(jī)器語(yǔ)言級(jí)表示程序45 第二講第二講 程序的機(jī)器級(jí)表示程序的機(jī)器級(jí)表示主要內(nèi)容主要內(nèi)容uMIPS指令格式指令格式 R-類(lèi)型類(lèi)型 / I-類(lèi)型類(lèi)型 / J-類(lèi)型類(lèi)型uMIPS寄存器寄存器 長(zhǎng)度長(zhǎng)度 / 個(gè)數(shù)個(gè)數(shù) / 功能分配功能分配 uMIPS操作數(shù)操作數(shù) 寄存器操作數(shù)寄存器操作數(shù) / 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù) / 立即數(shù)立即數(shù) / 文本文本 / 位位uMIPS指令尋址方式指令尋址方式 立即數(shù)尋址立即數(shù)尋址 / 寄存器尋址寄存器尋址 / 相對(duì)尋址相對(duì)尋址 / 偽直接尋址偽直接尋址 / 偏移尋址偏移尋址uMIPS指令類(lèi)型指令類(lèi)型 算術(shù)算術(shù) / 邏輯邏輯 / 數(shù)據(jù)傳送數(shù)據(jù)傳送 / 條件分支條件

60、分支 / 無(wú)條件轉(zhuǎn)移無(wú)條件轉(zhuǎn)移 uMIPS匯編語(yǔ)言形式匯編語(yǔ)言形式 操作碼的表示操作碼的表示 / 寄存器的表示寄存器的表示 / 存儲(chǔ)器數(shù)據(jù)表示存儲(chǔ)器數(shù)據(jù)表示u機(jī)器語(yǔ)言的解碼(反匯編)機(jī)器語(yǔ)言的解碼(反匯編)u高級(jí)語(yǔ)言、匯編語(yǔ)言、機(jī)器語(yǔ)言之間的轉(zhuǎn)換高級(jí)語(yǔ)言、匯編語(yǔ)言、機(jī)器語(yǔ)言之間的轉(zhuǎn)換u過(guò)程調(diào)用與堆棧過(guò)程調(diào)用與堆棧46MIPS指令格式指令格式u有三種指令格式有三種指令格式 R-Type兩個(gè)操作數(shù)和結(jié)果都在寄存器的運(yùn)算指令。如:兩個(gè)操作數(shù)和結(jié)果都在寄存器的運(yùn)算指令。如:sub rd, rs, rt I-Type 運(yùn)算指令:一個(gè)寄存器、一個(gè)立即數(shù)。如:運(yùn)算指令:一個(gè)寄存器、一個(gè)立即數(shù)。如:ori r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論