第9章 指令集結(jié)構(gòu)_第1頁
第9章 指令集結(jié)構(gòu)_第2頁
第9章 指令集結(jié)構(gòu)_第3頁
第9章 指令集結(jié)構(gòu)_第4頁
第9章 指令集結(jié)構(gòu)_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第九章第九章 指令集結(jié)構(gòu)指令集結(jié)構(gòu)課程課程目標(biāo)目標(biāo)第第6868章章計算機內(nèi)的信息表示方式及其運算(第計算機內(nèi)的信息表示方式及其運算(第6 6章)章)計算機內(nèi)實現(xiàn)信息處理和存儲的判定元件和存儲元件計算機內(nèi)實現(xiàn)信息處理和存儲的判定元件和存儲元件(第(第7 7章)章)基于馮基于馮諾依曼模型,將元件構(gòu)建為可以執(zhí)行由一組諾依曼模型,將元件構(gòu)建為可以執(zhí)行由一組指令組成的程序的計算機(第指令組成的程序的計算機(第8 8章)章)當(dāng)一個高級語言程序,如當(dāng)一個高級語言程序,如C C程序執(zhí)行時,在計算程序執(zhí)行時,在計算機內(nèi)部究竟發(fā)生了什么機內(nèi)部究竟發(fā)生了什么?首先,一個用高級語言編寫的程序必須被翻譯成該程首先,一個

2、用高級語言編寫的程序必須被翻譯成該程序期望執(zhí)行的那臺序期望執(zhí)行的那臺特定計算機特定計算機的一組指令的一組指令然后,在控制單元的指揮下被逐步處理然后,在控制單元的指揮下被逐步處理第第914914章章特定的目標(biāo)機器特定的目標(biāo)機器DLXDLX指令集結(jié)構(gòu)(指令集結(jié)構(gòu)(ISAISA)第第9 9章章指令集結(jié)構(gòu)是軟件指令和執(zhí)行命令的硬件之間的指令集結(jié)構(gòu)是軟件指令和執(zhí)行命令的硬件之間的接口接口I/OI/O設(shè)備管理設(shè)備管理高級語言程序翻譯高級語言程序翻譯指令集結(jié)構(gòu)指令集結(jié)構(gòu)指明了在一臺機器上編寫軟件時所要注意的全指明了在一臺機器上編寫軟件時所要注意的全部信息部信息規(guī)定了程序員規(guī)定了程序員使用機器語言編程使用機器

3、語言編程時的全部信息時的全部信息將將高級語言,如高級語言,如C C、PascalPascal或或FortranFortran、COBOLCOBOL寫寫的程序翻譯成機器語言,的程序翻譯成機器語言,ISAISA也提供了關(guān)于該計也提供了關(guān)于該計算機的所有可用信息算機的所有可用信息ISAISA規(guī)定了存儲器的組織,寄存器集和指令集,規(guī)定了存儲器的組織,寄存器集和指令集,包括操作碼,數(shù)據(jù)類型和尋址模式包括操作碼,數(shù)據(jù)類型和尋址模式存儲器組織存儲器組織DLXDLX2 23232(即(即4G4G)個單元)個單元8 8位位數(shù)據(jù)的存儲和排列順序數(shù)據(jù)的存儲和排列順序字長字長:3232位,位,4 4個字節(jié)個字節(jié)左邊的

4、字節(jié)被稱為高字節(jié)左邊的字節(jié)被稱為高字節(jié)右邊的字節(jié)被稱為低字節(jié)右邊的字節(jié)被稱為低字節(jié)數(shù)據(jù)的存儲和排列順序數(shù)據(jù)的存儲和排列順序大端,大端,Big Endian,Big Endian,高位優(yōu)先高位優(yōu)先小端,小端,Little EndianLittle Endian高位優(yōu)先高位優(yōu)先DLXDLX將字的高位字節(jié)存放在內(nèi)存的低地址端,將字的高位字節(jié)存放在內(nèi)存的低地址端,低位字節(jié)存放在高地址端低位字節(jié)存放在高地址端在地址在地址x4000 0000 x4000 0003x4000 0000 x4000 0003的的4 4個存儲單元之中,存放個存儲單元之中,存放了一個字了一個字當(dāng)訪問這個字時,只需使用其當(dāng)訪問這個

5、字時,只需使用其起始地址起始地址x4000 0000 x4000 0000即可即可這個字是這個字是x1234 5678x1234 5678x0000 0000 x0000 0001x4000 0000 x4000 00010011 01000111 1000 x4000 0002x4000 0003xFFFF FFFF0001 00100101 0110邊界對齊邊界對齊字字的起始地址必須是的起始地址必須是4 4的倍數(shù),即邊界對齊的倍數(shù),即邊界對齊從存儲器中獲得一個從存儲器中獲得一個8 8位的字節(jié)時,如位的字節(jié)時,如ASCIIASCII碼,碼,只需訪問只需訪問1 1個存儲單元個存儲單元寄存器寄存

6、器DLXDLX在一個機器周期內(nèi)訪問的附加的臨時存儲空間在一個機器周期內(nèi)訪問的附加的臨時存儲空間通用寄存器集通用寄存器集(GPRGPR)存儲在每一個寄存器中的位數(shù)通常是一個字存儲在每一個寄存器中的位數(shù)通常是一個字,3232位位被唯一識別被唯一識別3232個通用寄存器,使用個通用寄存器,使用5 5位編碼來識別,分別被位編碼來識別,分別被標(biāo)記為標(biāo)記為R0R0、R1R31R1R31注意,注意,R0R0寄存器寄存器中的數(shù)據(jù)必須為零中的數(shù)據(jù)必須為零寄存器堆寄存器堆R000000000000000000000000000000000R100000000000000000000000000000011R200

7、000000000000000000000000000011R300000000000000000000000000000111R411111111111111111111111111111110R2911111111111111111111111111111100R3011111111111111111111111111111010R3111111111111111111111111111111000R000000000000000000000000000000000R100000000000000000000000000000011R2000000000000000000000000000

8、00101R300000000000000000000000000000111R411111111111111111111111111111110R2911111111111111111111111111111100R3011111111111111111111111111111010R311111111111111111111111111111100031 2625 21 20 16 15 11 10 6 5 00 0 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 0 1 00 0 0 0 00 0 0 0 0 1R-類型類型R0R1R2未用未用ADD浮點寄存器浮點寄存器32

9、32個浮點寄存器,用于單精度或雙精度計算個浮點寄存器,用于單精度或雙精度計算使用使用5 5位編碼來識別,分別被標(biāo)記為位編碼來識別,分別被標(biāo)記為F0F0、F1F31F1F31每個寄存器也是每個寄存器也是3232位位單精度數(shù)只需一個浮點寄存器單精度數(shù)只需一個浮點寄存器雙精度數(shù)則需要兩個浮點寄存器雙精度數(shù)則需要兩個浮點寄存器指令集指令集指令指令:操作碼(指令讓計算機做的事情)和操操作碼(指令讓計算機做的事情)和操作數(shù)(計算機操作的對象)作數(shù)(計算機操作的對象)指令集是由一組操作碼、數(shù)據(jù)類型和尋址模式指令集是由一組操作碼、數(shù)據(jù)類型和尋址模式定義的定義的尋址模式尋址模式?jīng)Q定了如何計算將要讀取決定了如何計

10、算將要讀取/ /存儲的存儲存儲的存儲單元的地址單元的地址CISCCISC和和RISCRISCCISCCISC(Complex Instruction Set ComputerComplex Instruction Set Computer,復(fù)雜指令集計算機)復(fù)雜指令集計算機)具有復(fù)雜化的傾向,提供了功能強大的復(fù)雜指令,開具有復(fù)雜化的傾向,提供了功能強大的復(fù)雜指令,開發(fā)程序比較容易,但是由于指令復(fù)雜,指令執(zhí)行效率發(fā)程序比較容易,但是由于指令復(fù)雜,指令執(zhí)行效率較低較低IntelIntel的的x86x86指令集指令集RISCRISC(Reduced Instruction Set ComputerR

11、educed Instruction Set Computer,精簡指令集計算機)精簡指令集計算機)RISCRISC的指令集較小,指令執(zhí)行效率比的指令集較小,指令執(zhí)行效率比CISCCISC高,但是,高,但是,在開發(fā)程序方面則有所欠缺在開發(fā)程序方面則有所欠缺MIPSMIPS、SUNSUN的的SPARCSPARC、IBMIBM的的PowerPCPowerPC指令格式指令格式I-I-類型類型R-R-類型類型J-J-類型類型ADDADD指令指令:R-R-類型,函數(shù)為類型,函數(shù)為ADDADD,二進制補碼整,二進制補碼整數(shù)數(shù)31 26 25 2120 1615 0操作碼操作碼SR1DRImm1631 26

12、 25 21 20 16 15 1110 65 0操作碼操作碼SR1SR2DR未用未用函數(shù)函數(shù)31 26 25 0操作碼操作碼PCOffset26操作碼操作碼由指令的由指令的31:2631:26位定義,有位定義,有6464種可能種可能R R類型類型指令的指令的31:2631:26位為位為0000000000005:05:0位定義了函數(shù),有位定義了函數(shù),有6464種可能的函數(shù)種可能的函數(shù)只定義了只定義了9191條指令條指令四種類型四種類型按照功能分為四種類型按照功能分為四種類型算術(shù)算術(shù)/ /邏輯運算邏輯運算處理整數(shù)信息處理整數(shù)信息數(shù)據(jù)傳送數(shù)據(jù)傳送在存儲器和寄存器之間傳送數(shù)據(jù)在存儲器和寄存器之間傳

13、送數(shù)據(jù)在寄存器在寄存器/ /存儲器和輸入存儲器和輸入/ /輸出設(shè)備之間傳送數(shù)據(jù)輸出設(shè)備之間傳送數(shù)據(jù)控制控制改變指令被執(zhí)行的順序改變指令被執(zhí)行的順序浮點浮點處理浮點數(shù)信息處理浮點數(shù)信息數(shù)據(jù)類型數(shù)據(jù)類型如果如果ISAISA的操作碼能對以某種表示法編碼的信息的操作碼能對以某種表示法編碼的信息進行運算,這種表示法就被稱為數(shù)據(jù)類型進行運算,這種表示法就被稱為數(shù)據(jù)類型DLXDLX的的ISAISA支持的數(shù)據(jù)類型支持的數(shù)據(jù)類型二進制補碼整數(shù)二進制補碼整數(shù)包括包括8 8位、位、1616位和位和3232位整數(shù)位整數(shù)浮點數(shù)浮點數(shù)包括包括3232位單精度和位單精度和6464位雙精度浮點數(shù)位雙精度浮點數(shù)尋址模式尋址模式

14、一種計算將要讀取一種計算將要讀取/ /存儲的存儲單元的地址的機存儲的存儲單元的地址的機制制DLXDLX只支持一種尋址模式:基址只支持一種尋址模式:基址+ +偏移量偏移量算術(shù)算術(shù)/ /邏輯運算指令邏輯運算指令對整數(shù)進行處理對整數(shù)進行處理3737個算術(shù)邏輯運算指令:加、減、乘、除、與、個算術(shù)邏輯運算指令:加、減、乘、除、與、或、異或、移位、比較、加載高位立即數(shù)等或、異或、移位、比較、加載高位立即數(shù)等除加載高位立即數(shù)指令外,其他運算指令執(zhí)行除加載高位立即數(shù)指令外,其他運算指令執(zhí)行的都是二元運算的都是二元運算根據(jù)其操作數(shù)來源不同根據(jù)其操作數(shù)來源不同,分為,分為I-I-類型和類型和R-R-類型兩類型兩種

15、指令格式種指令格式第一個源操作數(shù)都來自于指令第一個源操作數(shù)都來自于指令25:2125:21所標(biāo)識的所標(biāo)識的寄存器中寄存器中第一個第一個源操作數(shù)源操作數(shù)來自寄存器來自寄存器3232個整數(shù)寄存器,個整數(shù)寄存器,5 5位編碼標(biāo)識位編碼標(biāo)識25:2125:21,SR1SR1I-I-類型類型R-R-類型類型31 26 25 2120 1615 0操作碼操作碼SR1DRImm1631 26 25 21 20 16 15 1110 65 0操作碼操作碼SR1SR2DR未用未用函數(shù)函數(shù)I-I-類型運算指令類型運算指令第二個源操作數(shù)第二個源操作數(shù)來自于指令來自于指令15:015:0進行符號擴展得到的進行符號擴展

16、得到的3232位整數(shù),位整數(shù),即即立即立即數(shù)數(shù)目標(biāo)操作數(shù)目標(biāo)操作數(shù)來自于指令來自于指令20:1620:16所標(biāo)識的寄存器中所標(biāo)識的寄存器中31 26 25 2120 1615 0操作碼操作碼SR1DRImm16ADDIADDIADDADD代表加,代表加,I I代表立即數(shù)(代表立即數(shù)(ImmediateImmediate)第一個操作數(shù)第一個操作數(shù)R4R4第二個源操作數(shù)在指令中第二個源操作數(shù)在指令中15:015:0位符號擴展(位符號擴展(SEXTSEXT)目標(biāo)操作數(shù)寫入目標(biāo)操作數(shù)寫入R1R131 26 25 21 20 16 15 00 0 0 0 0 10 0 1 0 0 0 0 0 0 1 0

17、 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0ADDIR4R114寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3R40000 0000 0000 0000 0000 0000 0000 01106R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10000 0000 0000 0000 0000 0000 0001 010020R2R3R40000 0000 0000 0000 0000 0000 0000 01106R29R30R31ADDIA

18、DDI問題:哪些整數(shù)可以用作立即數(shù)?問題:哪些整數(shù)可以用作立即數(shù)?31 26 25 21 20 16 15 00 0 0 0 0 10 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0ADDIR4R114ALU3232ADDR0R1R2R3R4R30R310000000000000000000000000000011000000000000000000000000000010100000001 00100 00001 0000000000001110IRADDIR1R414SEXT16x0000 000E324123SUBISUBI減(減(Su

19、btractSubtract)指令執(zhí)行結(jié)果指令執(zhí)行結(jié)果寄存器寄存器R4R4減減1 1R4R4( (R4)-1R4)-1在同一條指令中一個寄存器既可以作為源操作在同一條指令中一個寄存器既可以作為源操作數(shù)也可以作為目標(biāo)操作數(shù)數(shù)也可以作為目標(biāo)操作數(shù)對對DLXDLX的所有運算指令都是適用的的所有運算指令都是適用的31 26 25 21 20 16 15 00 0 0 0 1 10 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1SUBIR4R41ANDIANDI指令執(zhí)行結(jié)果:寄存器指令執(zhí)行結(jié)果:寄存器R2R2被清空被清空R2R2( (R2) AND 0

20、R2) AND 0結(jié)果結(jié)果,R2R2的的3232位全部為位全部為0 031 2625 21 20 16 15 00 0 1 0 0 10 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ANDIR2R20寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2*R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R20000 0000 0000 0000 0000 0000 0000 00000R3R4R29R30R

21、31ORIORI指令執(zhí)行結(jié)果:寄存器指令執(zhí)行結(jié)果:寄存器R3R3被設(shè)為被設(shè)為-1-1R3R3的的3232位全部為位全部為1 131 2625 21 20 16 15 00 0 1 0 1 00 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1ORIR3R3-1寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3*R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R31111 1111 1111 1111 1

22、111 1111 1111 1111-1R4R29R30R31XORIXORI指令執(zhí)行結(jié)果:寄存器指令執(zhí)行結(jié)果:寄存器R5R5被按位取反被按位取反31 26 25 21 20 16 15 00 0 1 0 1 10 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1XORIR5R5-1寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R50101 0101 0101 0101 0101 0101 0101 0101x5555 5555R29R30R31寄存器堆寄存器堆R00000 0000 0

23、000 0000 0000 0000 0000 00000R1R51010 1010 1010 1010 1010 1010 1010 1010 xAAAA AAAAR29R30R31SLEISLEI設(shè)置是否小于等于條件操作設(shè)置是否小于等于條件操作(Set on Less than Set on Less than or Equal toor Equal to)當(dāng)指令當(dāng)指令25:2125:21表示的寄存器中的值小于等于表示的寄存器中的值小于等于15:015:0表示的立即數(shù)時,表示的立即數(shù)時,20:1620:16表示的寄存器中的值被表示的寄存器中的值被設(shè)為設(shè)為1 1(真),否則設(shè)為(真),否則設(shè)

24、為0 0(假)(假)如果如果R6=5R6=5,指令執(zhí)行結(jié)果為:寄存器指令執(zhí)行結(jié)果為:寄存器R3R3被設(shè)為被設(shè)為1 1(因(因為為R6R6的值小于的值小于1010,條件為真),條件為真)31 26 25 21 20 16 15 00 1 0 0 1 00 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0SLEIR6R310寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3*R60000 0000 0000 0000 0000 0000 0000 01015R29R30R31寄存器堆寄存

25、器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R30000 0000 0000 0000 0000 0000 0000 00011R60000 0000 0000 0000 0000 0000 0000 01015R29R30R31SLTISLTI設(shè)置是否小于條件操作(設(shè)置是否小于條件操作(Set on Less thanSet on Less than)如果如果R6=5R6=5,指令執(zhí)行結(jié)果為:寄存器指令執(zhí)行結(jié)果為:寄存器R3R3被設(shè)為被設(shè)為1 1(因為(因為R6R6的值小于的值小于1010,條件為真),條件為真)31 2625 2120 1

26、615 00 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0SLTIR6R310寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3*R60000 0000 0000 0000 0000 0000 0000 01015R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R30000 0000 0000 0000 0000 0000 0000 00011R60000 0000 0000 0

27、000 0000 0000 0000 01015R29R30R31SEQISEQI設(shè)置是否相等條件操作(設(shè)置是否相等條件操作(Set on Equal toSet on Equal to)如果如果R6=5R6=5,指令執(zhí)行結(jié)果為:寄存器指令執(zhí)行結(jié)果為:寄存器R3R3被設(shè)為被設(shè)為0 0(因為(因為R6R6的值不等于的值不等于1010,條件為假),條件為假)31 26 25 21 20 16 15 00 1 0 1 0 00 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0SEQIR6R310寄存器堆寄存器堆R00000 0000 0000 000

28、0 0000 0000 0000 00000R1R2R3*R60000 0000 0000 0000 0000 0000 0000 01015R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R30000 0000 0000 0000 0000 0000 0000 00000R60000 0000 0000 0000 0000 0000 0000 01015R29R30R31SRAISRAI算術(shù)右移算術(shù)右移立即數(shù)操作(立即數(shù)操作(Shift Right Shift Right ArithmeticArithmetic)

29、對指令對指令25:2125:21表示的寄存器中的值進行算術(shù)右表示的寄存器中的值進行算術(shù)右移操作,所移位數(shù)為移操作,所移位數(shù)為15:015:0表示的立即數(shù)表示的立即數(shù)31 2625 21 20 16 15 00 0 1 1 1 10 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0SRAIR7R32SRAISRAI如果如果R7=-10R7=-10,指令執(zhí)行結(jié)果為:寄存器指令執(zhí)行結(jié)果為:寄存器R3R3的值的值為為xFFFF FFFDxFFFF FFFD,即,即-3-3(注意,(注意,R7R7是負數(shù),左邊補是負數(shù),左邊補1 1)R7R7的值除以的值除

30、以4 4的結(jié)果,即算術(shù)右移表示作除法的結(jié)果,即算術(shù)右移表示作除法31 2625 21 20 16 15 00 0 1 1 1 10 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0SRAIR7R32寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3*R71111 1111 1111 1111 1111 1111 1111 0110-10R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R31111 1111

31、1111 1111 1111 1111 1111 1101-3R71111 1111 1111 1111 1111 1111 1111 0110-10R29R30R31SLLISLLI左移立即數(shù)操作(左移立即數(shù)操作(Shift Left LogicalShift Left Logical)對指令對指令25:2125:21表示的寄存器中的值進行左移操表示的寄存器中的值進行左移操作,所移位數(shù)為作,所移位數(shù)為15:015:0表示的立即數(shù),右邊補表示的立即數(shù),右邊補0 031 2625 21 20 16 15 00 0 1 1 0 10 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0

32、0 0 0 0 0 0 0 1 0SLLIR7R32SLLISLLI如果如果R7=-10R7=-10,指令執(zhí)行結(jié)果為:寄存器指令執(zhí)行結(jié)果為:寄存器R3R3的值的值為為xFFFF FFD8xFFFF FFD8,即,即-40-40R7R7的值乘的值乘4 4的結(jié)果,即向左移表示作乘法,左移的結(jié)果,即向左移表示作乘法,左移1 1位就是位就是乘一次乘一次2 231 2625 21 20 16 15 00 0 1 1 0 10 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0SLLIR7R32寄存器堆寄存器堆R00000 0000 0000 0000 00

33、00 0000 0000 00000R1R2R3*R71111 1111 1111 1111 1111 1111 1111 0110-10R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R31111 1111 1111 1111 1111 1111 1101 1000-40R71111 1111 1111 1111 1111 1111 1111 0110-10R29R30R31SRLISRLI邏輯右移立即數(shù)操作(邏輯右移立即數(shù)操作(Shift Right LogicalShift Right Logical)對指令對

34、指令25:2125:21表示的寄存器中的值進行邏輯右表示的寄存器中的值進行邏輯右移操作,所移位數(shù)為移操作,所移位數(shù)為15:015:0表示的立即數(shù)表示的立即數(shù)邏輯右移的含義是:移位后,左邊補邏輯右移的含義是:移位后,左邊補0 0如果如果R7=-10R7=-10,指令執(zhí)行結(jié)果為:寄存器指令執(zhí)行結(jié)果為:寄存器R3R3的值為的值為x3FFF x3FFF FFFDFFFD31 2625 21 20 16 15 00 0 1 1 1 00 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0SRLIR7R32寄存器堆寄存器堆R00000 0000 0000 0

35、000 0000 0000 0000 00000R1R2R3R71111 1111 1111 1111 1111 1111 1111 0110-10R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R30011 1111 1111 1111 1111 1111 1111 1101x3FFF FFFDR71111 1111 1111 1111 1111 1111 1111 0110-10R29R30R31LHILHILHILHI指令指令:加載高位立即數(shù)操作加載高位立即數(shù)操作,將立即數(shù)左移將立即數(shù)左移1616位后,加載到目

36、標(biāo)操作數(shù)中位后,加載到目標(biāo)操作數(shù)中R2R2 x12340000 x12340000R2R2 x12340000+x00005678 x12340000+x00005678,R2R2 x12345678 x12345678將某個較大的常數(shù)賦值給某個寄存器將某個較大的常數(shù)賦值給某個寄存器31 26 25 2120 1615 00 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0LHIR2x123431 26 25 2120 1615 00 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1

37、 0 0 1 1 1 1 0 0 0ADDIR2R2x5678寄存器堆寄存器堆R00R1R2*R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 0000R1R20001 0010 0011 0100 0000 0000 0000 0000R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 0000R1R20001 0010 0011 0100 0101 0110 0111 1000R3R4R29R30R31R-R-類型運算指令類型運算指令第二個源操作數(shù)第二個源操作數(shù)

38、來自于指令來自于指令20:1620:16所標(biāo)識的寄存器中所標(biāo)識的寄存器中目標(biāo)操作數(shù)目標(biāo)操作數(shù)來自于指令來自于指令15:1115:11所標(biāo)識的寄存器中所標(biāo)識的寄存器中31 26 25 21 20 16 15 1110 65 0操作碼操作碼SR1SR2DR未用未用函數(shù)函數(shù)ADDADD31 2625 21 20 16 15 11 10 6 5 00 0 0 0 0 00 0 1 0 0 0 0 0 1 0 0 0 0 0 10 0 0 0 00 0 0 0 0 1R-類型類型R4R2R1未用未用ADD操作碼操作碼000000000000,R-R-類型類型5:05:0為為000001000001,AD

39、DADD函數(shù)函數(shù)寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1*R20000 0000 0000 0000 0000 0000 0000 00113R3R40000 0000 0000 0000 0000 0000 0000 01106R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10000 0000 0000 0000 0000 0000 0000 10019R20000 0000 0000 0000 0000 0000 0000 00113R3R40000 0

40、000 0000 0000 0000 0000 0000 01106R29R30R31ADDADD除除LHILHI指令外,其他運算指令均有指令外,其他運算指令均有I-I-類型和類型和R-R-類型指令,其解釋均與類型指令,其解釋均與之之類似類似31 2625 21 20 16 15 11 10 6 5 00 0 0 0 0 00 0 1 0 0 0 0 0 1 0 0 0 0 0 10 0 0 0 00 0 0 0 0 1R-類型類型R4R2R1未用未用ADDALU3232ADDR0R1R2R3R4R30R310000000000000000000000000000011000000000000

41、000000000000000001001412300000000000000000000000000000011數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令存儲器和通用寄存器之間存儲器和通用寄存器之間:本章:本章寄存器和輸入寄存器和輸入/ /輸出設(shè)備之間輸出設(shè)備之間:第第1212章章整數(shù)寄存器與特殊寄存器之間整數(shù)寄存器與特殊寄存器之間:第第1313章章還包括還包括整數(shù)寄存器與浮點數(shù)寄存器之間,存儲整數(shù)寄存器與浮點數(shù)寄存器之間,存儲器和輸入器和輸入/ /輸出設(shè)備之間傳送數(shù)據(jù)輸出設(shè)備之間傳送數(shù)據(jù)加載加載/ /存儲存儲加載(加載(loadload):將數(shù)據(jù)從存儲器移動到寄存器將數(shù)據(jù)從存儲器移動到寄存器的過程的過程存儲

42、(存儲(storestore):將數(shù)據(jù)從寄存器移動到存儲器將數(shù)據(jù)從寄存器移動到存儲器的過程的過程LBLB和和SBSB:加載和存儲一個加載和存儲一個8 8位的位的字節(jié)字節(jié),在一個存,在一個存儲單元和一個寄存器之間傳送數(shù)據(jù)儲單元和一個寄存器之間傳送數(shù)據(jù)LWLW和和SWSW:加載和存儲一個加載和存儲一個3232位的位的字字,在,在4 4個連續(xù)個連續(xù)的存儲單元和一個寄存器之間傳送數(shù)據(jù)的存儲單元和一個寄存器之間傳送數(shù)據(jù)I-I-類型類型指令的指令的25:2125:21位指位指明明了源操作數(shù)了源操作數(shù)SR1SR120:1620:16位指明了目標(biāo)操作數(shù)位指明了目標(biāo)操作數(shù)DRDR加載加載:DRDR寄存器將在從存

43、儲器讀取數(shù)據(jù)之后,寄存器將在從存儲器讀取數(shù)據(jù)之后,包含該數(shù)值(指令完成時)包含該數(shù)值(指令完成時)存儲存儲:DRDR寄存器則包含了要被寫到存儲器中的寄存器則包含了要被寫到存儲器中的數(shù)值數(shù)值如何在如何在3232位的指令中聲明一個位的指令中聲明一個3232位的存儲單元位的存儲單元地址?地址?“基址基址寄存器寄存器+ +偏移量偏移量”的尋址模式的尋址模式31 26 25 2120 1615 0操作碼操作碼SR1DRImm16基址寄存器基址寄存器+ +偏移量偏移量存儲單元的地址存儲單元的地址:將將1616位的偏移量進行符號擴位的偏移量進行符號擴展后,與一個基址寄存器相加得到展后,與一個基址寄存器相加得

44、到1616位的偏移量是從指令中得到的,是位的偏移量是從指令中得到的,是15:015:0位位偏移量值偏移量值:在在-2-21515到到2 21515-1-1之間的二進制補碼整數(shù)之間的二進制補碼整數(shù)基址寄存器則使用指令的基址寄存器則使用指令的25:2125:21位來說明,即位來說明,即SR1SR1LWLW31 26 25 21 20 16 15 001110000010000010001001000 110100LWR2R1x1234地址地址x5678 12340000 1111 x5678 12350000 1111x5678 12360000 1111x5678 12370000 1111寄存

45、器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1*R20101 0110 0111 1000 0000 0000 0000 0000 x5678 0000R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10000 1111 0000 1111 0000 1111 0000 1111x0F0F 0F0FR20101 0110 0111 1000 0000 0000 0000 0000R3R4R29R30R31基址基址+ +偏移量偏移量(R2R2)+ x0000 12

46、34+ x0000 1234x56781234x56781234LWLW31 26 25 21 20 16 15 001110000010000010001001000 110100LWR2R1x123432R0R1R2R3R29R30R310000 1111 0000 1111 0000 1111 0000 1111IRLWR2x1234SEXT15:0位位x00001234R1011100 00010 00001 0001 0010 0011 01000101 0110 0111 1000 0000 0000 0000 0000ALU3232ADD4存儲器存儲器1234將將x5678123

47、4 x56781234 x56781237x56781237中的中的內(nèi)容(假設(shè)其值內(nèi)容(假設(shè)其值為為x0F0F0F0Fx0F0F0F0F)加載到加載到R1R1SWSW“基址(基址(R2R2)+ +偏移量(偏移量(x0000 1234x0000 1234)”計算計算的結(jié)果是的結(jié)果是x56781234x56781234取出取出R1R1中的數(shù)值中的數(shù)值(如(如x0F0F0F0Fx0F0F0F0F),存儲于,存儲于x56781234x56781237x56781234x56781237單元中單元中31 2625 21 20 16 15 00 1 1 1 0 10 0 0 1 0 0 0 0 0 1 0

48、 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0SWR2R1x1234寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10000 1111 0000 1111 0000 1111 0000 1111x0F0F 0F0FR20101 0110 0111 1000 0000 0000 0000 0000 x5678 0000R3R4R29R30R31地址地址x5678 12340000 1111 x5678 12350000 1111x5678 12360000 1111x5678 12370000 1111R0R0絕對地址絕對地址

49、如果如果SR1SR1為為R0R0,由于,由于R0=R0=零,零,“基址基址+ +偏移量偏移量”的的計算結(jié)果就是計算結(jié)果就是IR15:0IR15:0經(jīng)過符號擴展得到的值,經(jīng)過符號擴展得到的值,該值就是訪問存儲器的地址該值就是訪問存儲器的地址加載指令不可使用加載指令不可使用R0R0作為目標(biāo)寄存器作為目標(biāo)寄存器存儲指令使用存儲指令使用R0R0作為作為DRDR表示存儲到存儲單元的是數(shù)值表示存儲到存儲單元的是數(shù)值0 0邊界對齊邊界對齊LW/SWLW/SW指令指令:加載加載/ /存儲一個存儲一個3232位的字位的字“基址基址+ +偏移量偏移量”的計算結(jié)果是的計算結(jié)果是4 4個連續(xù)的存儲單個連續(xù)的存儲單元的

50、低地址,必須是元的低地址,必須是4 4的倍數(shù)的倍數(shù)LBLB基址基址+ +偏移量偏移量(R2R2)+ x0000 1234+ x0000 1234x56781234x56781234符號擴展符號擴展到到3232位位31 2625 21 20 16 15 00 1 0 1 1 00 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0LBR2R1x1234地址地址x5678 12340000 1111 x5678 1235*x5678 1236*x5678 1237*寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 000

51、0 00000R1*R20101 0110 0111 1000 0000 0000 0000 0000 x5678 0000R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10000 0000 0000 0000 0000 0000 0000 111115R20101 0110 0111 1000 0000 0000 0000 0000R3R4R29R30R31SBSB基址基址+ +偏移量偏移量(R2R2)+ x0000 1234+ x0000 1234x56781234x56781234R1R1中數(shù)值中數(shù)值低低8

52、 8位位31 2625 21 20 16 15 00 1 0 1 1 10 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0SBR2R1x1234寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10000 1111 0000 1111 0000 1111 0000 1111x0F0F 0F0FR20101 0110 0111 1000 0000 0000 0000 0000 x5678 0000R3R4R29R30R31地址地址x5678 12340000 1111 x5678 1235*x

53、5678 1236*x5678 1237*示例示例地址地址31 2625 2120 1615 1110 65 0 x4000 000000110000000000010100 0000 0000 0000LHI R1, x4000 x4000 000400000100000000100000 0000 0000 0101ADDI R2, R0, 5x4000 000801110100001000100000 0000 0001 0000SW 16(R1), R2x4000 000C01110000001000110000 0000 0001 0000LW R3, 16(R1)x4000 001

54、0寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3R4R29R30R31LHILHI地址地址31 2625 2120 1615 1110 65 0 x4000 000000110000000000010100 0000 0000 0000LHI R1, x4000 x4000 000400000100000000100000 0000 0000 0101ADDI R2, R0, 5x4000 000801110100001000100000 0000 0001 0000SW 16(R1), R2x4000 000C01110000

55、001000110000 0000 0001 0000LW R3, 16(R1)x4000 0010R1R1 x4000 0000 x4000 0000寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R1R2R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10100 0000 0000 0000 0000 0000 0000 0000 x4000 0000R2R3R4R29R30R31ADDIADDI地址地址31 2625 2120 1615 1110 65 0

56、x4000 000000110000000000010100 0000 0000 0000LHI R1, x4000 x4000 000400000100000000100000 0000 0000 0101ADDI R2, R0, 5x4000 000801110100001000100000 0000 0001 0000SW 16(R1), R2x4000 000C01110000001000110000 0000 0001 0000LW R3, 16(R1)x4000 0010R2R2 (R0R0)+ 5+ 5寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000

57、 0000 00000R10100 0000 0000 0000 0000 0000 0000 0000 x4000 0000R2R3R4R29R30R31寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10100 0000 0000 0000 0000 0000 0000 0000 x4000 0000R20000 0000 0000 0000 0000 0000 0000 01015R3R4R29R30R31SWSW地址地址31 2625 2120 1615 1110 65 0 x4000 00000011000000000001010

58、0 0000 0000 0000LHI R1, x4000 x4000 000400000100000000100000 0000 0000 0101ADDI R2, R0, 5x4000 000801110100001000100000 0000 0001 0000SW 16(R1), R2x4000 000C01110000001000110000 0000 0001 0000LW R3, 16(R1)x4000 00100000 0000 0000 0000 0000 0000 0000 0101基址基址+ +偏移量:偏移量: x4000 0000 + x0000 0010 x4000

59、0000 + x0000 0010寄存器堆寄存器堆R00000 0000 0000 0000 0000 0000 0000 00000R10100 0000 0000 0000 0000 0000 0000 0000 x4000 0000R20000 0000 0000 0000 0000 0000 0000 01015R3R4R29R30R31地址地址x4000 00100000 0000 x4000 00110000 0000 x4000 00120000 0000 x4000 00130000 0101LWLW地址地址31 2625 2120 1615 1110 65 0 x4000 0

60、00000110000000000010100 0000 0000 0000LHI R1, x4000 x4000 000400000100000000100000 0000 0000 0101ADDI R2, R0, 5x4000 000801110100001000100000 0000 0001 0000SW 16(R1), R2x4000 000C01110000001000110000 0000 0001 0000LW R3, 16(R1)x4000 00100000 0000 0000 0000 0000 0000 0000 0101基址基址+ +偏移量:偏移量:x4000 000

溫馨提示

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

評論

0/150

提交評論