計算機組成與結(jié)構(gòu)2計算機指令_第1頁
計算機組成與結(jié)構(gòu)2計算機指令_第2頁
計算機組成與結(jié)構(gòu)2計算機指令_第3頁
計算機組成與結(jié)構(gòu)2計算機指令_第4頁
計算機組成與結(jié)構(gòu)2計算機指令_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、201220121華東師范大學計算機科學技術系2 2 計算機指令計算機指令201220122華東師范大學計算機科學技術系2 計算機指令2.1 2.1 概述概述2.2 2.2 計算機硬件的操作計算機硬件的操作2.3 2.3 計算機中指令的表示計算機中指令的表示2.4 2.4 計算機硬件的過程支持計算機硬件的過程支持2.5 2.5 人機交互人機交互2.6 2.6 指令和數(shù)據(jù)的尋址方式指令和數(shù)據(jù)的尋址方式2.7 2.7 匯編實例匯編實例2.8 2.8 實例:實例:IA-32IA-32指令指令201220123華東師范大學計算機科學技術系2 指令系統(tǒng)2.1 2.1 概述概述201220124華東師范大

2、學計算機科學技術系2.1 2.1 概述概述一、指令系統(tǒng)一、指令系統(tǒng) 指令指令是指計算機執(zhí)行某種操作的命令是指計算機執(zhí)行某種操作的命令從計算機組成的層次結(jié)構(gòu)來說,計算機的從計算機組成的層次結(jié)構(gòu)來說,計算機的指令有:指令有:微指令微指令:微程序級的命令,它屬于硬件:微程序級的命令,它屬于硬件機器指令機器指令:簡稱指令,每條指令可完成一:簡稱指令,每條指令可完成一 種獨立的操作種獨立的操作宏指令宏指令:由若干條機器指令組成的軟件指:由若干條機器指令組成的軟件指 令,它屬于軟件令,它屬于軟件201220125華東師范大學計算機科學技術系一、指令系統(tǒng)一、指令系統(tǒng) 指令系統(tǒng):指令系統(tǒng): 一臺計算機中所有機

3、器指令的集合一臺計算機中所有機器指令的集合是表征一臺計算機性能的重要因素是表征一臺計算機性能的重要因素 指令系統(tǒng)是軟件、硬件的主要交界面,指令指令系統(tǒng)是軟件、硬件的主要交界面,指令 的格式與功能不僅直接影響到機器的硬件結(jié)的格式與功能不僅直接影響到機器的硬件結(jié) 構(gòu),也直接影響到系統(tǒng)軟件,影響到機器的構(gòu),也直接影響到系統(tǒng)軟件,影響到機器的 適用范圍適用范圍 設計目標:使硬件設計及編譯器構(gòu)造簡單設計目標:使硬件設計及編譯器構(gòu)造簡單 以最低的成本獲得最好的性能以最低的成本獲得最好的性能201220126華東師范大學計算機科學技術系一、指令系統(tǒng)一、指令系統(tǒng)計算機指令系統(tǒng)的發(fā)展計算機指令系統(tǒng)的發(fā)展 形成系

4、列計算機形成系列計算機 指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相 同的一系列計算機同的一系列計算機 解決了軟件兼容問題,大大減少了軟件解決了軟件兼容問題,大大減少了軟件 開發(fā)費用開發(fā)費用 CISCCISC與與RISCRISC 復雜指令集與精簡指令集復雜指令集與精簡指令集 201220127華東師范大學計算機科學技術系2.1 概述概述二、對指令系統(tǒng)性能的要求二、對指令系統(tǒng)性能的要求 完備性:要求指令系統(tǒng)豐富、功能齊全、完備性:要求指令系統(tǒng)豐富、功能齊全、 使用方便使用方便 有效性:利用該指令系統(tǒng)所編寫的程序有效性:利用該指令系統(tǒng)所編寫的程序 能夠高效率的運行能夠高效率

5、的運行 高效率主要表現(xiàn)在程序占據(jù)存儲空間小、高效率主要表現(xiàn)在程序占據(jù)存儲空間小、 執(zhí)行速度快執(zhí)行速度快一般來說,一個功能更強、更完善的指令一般來說,一個功能更強、更完善的指令系統(tǒng),必定有更好的有效性系統(tǒng),必定有更好的有效性201220128華東師范大學計算機科學技術系二、對指令系統(tǒng)性能的要求二、對指令系統(tǒng)性能的要求 規(guī)整性:規(guī)整性: 對稱性:在指令系統(tǒng)中所有的寄存器和存對稱性:在指令系統(tǒng)中所有的寄存器和存 儲器單元都可同等對待,所有的儲器單元都可同等對待,所有的 指令都可使用各種尋址方式指令都可使用各種尋址方式勻齊性:指一種操作性質(zhì)的指令可以支持勻齊性:指一種操作性質(zhì)的指令可以支持 各種數(shù)據(jù)類

6、型各種數(shù)據(jù)類型格式一致性:指令長度和數(shù)據(jù)長度有一定格式一致性:指令長度和數(shù)據(jù)長度有一定 的關系,以方便處理和存取,的關系,以方便處理和存取, 通常為字節(jié)長度的整數(shù)倍通常為字節(jié)長度的整數(shù)倍201220129華東師范大學計算機科學技術系二、對指令系統(tǒng)性能的要求二、對指令系統(tǒng)性能的要求 兼容性:兼容性: 系列機各機種之間具有相同的基本結(jié)構(gòu)和系列機各機種之間具有相同的基本結(jié)構(gòu)和 共同的基本指令集,因而指令系統(tǒng)是兼容共同的基本指令集,因而指令系統(tǒng)是兼容 的,即在各類機種上基本軟件都可以通用的,即在各類機種上基本軟件都可以通用 但由于不同機種推出的時間不同,在結(jié)構(gòu)但由于不同機種推出的時間不同,在結(jié)構(gòu) 和性

7、能上有差異,做到所有軟件都完全兼和性能上有差異,做到所有軟件都完全兼 容是不可能的,只能做到容是不可能的,只能做到“向上兼容向上兼容”,即即 低檔機上運行的軟件可以在高檔機上運行低檔機上運行的軟件可以在高檔機上運行2012201210華東師范大學計算機科學技術系2.1 概述概述三、低級語言與硬件結(jié)構(gòu)的關系三、低級語言與硬件結(jié)構(gòu)的關系計算機語言計算機語言 高級語言:如高級語言:如C C,JavaJava等,其語句和用法等,其語句和用法 與具體機器的指令系統(tǒng)無關與具體機器的指令系統(tǒng)無關 低級語言:是面向機器的語言,和具體機低級語言:是面向機器的語言,和具體機 器的指令系統(tǒng)密切相關器的指令系統(tǒng)密切相

8、關 機器語言(二進制語言),用指令代機器語言(二進制語言),用指令代 碼編寫程序碼編寫程序 匯編語言(符號語言),用指令助記匯編語言(符號語言),用指令助記 符來編寫程序符來編寫程序2012201211華東師范大學計算機科學技術系三、低級語言與硬件結(jié)構(gòu)的關系三、低級語言與硬件結(jié)構(gòu)的關系高級語言與低級語言的性能比較高級語言與低級語言的性能比較比較內(nèi)容比較內(nèi)容高級語言高級語言低級語言低級語言對程序員的訓練要求對程序員的訓練要求(1)通用算法通用算法(2)語言規(guī)則語言規(guī)則(3)硬件知識硬件知識有有較少較少不要不要有有較多較多要要對機器獨立的程度對機器獨立的程度獨立獨立不獨立不獨立編制程序的難易程度編

9、制程序的難易程度易易難難編制程序所需時間編制程序所需時間短短較長較長程序執(zhí)行時間程序執(zhí)行時間較長較長短短編譯過程中對計算機資源的要求編譯過程中對計算機資源的要求多多少少2012201212華東師范大學計算機科學技術系2 計算機指令2.1 2.1 概述概述2.2 2.2 計算機硬件的操作計算機硬件的操作2012201213華東師范大學計算機科學技術系2.2 2.2 計算機硬件的操作計算機硬件的操作通過指令要求計算機硬件完成算術運算操作:通過指令要求計算機硬件完成算術運算操作:使用匯編語言的助記符使用匯編語言的助記符: add add a,b,ca,b,c ;( ;(b)+(c)b)+(c)aa

10、特點:只執(zhí)行一種操作特點:只執(zhí)行一種操作 有且只有三個操作數(shù)有且只有三個操作數(shù)( (最多最多) ) 操作數(shù)取自寄存器操作數(shù)取自寄存器計算四個變量計算四個變量的累加和的累加和需要三條指令:需要三條指令: add add a,b,ca,b,c ;( ;(b)+(c)b)+(c)aa add add a,a,da,a,d ;( ;(a)+(d)a)+(d)aa add add a,a,ea,a,e ;( ;(a)+(e)a)+(e)aa 硬件設計原則硬件設計原則1:操作數(shù)格式規(guī)整,操作數(shù)格式規(guī)整,設計簡單設計簡單算術運算指令算術運算指令2012201214華東師范大學計算機科學技術系2.2 2.2

11、計算機硬件的操作計算機硬件的操作一、高級語言程序與匯編語言程序的關系一、高級語言程序與匯編語言程序的關系 把把C C語言編譯成匯編語言(語言編譯成匯編語言(MIPSMIPS)例例1 1) a=a=b+cb+c d=a-e d=a-e C C編譯器生成的匯編指令:編譯器生成的匯編指令: add add a,b,ca,b,c sub sub d,a,ed,a,e例例2 2) f=(f=(g+h)-(i+jg+h)-(i+j) ) C C編譯器生成的匯編指令:編譯器生成的匯編指令: add t0,g,hadd t0,g,h add t1,i,j add t1,i,j Sub f,t0,t1 Sub

12、f,t0,t1不同系列的計算機,采用的指令助記符不一樣不同系列的計算機,采用的指令助記符不一樣 MIPS MIPS是世界上十分流行的一款是世界上十分流行的一款RISCRISC處理器處理器 (Microprocessor(Microprocessor withoutwithout interlockedinterlocked pipedpiped stagesstages) 無內(nèi)部互鎖流水級的微處理器無內(nèi)部互鎖流水級的微處理器8080年代初期由斯坦福年代初期由斯坦福(Stanford)(Stanford)大學大學HennessyHennessy教授領導的教授領導的研究小組研制出來的。研究小組研制

13、出來的。MIPSMIPS公司在此基礎上開發(fā)了公司在此基礎上開發(fā)了R系列系列的的RISCRISC工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計算機工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計算機公司采用,構(gòu)成各種工作站和計算機系統(tǒng)。如公司采用,構(gòu)成各種工作站和計算機系統(tǒng)。如R3000R3000、R4000R4000、R10000R10000等等 2012201215華東師范大學計算機科學技術系2.2 2.2 計算機硬件的操作計算機硬件的操作二、計算機硬件的操作數(shù)二、計算機硬件的操作數(shù)1. 1. 寄存器操作數(shù)寄存器操作數(shù) 以以MIPSMIPS為例討論為例討論操作數(shù)來自寄存器,操作數(shù)來自寄存器,MIPSMIP

14、S寄存器有寄存器有3232個,每個寄存?zhèn)€,每個寄存器為器為3232位,對字進行訪問。位,對字進行訪問。有效利用寄存器是提高程序性能的關鍵MIPSMIPS指令中寄存器的表示:指令中寄存器的表示: $ $sisi $ $titi例例3 3)C C語句:語句: f=(f=(g+h)-(i+jg+h)-(i+j) ) C C編譯器生成的編譯器生成的MIPSMIPS匯編指令:匯編指令: add $t0,$s1,$s2add $t0,$s1,$s2 ;g,hg,h分配給分配給$s1,$s2$s1,$s2 add $t1,$s3,$s4add $t1,$s3,$s4 ;i,ji,j分配給分配給$s3,$s4

15、$s3,$s4 Sub $s0,$t0,$t1Sub $s0,$t0,$t1 ;f f分配給分配給$s0$s0硬件設計原則硬件設計原則2:越少越快越少越快同時考慮指令字長同時考慮指令字長 P455 P455圖圖A-6-1A-6-1: $S0 $S0$s7$s7:保存臨時變量(過程調(diào)用時保留);:保存臨時變量(過程調(diào)用時保留); $t0$t0$t7$t7:臨時變量(過程調(diào)用時不保留)。:臨時變量(過程調(diào)用時不保留)。2012201216華東師范大學計算機科學技術系二、計算機硬件的操作數(shù)二、計算機硬件的操作數(shù)2. 2. 存儲器操作數(shù)存儲器操作數(shù)通過通過數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令將存儲器中的數(shù)據(jù)送往寄

16、存器將存儲器中的數(shù)據(jù)送往寄存器取數(shù)指令:取數(shù)指令:lwlw (LDA (LDA等)等)例例4 4)C C語句:語句: g=h+A8 g=h+A8 一個操作數(shù)來自存儲器,運算前先將一個操作數(shù)來自存儲器,運算前先將A8A8送寄存器,送寄存器,A8A8存儲單元地址由存儲單元地址由$S3$S3中的基址加中的基址加8 8得到得到C C編譯器生成的匯編指令(存儲器以字編址):編譯器生成的匯編指令(存儲器以字編址): lwlw $t0,8($s3) $t0,8($s3) ;存儲器;存儲器A8 $t0A8 $t0 add $s1,$s2,$t0 add $s1,$s2,$t0 ;g,hg,h分配給分配給$s1

17、,$s2 $s1,$s2 $S3$S3為基址寄存器,為基址寄存器,8 8位偏移位偏移量量A A是含有是含有100100個字個字的數(shù)組的數(shù)組2012201217華東師范大學計算機科學技術系2. 存儲器操作數(shù)存儲器操作數(shù) 存儲器編址方法存儲器編址方法大多數(shù)存儲器按字節(jié)編址大多數(shù)存儲器按字節(jié)編址 連續(xù)字的地址相差連續(xù)字的地址相差4 4對齊限制:對齊限制:MIPSMIPS中的字的起始地址必須是中的字的起始地址必須是4 4 的倍數(shù)的倍數(shù)例例4 4)C C語句:語句: g=h+A8 g=h+A8 C C編譯器生成的編譯器生成的MIPSMIPS匯編指令:匯編指令: lwlw $t0, $t0,3232($s

18、3) ($s3) ;存儲器;存儲器A8 $t0A8 $t0 add $s1,$s2,$t0 add $s1,$s2,$t0 ;g,hg,h分配給分配給$s1,$s2$s1,$s22012201218華東師范大學計算機科學技術系2. 存儲器操作數(shù)存儲器操作數(shù) 兩種字節(jié)尋址方式兩種字節(jié)尋址方式(0 xABCD)(0 xABCD): 使用最左邊或使用最左邊或“大端大端”字節(jié)的地址作為字字節(jié)的地址作為字地址地址 使用最右邊或使用最右邊或“小端小端”字節(jié)的地址作為字字節(jié)的地址作為字地址地址MIPSMIPS采用大端編址采用大端編址 字節(jié)0 1 2 3ABCD字節(jié)0 1 2 3DCBA2012201219華

19、東師范大學計算機科學技術系2.2.存儲器操作數(shù)存儲器操作數(shù)存數(shù)指令:存數(shù)指令:swsw (STRSTR等)等)例例5 5)C C語句:語句: A12=h+A8 A12=h+A8 兩個操作數(shù)來自存儲器,一個為源操作數(shù),一個兩個操作數(shù)來自存儲器,一個為源操作數(shù),一個為目的操作數(shù)為目的操作數(shù) C C編譯器生成的編譯器生成的MIPSMIPS匯編指令:匯編指令: lwlw $t0,32($s3) $t0,32($s3) ;存儲器;存儲器A8 $t0A8 $t0 add $t0,$s2,$t0 add $t0,$s2,$t0 ;h+A8 $t0h+A8 $t0 swsw $t0,48($s3) $t0,4

20、8($s3) ;(;($t0) A12$t0) A122012201220華東師范大學計算機科學技術系二、計算機硬件的操作數(shù)二、計算機硬件的操作數(shù)3. 3. 常數(shù)或立即數(shù)常數(shù)或立即數(shù) 指令直接給出操作數(shù),可加快運算速度指令直接給出操作數(shù),可加快運算速度 硬件設計原則硬件設計原則3:加速執(zhí)行常用操作加速執(zhí)行常用操作立即數(shù)加指令立即數(shù)加指令例例6)addiaddi $s3,$s3,4 $s3,$s3,4 ;$s3=$s3+4 ;$s3=$s3+4P33P33圖圖2-4 2-4 上述上述MIPSMIPS指令和操作數(shù)總結(jié)指令和操作數(shù)總結(jié)2012201221華東師范大學計算機科學技術系2 計算機指令2.

21、1 2.1 概述概述2.2 2.2 計算機硬件的操作計算機硬件的操作2.3 2.3 計算機中指令的表示計算機中指令的表示2012201222華東師范大學計算機科學技術系2.3 計算機中指令的表示計算機中指令的表示指令字指令字( (簡稱指令簡稱指令) )即表示一條指令的機器字即表示一條指令的機器字指令格式指令格式則是指令字用二進制代碼表示的結(jié)則是指令字用二進制代碼表示的結(jié) 構(gòu)形式構(gòu)形式 操作碼字段操作碼字段 地址碼字段地址碼字段表征指令的操表征指令的操作特性與功能作特性與功能指定參與操作的操指定參與操作的操作數(shù)的地址作數(shù)的地址以助記符編寫的指令送入計算機需轉(zhuǎn)換成相應的二進制碼,以助記符編寫的指令

22、送入計算機需轉(zhuǎn)換成相應的二進制碼,這種轉(zhuǎn)換借助匯編程序可以自動完成,匯編程序就相當于這種轉(zhuǎn)換借助匯編程序可以自動完成,匯編程序就相當于一個一個“翻譯翻譯”。2012201223華東師范大學計算機科學技術系2.3 2.3 計算機中指令的表示計算機中指令的表示一、操作碼一、操作碼對每條指令規(guī)定一個操作碼,表示該指令應對每條指令規(guī)定一個操作碼,表示該指令應進行什么性質(zhì)的操作。進行什么性質(zhì)的操作。操作碼字段的位數(shù)一般取決于計算機指令系操作碼字段的位數(shù)一般取決于計算機指令系統(tǒng)的規(guī)模,統(tǒng)的規(guī)模,n n位操作碼可表示位操作碼可表示2 2n n條指令功能。條指令功能。一個指令系統(tǒng)中操作碼的位數(shù)往往是不定長一個

23、指令系統(tǒng)中操作碼的位數(shù)往往是不定長的,即不同類型的指令有不同的劃分,以便的,即不同類型的指令有不同的劃分,以便盡可能用較短的指令字長來表示更多的操作盡可能用較短的指令字長來表示更多的操作種類。種類。2012201224華東師范大學計算機科學技術系2.3 2.3 計算機中指令的表示計算機中指令的表示二、地址碼二、地址碼 CPUCPU用來取得所需操作數(shù)的地址用來取得所需操作數(shù)的地址各種不同操作數(shù)的指令格式各種不同操作數(shù)的指令格式$s3$s3$s2$s2$s1$s1操作碼操作碼三地址指令三地址指令$s2$s2$s1$s1操作碼操作碼二地址指令二地址指令AddressAddress操作碼操作碼一地址指

24、令一地址指令操作碼操作碼零地址指令零地址指令2012201225華東師范大學計算機科學技術系二、地址碼二、地址碼1.1.零地址指令零地址指令 特點:指令字中只有操作碼,而無地址碼特點:指令字中只有操作碼,而無地址碼 無需操作數(shù)無需操作數(shù) 操作數(shù)隱含操作數(shù)隱含2.2.一地址指令一地址指令單操作數(shù)指令單操作數(shù)指令 特點:另一操作數(shù)地址或目的地址隱含,特點:另一操作數(shù)地址或目的地址隱含,($s0)($s0)OPOP(Address)(Address)-$s0$s0表示某一隱表示某一隱含的寄存器含的寄存器中的內(nèi)容中的內(nèi)容表示操作性質(zhì)表示操作性質(zhì)表示某一存儲單元表示某一存儲單元的內(nèi)容的內(nèi)容2012201

25、226華東師范大學計算機科學技術系二、地址碼二、地址碼3.3.二地址指令二地址指令雙操作數(shù)指令雙操作數(shù)指令 特點:特點:$s0$s0、$s1$s1為兩操作數(shù)地址,為兩操作數(shù)地址,$s1$s1兼目的兼目的 地址地址($s0)($s0)OPOP($s1)($s1)-$s0$s04.4.三地址指令三地址指令 特點:指令直接給出了二操作數(shù)地址及目特點:指令直接給出了二操作數(shù)地址及目 的地址的地址 ($s0)($s0)OPOP($s1)($s1)-$s2$s2 優(yōu)點:優(yōu)點:$s0$s0、$s1$s1中內(nèi)容不被破壞中內(nèi)容不被破壞 缺點:指令碼加長,增加了存儲空間缺點:指令碼加長,增加了存儲空間201220

26、1227華東師范大學計算機科學技術系二、地址碼二、地址碼按操作數(shù)物理地址分類按操作數(shù)物理地址分類 存儲器存儲器- -存儲器(存儲器(SSSS)型指令)型指令 參與操作的數(shù)都放在內(nèi)存里,執(zhí)行此類參與操作的數(shù)都放在內(nèi)存里,執(zhí)行此類 指令需多次訪問內(nèi)存,速度慢指令需多次訪問內(nèi)存,速度慢 寄存器寄存器- -寄存器(寄存器(RRRR)型指令)型指令 CPUCPU內(nèi)部操作,速度快內(nèi)部操作,速度快 寄存器寄存器- -存儲器(存儲器(RSRS)型指令)型指令 執(zhí)行此類指令時,既要訪問內(nèi)存單元,執(zhí)行此類指令時,既要訪問內(nèi)存單元, 又要訪問寄存器又要訪問寄存器通常指令字的長度和地址結(jié)構(gòu)不是單一的,通常指令字的長度

27、和地址結(jié)構(gòu)不是單一的,往往混合使用,增強功能往往混合使用,增強功能 MIPS MIPS使用三地址格式使用三地址格式 運算類指令只能為運算類指令只能為RRRR型指令;傳送類指令為型指令;傳送類指令為RSRS型指令型指令2012201228華東師范大學計算機科學技術系2.3 2.3 計算機中指令的表示計算機中指令的表示三、指令字長度三、指令字長度指令字長度一個指令字中包含二進制代碼的位數(shù)一個指令字中包含二進制代碼的位數(shù)機器字長機器字長計算機能并行處理的二進制數(shù)據(jù)的位數(shù)計算機能并行處理的二進制數(shù)據(jù)的位數(shù)機器字長通常與寄存器的位數(shù)一致機器字長通常與寄存器的位數(shù)一致2012201229華東師范大學計算機

28、科學技術系三、指令字長度三、指令字長度指令分類指令分類單字長指令單字長指令:指令字長度等于機器字長度:指令字長度等于機器字長度半字長指令半字長指令:指令字長度等于半個機器字:指令字長度等于半個機器字 長度長度雙字長指令雙字長指令:指令字長度等于兩個機器字:指令字長度等于兩個機器字 長度長度多字長優(yōu)點:能提供足夠的地址位尋址主存多字長優(yōu)點:能提供足夠的地址位尋址主存 缺點:占用存儲空間,多次訪問,速缺點:占用存儲空間,多次訪問,速 度慢度慢 MIPS MIPS指令使用指令使用3232位字長,同機器字長位字長,同機器字長規(guī)整性規(guī)整性2012201230華東師范大學計算機科學技術系2.3 2.3 計

29、算機中指令的表示計算機中指令的表示四、四、MIPSMIPS指令格式指令格式 op op: 操作碼操作碼 rsrs: : 第一源操作數(shù)寄存器第一源操作數(shù)寄存器 rtrt: : 第二源操作數(shù)寄存器第二源操作數(shù)寄存器 rd: rd: 目的操作數(shù)寄存器目的操作數(shù)寄存器 shamtshamt: : 位移量位移量 functfunct: : 函數(shù)碼,選擇函數(shù)碼,選擇opop的特定變體的特定變體opoprsrsrtrtrdrdshamtshamt functfunct 6位位 5位位 5位位 5位位 5位位 6位位2012201231華東師范大學計算機科學技術系四、四、MIPSMIPS指令格式指令格式如指令

30、采用統(tǒng)一格式又要保持如指令采用統(tǒng)一格式又要保持3232位指令字長,位指令字長,則最大常數(shù)只能為則最大常數(shù)只能為2 25 5MIPSMIPS設計者采用一種折中方案:設計者采用一種折中方案:所有指令長度一致,但采用不同的指令格式所有指令長度一致,但采用不同的指令格式 R R型(寄存器):型(寄存器):I I型型(立即數(shù))立即數(shù))opoprsrsrtrtrdrdshamtshamt functfunct硬件設計原則硬件設計原則4:優(yōu)秀的設計需要適當?shù)恼壑袃?yōu)秀的設計需要適當?shù)恼壑?6位位 5位位 5位位 5位位 5位位 6位位opoprsrsrtrtconstant or addressconstan

31、t or address 6位位 5位位 5位位 16位位1616位字段位字段constant or addressconstant or address可表示:可表示:2 21515個地址或立即數(shù)個地址或立即數(shù)2012201232華東師范大學計算機科學技術系四、四、MIPSMIPS指令格式指令格式P46P46圖圖2-132-13給出了前述指令的格式給出了前述指令的格式例例7 7)將指令)將指令add $tO,$s1,$s2add $tO,$s1,$s2翻譯為機器碼:翻譯為機器碼: op op: 000000 000000 加加/ /減減 functfunct:100000 100000 選擇

32、加操作選擇加操作 寄存器寄存器$t0-$t7$t0-$t7分別對應寄存器分別對應寄存器8-158-15 寄存器寄存器$S0-$S7$S0-$S7分別對應寄存器分別對應寄存器16-2316-23 寄存器寄存器$zer0$zer0對應寄存器對應寄存器0 0 $s1: 17=10001B $s2: 18=10010B $s1: 17=10001B $s2: 18=10010B $t0: 8=01000B $zer0 $t0: 8=01000B $zer0:0=00000B0=00000B000000000000 1000110001 100101001001000010000000000000100

33、000100000 op op rsrs rtrt rd rd shamtshamt functfunct2012201233華東師范大學計算機科學技術系四、四、MIPSMIPS指令格式指令格式例例8 8)將指令)將指令lwlw $t0,32($s3) $t0,32($s3)翻譯為機器碼:翻譯為機器碼: 這里這里rtrt字段為目的寄存器地址字段為目的寄存器地址多種指令格式使硬件變得復雜,力求指令格多種指令格式使硬件變得復雜,力求指令格式基本一致,可降低復雜度式基本一致,可降低復雜度例例R R型和型和I I型指令格式,前三段各段長度相等,型指令格式,前三段各段長度相等,R R型后三段長度等于型后

34、三段長度等于I I型第四段型第四段100011100011 1001110011 0100001000 0000 0000 0010 0000 0000 0000 0010 0000 op op rsrs rtrt address address2012201234華東師范大學計算機科學技術系四、四、MIPSMIPS指令格式指令格式例例9 9)C C語句:語句:A300=h+A300A300=h+A300 設數(shù)組設數(shù)組A A的基址放在的基址放在$t1$t1中,翻譯成機器碼。中,翻譯成機器碼。 編譯成編譯成MIPSMIPS指令:指令: lwlw $t0,1200($t1) ;A300$t0 $t

35、0,1200($t1) ;A300$t0 add $t0,$s2,$t0 ;h+A300$t0 add $t0,$s2,$t0 ;h+A300$t0 swsw $t0,1200($t1) $t0,1200($t1) ;h+A300A300;h+A300A300 翻譯成機器碼翻譯成機器碼10 0011 10 0011 lwlw0 10010 1001t1 t1 0 1000 0 1000 t0t00000 0100 1011 00000000 0100 1011 00001200120000 000000 0000addadd1 00101 0010s2s20 10000 1000t0t00 1

36、0000 1000t0t00 00000 000010 000010 000010 101110 1011swsw0 10010 1001t1t10 10000 1000t0t00000 0100 1011 00000000 0100 1011 000012001200 小結(jié)見小結(jié)見P38P38圖圖2-72-72012201235華東師范大學計算機科學技術系四、四、MIPSMIPS指令格式指令格式 當前計算機構(gòu)造基于兩個關鍵性的原則:當前計算機構(gòu)造基于兩個關鍵性的原則:1.1.指令以數(shù)據(jù)形式表示指令以數(shù)據(jù)形式表示2.2.和數(shù)據(jù)一樣,程序存儲在存儲器中,并且和數(shù)據(jù)一樣,程序存儲在存儲器中,并且可

37、以讀寫可以讀寫 存儲程序存儲程序 P39P39圖圖2-82-8顯示了存儲程序的概念顯示了存儲程序的概念2012201236華東師范大學計算機科學技術系2.3 2.3 計算機中指令的表示計算機中指令的表示五、邏輯運算指令五、邏輯運算指令邏輯運算:邏輯運算: MIPS MIPS使用使用nornor指令(其中一個操作數(shù)為指令(其中一個操作數(shù)為0 0)來實現(xiàn))來實現(xiàn) NOTNOT操作操作 邏輯乘、邏輯加支持立即數(shù)操作邏輯乘、邏輯加支持立即數(shù)操作邏輯操作C操作符Java操作符MIPS指令助記符邏輯左移srl邏輯乘&and,andi邏輯加IIor,ori邏輯非nor2012201237華東師范大學

38、計算機科學技術系五、邏輯運算指令五、邏輯運算指令例例1010)將指令)將指令sllsll $t2,$s0,4 $t2,$s0,4翻譯為機器碼翻譯為機器碼指令功能:將指令功能:將$s0$s0內(nèi)容邏輯左移內(nèi)容邏輯左移4 4位后送位后送$t2$t2機器碼為:機器碼為: ShamtShamt: :位移量,這里即指左移位移量,這里即指左移4 4位位原原($s0)= 0000 ($s0)= 0000 00000000 00000000 00000000 00000000 0001 0000 1001 0001 0000 1001執(zhí)行執(zhí)行sllsll指令后:指令后: ($t2)= 0000 ($t2)= 0

39、000 00000000 00000000 00000000 0001 0000 1001 0000 0001 0000 1001 0000000000000000 0000000000 100001000001010010100010000100000000000000 op op rsrs rtrt rd rd shamtshamt functfunct2012201238華東師范大學計算機科學技術系五、邏輯運算指令五、邏輯運算指令例例1111)設:)設: ($t1)= 0000 0011 0000 ($t1)= 0000 0011 0000 00000000 00000000 0001

40、0000 1001 0001 0000 1001($t2)= 0000 ($t2)= 0000 00000000 00000000 00000000 1111 1111 11111111 11111111 11111111執(zhí)行指令執(zhí)行指令 and $t0,$t1,$t2and $t0,$t1,$t2后,后,$t0$t0的內(nèi)容?的內(nèi)容?指令功能:將指令功能:將$t1$t1內(nèi)容與上內(nèi)容與上$t2$t2內(nèi)容后送內(nèi)容后送$t0$t0執(zhí)行指令后:執(zhí)行指令后:($t0)= 0000 ($t0)= 0000 00000000 00000000 00000000 00000000 0001 0000 1001

41、 0001 0000 1001這種位模式習慣上稱為掩碼(這種位模式習慣上稱為掩碼(mask)mask),可隱藏某些位,可隱藏某些位2012201239華東師范大學計算機科學技術系五、邏輯運算指令五、邏輯運算指令例例1111)設:)設: ($t1)= 0000 0011 0000 ($t1)= 0000 0011 0000 00000000 00000000 0001 0000 1001 0001 0000 1001($t2)= 0000 ($t2)= 0000 00000000 00000000 00000000 1111 1111 11111111 11111111 11111111執(zhí)行指令

42、執(zhí)行指令 or $t0,$t1,$t2or $t0,$t1,$t2后,后,$t0$t0的內(nèi)容?的內(nèi)容?指令功能:將指令功能:將$t1$t1內(nèi)容或上內(nèi)容或上$t2$t2內(nèi)容后送內(nèi)容后送$t0$t0執(zhí)行指令后:執(zhí)行指令后:($t0)= 0000 0011 0000 ($t0)= 0000 0011 0000 00000000 1111 1111 11111111 11111111 11111111執(zhí)行指令執(zhí)行指令 nor $t0,$t1,$t3nor $t0,$t1,$t3后,后,$t0$t0的內(nèi)容?的內(nèi)容?指令功能:將指令功能:將$t1$t1內(nèi)容與內(nèi)容與$t3$t3內(nèi)容或非后送內(nèi)容或非后送$t0

43、$t0($t3$t3 內(nèi)容為內(nèi)容為0 0)執(zhí)行指令后:執(zhí)行指令后:($t0)= 1111 1100 1111 ($t0)= 1111 1100 1111 11111111 11111111 1110 1111 0110 1110 1111 0110 邏輯乘和邏輯加還支持立即數(shù)操作邏輯乘和邏輯加還支持立即數(shù)操作 小結(jié)見小結(jié)見P42P42圖圖2-102-102012201240華東師范大學計算機科學技術系2.3 2.3 計算機中指令的表示計算機中指令的表示六、分支指令六、分支指令1. 1. 條件分支指令條件分支指令: : beqbeq register1,register2,L1 register

44、1,register2,L1指令功能:若(指令功能:若(register1register1)= =(register2register2) 時,跳轉(zhuǎn)至時,跳轉(zhuǎn)至L1L1地址地址 bnebne register1,register2,L1 register1,register2,L1指令功能:若(指令功能:若(register1register1)(register2register2) 時,跳轉(zhuǎn)至時,跳轉(zhuǎn)至L1L1地址地址2012201241華東師范大學計算機科學技術系六、分支指令六、分支指令例例1212)將)將if-then-elseif-then-else語句編譯成條件分支語句編譯成條件

45、分支 指令指令 If(iIf(i=j) f=j) f=g+hg+h; else f=; else f=g-hg-h; ;編譯成編譯成MIPSMIPS指令:指令: bnebne $s3,$s4,else ; $s3,$s4,else ;當當i ij j轉(zhuǎn)轉(zhuǎn)elseelse add $s0,$s1,$s2 ;f= add $s0,$s1,$s2 ;f=g+hg+h else:else: sub $s0,$s1,$s2 ;f= sub $s0,$s1,$s2 ;f=g-hg-h f,g,h,i,jf,g,h,i,j對應對應$s0,$s1,$s2,$s3,$s4$s0,$s1,$s2,$s3,$s4

46、判斷相反條件代碼效率較高判斷相反條件代碼效率較高2012201242華東師范大學計算機科學技術系六、分支指令六、分支指令2. MIPS2. MIPS指令系統(tǒng)將無條件分支指令命名為指令系統(tǒng)將無條件分支指令命名為跳跳 轉(zhuǎn)指令(轉(zhuǎn)指令(jumpjump),簡寫為),簡寫為j j 將例將例1212)編譯完整:)編譯完整: bnebne $s3,$s4,else ; $s3,$s4,else ;當當i ij j轉(zhuǎn)轉(zhuǎn)elseelse add $s0,$s1,$s2 ;f= add $s0,$s1,$s2 ;f=g+hg+h j exitj exit ;go to exit ;go to exitelse:

47、 sub $s0,$s1,$s2 ;f=else: sub $s0,$s1,$s2 ;f=g-hg-hexit: exit: 。 。 。 編譯器經(jīng)常產(chǎn)生分支指令和標號,而在程序設計語言中并編譯器經(jīng)常產(chǎn)生分支指令和標號,而在程序設計語言中并不出現(xiàn),高級語言避免了顯式標號和分支,效率高。不出現(xiàn),高級語言避免了顯式標號和分支,效率高。2012201243華東師范大學計算機科學技術系六、分支指令六、分支指令循環(huán)循環(huán): :編譯一個編譯一個C C語言語言whilewhile循環(huán)循環(huán)C C語言:語言: while (while (saveisavei=k)=k) i+=1; i+=1;設:設:i,ki,k對

48、應對應$s3,$s5,$s3,$s5,數(shù)組數(shù)組savesave的基址在的基址在$s6$s6中中MIPSMIPS匯編指令:匯編指令:LoopLoop:sllsll $t1,$s3,2 ;i $t1,$s3,2 ;i4 4送送$t1($t1(數(shù)組地址偏移量)數(shù)組地址偏移量) add $t1,$t1,$s6 ;$t1add $t1,$t1,$s6 ;$t1為數(shù)組地址為數(shù)組地址 lwlw $t0,0($t1) ;( $t0,0($t1) ;(saveisavei) $t0) $t0 bnebne $t0,$s5,Exit;(savei) k, $t0,$s5,Exit;(savei) k,轉(zhuǎn)轉(zhuǎn)Exit

49、Exit addiaddi $s3,$s3,1 ;i=i+1 $s3,$s3,1 ;i=i+1 j Loop ;go to Loop j Loop ;go to LoopExit: Exit: 2012201244華東師范大學計算機科學技術系2.3 2.3 計算機中指令的表示計算機中指令的表示七、比較指令七、比較指令sltslt $t0,$s3,$s4 $t0,$s3,$s4 ; ; 若若($s3)($s3)($s4),($s4),則置則置 “1 1”$t0$t0sltislti $t0,$s2,10 $t0,$s2,10 ; ;若若($s2)($s2)10,10,則置則置“1 1”$t0$t

50、0小結(jié)見小結(jié)見P45P45,46 46 圖圖2-122-12、圖、圖2-132-132012201245華東師范大學計算機科學技術系2 計算機指令2.1 2.1 概述概述2.2 2.2 計算機硬件的操作計算機硬件的操作2.3 2.3 計算機中指令的表示計算機中指令的表示2.4 2.4 計算機硬件的過程支持計算機硬件的過程支持2012201246華東師范大學計算機科學技術系2.4 計算機硬件的過程支持計算機硬件的過程支持在過程運行期間程序必須遵循六個步驟:在過程運行期間程序必須遵循六個步驟: 將參數(shù)放在過程可以獲取的位置將參數(shù)放在過程可以獲取的位置 向過程傳遞控制向過程傳遞控制 獲得過程所需的存

51、儲資源獲得過程所需的存儲資源 執(zhí)行需要的任務執(zhí)行需要的任務 將結(jié)果的值放在調(diào)用程序可以獲取的地方將結(jié)果的值放在調(diào)用程序可以獲取的地方 將控制返回初始點將控制返回初始點充分利用寄存器:充分利用寄存器: $a0 $a0$a3$a3:四個參數(shù)寄存器,用于傳遞參數(shù);:四個參數(shù)寄存器,用于傳遞參數(shù); $v0 $v0$v1$v1:兩個儲值寄存器,用于返回值;:兩個儲值寄存器,用于返回值; $ $rara: 一個返回地址寄存器,用于返回初始點一個返回地址寄存器,用于返回初始點2012201247華東師范大學計算機科學技術系2.4 計算機硬件的過程支持計算機硬件的過程支持 過程指令(跳轉(zhuǎn)過程指令(跳轉(zhuǎn)- -鏈

52、接指令):鏈接指令): JalJal ProcedureAddressProcedureAddress ; ;跳轉(zhuǎn)到某個地址,并在跳轉(zhuǎn)到某個地址,并在 $ $rara中保留返回地址中保留返回地址 返回地址:返回地址:($($rara) = (PC) + 4) = (PC) + 4程序計數(shù)器程序計數(shù)器 寄存器跳轉(zhuǎn)指令(返回指令):寄存器跳轉(zhuǎn)指令(返回指令): jrjr $ $rara ;無條件跳轉(zhuǎn)到寄存器所指地址;無條件跳轉(zhuǎn)到寄存器所指地址 調(diào)用者根據(jù)需要將參數(shù)放在調(diào)用者根據(jù)需要將參數(shù)放在$a0$a0$a3$a3中中 執(zhí)行執(zhí)行jaljal X X跳轉(zhuǎn)到過程跳轉(zhuǎn)到過程X X 被調(diào)用者執(zhí)行運算,將結(jié)

53、果放在被調(diào)用者執(zhí)行運算,將結(jié)果放在$v0$v0、$v1$v1中中 執(zhí)行返回指令執(zhí)行返回指令jrjr $ $rara,返回斷點處,返回斷點處2012201248華東師范大學計算機科學技術系2.4 計算機硬件的過程支持計算機硬件的過程支持一、使用更多寄存器一、使用更多寄存器若希望傳遞更多的參數(shù)若希望傳遞更多的參數(shù)使用使用堆棧堆棧將主存的某一部分設置為堆棧區(qū),堆棧能夠具有程序?qū)⒅鞔娴哪骋徊糠衷O置為堆棧區(qū),堆棧能夠具有程序員要求的任意長度員要求的任意長度, ,是一組能存儲和取出數(shù)據(jù)的暫時存是一組能存儲和取出數(shù)據(jù)的暫時存儲單元儲單元, , 堆棧和其他形式存儲器之間的差別就在于,堆棧和其他形式存儲器之間的

54、差別就在于,它們對數(shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌鼈儗?shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌?需要設置一個需要設置一個棧指針棧指針,它是,它是CPUCPU中一個專用的寄存器,中一個專用的寄存器,MIPSMIPS的棧指針為的棧指針為$sp$sp棧指針指定的存儲器單元,就是堆棧的棧頂棧指針指定的存儲器單元,就是堆棧的棧頂堆棧操作:對棧頂操作,先進后出堆棧操作:對棧頂操作,先進后出 壓棧壓棧(push) (push) 出棧出棧(pop)(pop)2012201249華東師范大學計算機科學技術系 堆棧堆棧進棧操作進棧操作堆棧指示器堆棧指示器($sp)302H302H301H301H300H300H2FFH

55、2FFH2FEH2FEH2FDH2FDH2FCH2FCH300Ha寄存器寄存器進棧以前進棧以前存儲器存儲器302H302H301H301H300H300H2FFH2FFHa2FEH2FEH2FDH2FDH2FCH2FCH2FFH堆棧指示器堆棧指示器($sp)a寄存器寄存器進棧以后進棧以后存儲器存儲器棧頂棧頂棧頂棧頂進棧操作可描述如下:進棧操作可描述如下: 由指令把棧頂?shù)刂匪腿胗芍噶畎褩m數(shù)刂匪腿?sp$sp,指針指向棧頂指針指向棧頂 進棧:進棧:($sp$sp)1 $sp1 $sp , ,(寄存器)(寄存器) MspMsp 先修改指針先修改指針, ,指向空位,再指向空位,再存入數(shù)據(jù)存入數(shù)據(jù)Ms

56、pMsp表示棧指表示棧指針指示的存儲器棧頂單元針指示的存儲器棧頂單元棧指針指向滿棧頂棧指針指向滿棧頂2012201250華東師范大學計算機科學技術系 堆棧堆棧出棧操作出棧操作出棧操作描述如下:出棧操作描述如下: ($SP$SP)= 2FDH= 2FDH,指針指向棧頂指針指向棧頂 出棧:出棧: (MspMsp) 寄存器寄存器, , ($ $spsp)11$ $spsp 先取出數(shù)據(jù),后先取出數(shù)據(jù),后修改指針修改指針302H302H301H301H300H300H2FFH2FFHa a2FEH2FEHb b2FDH2FDHc c2FCH2FCH2FDH寄存器寄存器出棧以前出棧以前存儲器存儲器302H

57、302H301H301H300H300H2FFH2FFHa a2FEH2FEHb b2FDH2FDHc2FCH2FCH2FEHc寄存器寄存器出棧以后出棧以后存儲器存儲器棧頂棧頂棧頂棧頂堆棧指示器堆棧指示器($sp)堆棧指示器堆棧指示器($sp)2012201251華東師范大學計算機科學技術系一、使用更多寄存器一、使用更多寄存器例例1313)編譯一個不調(diào)用其他過程的)編譯一個不調(diào)用其他過程的C C過程過程intint leaf_example(intleaf_example(int g,intg,int h,inth,int i,inti,int j) j) intint f; f; f=( f

58、=(g+h)-(i+jg+h)-(i+j);); return f; return f; 編譯:編譯:參變量參變量g,h,i,jg,h,i,j對應參數(shù)寄存器對應參數(shù)寄存器$a0$a0$a3$a3返回值返回值f f對應對應$s0$s02012201252華東師范大學計算機科學技術系例例13)leaf_exampleleaf_example: : 圖圖2-142-14addiaddi $sp,$sp,-12 ; $sp,$sp,-12 ;過程中用到三個寄存器,將舊過程中用到三個寄存器,將舊swsw $t1,8($sp) $t1,8($sp) 值壓棧值壓棧(push)(push)swsw $t0,4

59、($sp) $t0,4($sp)swsw $s0,0($sp) $s0,0($sp)add $t0,$a0,$a1 ;($t0)= g + hadd $t0,$a0,$a1 ;($t0)= g + hadd $t1,$a2,$a3 ;($t1)= i + jadd $t1,$a2,$a3 ;($t1)= i + jsub $s0,$t0,$t1 ;($s0)=(sub $s0,$t0,$t1 ;($s0)=(g+h)-(i+jg+h)-(i+j) )add $v0,$s0,$zer0 ;($v0)=($s0),add $v0,$s0,$zer0 ;($v0)=($s0),復制到返回值寄存器復制

60、到返回值寄存器lwlw $s0,0($sp) ; $s0,0($sp) ;恢復原寄存器值恢復原寄存器值(pop)(pop)lwlw $t0,4($sp) $t0,4($sp)lwlw $t1,8($sp) $t1,8($sp)addiaddi $sp,$sp,12 $sp,$sp,12JrJr $ $rara ; ;返回斷點處返回斷點處MIPSMIPS將將1818個寄存器分成二組:個寄存器分成二組: $t0 $t0$t9$t9:1010個臨時寄存器,過程調(diào)用中不必保存;個臨時寄存器,過程調(diào)用中不必保存; $S0 $S0$S7$S7:8 8個保留寄存器,個保留寄存器,過程調(diào)用中必須被保存。過程調(diào)用中必須

溫馨提示

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

評論

0/150

提交評論