




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、201220121華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2 2 計(jì)算機(jī)指令計(jì)算機(jī)指令201220122華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2 計(jì)算機(jī)指令2.1 2.1 概述概述2.2 2.2 計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示2.4 2.4 計(jì)算機(jī)硬件的過(guò)程支持計(jì)算機(jī)硬件的過(guò)程支持2.5 2.5 人機(jī)交互人機(jī)交互2.6 2.6 指令和數(shù)據(jù)的尋址方式指令和數(shù)據(jù)的尋址方式2.7 2.7 匯編實(shí)例匯編實(shí)例2.8 2.8 實(shí)例:實(shí)例:IA-32IA-32指令指令201220123華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2 指令系統(tǒng)2.1 2.1 概述概述201220124華東師范大
2、學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.1 2.1 概述概述一、指令系統(tǒng)一、指令系統(tǒng) 指令指令是指計(jì)算機(jī)執(zhí)行某種操作的命令是指計(jì)算機(jī)執(zhí)行某種操作的命令從計(jì)算機(jī)組成的層次結(jié)構(gòu)來(lái)說(shuō),計(jì)算機(jī)的從計(jì)算機(jī)組成的層次結(jié)構(gòu)來(lái)說(shuō),計(jì)算機(jī)的指令有:指令有:微指令微指令:微程序級(jí)的命令,它屬于硬件:微程序級(jí)的命令,它屬于硬件機(jī)器指令機(jī)器指令:簡(jiǎn)稱指令,每條指令可完成一:簡(jiǎn)稱指令,每條指令可完成一 種獨(dú)立的操作種獨(dú)立的操作宏指令宏指令:由若干條機(jī)器指令組成的軟件指:由若干條機(jī)器指令組成的軟件指 令,它屬于軟件令,它屬于軟件201220125華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系一、指令系統(tǒng)一、指令系統(tǒng) 指令系統(tǒng):指令系統(tǒng): 一臺(tái)計(jì)算機(jī)中所有機(jī)
3、器指令的集合一臺(tái)計(jì)算機(jī)中所有機(jī)器指令的集合是表征一臺(tái)計(jì)算機(jī)性能的重要因素是表征一臺(tái)計(jì)算機(jī)性能的重要因素 指令系統(tǒng)是軟件、硬件的主要交界面,指令指令系統(tǒng)是軟件、硬件的主要交界面,指令 的格式與功能不僅直接影響到機(jī)器的硬件結(jié)的格式與功能不僅直接影響到機(jī)器的硬件結(jié) 構(gòu),也直接影響到系統(tǒng)軟件,影響到機(jī)器的構(gòu),也直接影響到系統(tǒng)軟件,影響到機(jī)器的 適用范圍適用范圍 設(shè)計(jì)目標(biāo):使硬件設(shè)計(jì)及編譯器構(gòu)造簡(jiǎn)單設(shè)計(jì)目標(biāo):使硬件設(shè)計(jì)及編譯器構(gòu)造簡(jiǎn)單 以最低的成本獲得最好的性能以最低的成本獲得最好的性能201220126華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系一、指令系統(tǒng)一、指令系統(tǒng)計(jì)算機(jī)指令系統(tǒng)的發(fā)展計(jì)算機(jī)指令系統(tǒng)的發(fā)展 形成系
4、列計(jì)算機(jī)形成系列計(jì)算機(jī) 指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相 同的一系列計(jì)算機(jī)同的一系列計(jì)算機(jī) 解決了軟件兼容問(wèn)題,大大減少了軟件解決了軟件兼容問(wèn)題,大大減少了軟件 開(kāi)發(fā)費(fèi)用開(kāi)發(fā)費(fèi)用 CISCCISC與與RISCRISC 復(fù)雜指令集與精簡(jiǎn)指令集復(fù)雜指令集與精簡(jiǎn)指令集 201220127華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.1 概述概述二、對(duì)指令系統(tǒng)性能的要求二、對(duì)指令系統(tǒng)性能的要求 完備性:要求指令系統(tǒng)豐富、功能齊全、完備性:要求指令系統(tǒng)豐富、功能齊全、 使用方便使用方便 有效性:利用該指令系統(tǒng)所編寫(xiě)的程序有效性:利用該指令系統(tǒng)所編寫(xiě)的程序 能夠高效率的運(yùn)行能夠高效率
5、的運(yùn)行 高效率主要表現(xiàn)在程序占據(jù)存儲(chǔ)空間小、高效率主要表現(xiàn)在程序占據(jù)存儲(chǔ)空間小、 執(zhí)行速度快執(zhí)行速度快一般來(lái)說(shuō),一個(gè)功能更強(qiáng)、更完善的指令一般來(lái)說(shuō),一個(gè)功能更強(qiáng)、更完善的指令系統(tǒng),必定有更好的有效性系統(tǒng),必定有更好的有效性201220128華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、對(duì)指令系統(tǒng)性能的要求二、對(duì)指令系統(tǒng)性能的要求 規(guī)整性:規(guī)整性: 對(duì)稱性:在指令系統(tǒng)中所有的寄存器和存對(duì)稱性:在指令系統(tǒng)中所有的寄存器和存 儲(chǔ)器單元都可同等對(duì)待,所有的儲(chǔ)器單元都可同等對(duì)待,所有的 指令都可使用各種尋址方式指令都可使用各種尋址方式勻齊性:指一種操作性質(zhì)的指令可以支持勻齊性:指一種操作性質(zhì)的指令可以支持 各種數(shù)據(jù)類
6、型各種數(shù)據(jù)類型格式一致性:指令長(zhǎng)度和數(shù)據(jù)長(zhǎng)度有一定格式一致性:指令長(zhǎng)度和數(shù)據(jù)長(zhǎng)度有一定 的關(guān)系,以方便處理和存取,的關(guān)系,以方便處理和存取, 通常為字節(jié)長(zhǎng)度的整數(shù)倍通常為字節(jié)長(zhǎng)度的整數(shù)倍201220129華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、對(duì)指令系統(tǒng)性能的要求二、對(duì)指令系統(tǒng)性能的要求 兼容性:兼容性: 系列機(jī)各機(jī)種之間具有相同的基本結(jié)構(gòu)和系列機(jī)各機(jī)種之間具有相同的基本結(jié)構(gòu)和 共同的基本指令集,因而指令系統(tǒng)是兼容共同的基本指令集,因而指令系統(tǒng)是兼容 的,即在各類機(jī)種上基本軟件都可以通用的,即在各類機(jī)種上基本軟件都可以通用 但由于不同機(jī)種推出的時(shí)間不同,在結(jié)構(gòu)但由于不同機(jī)種推出的時(shí)間不同,在結(jié)構(gòu) 和性
7、能上有差異,做到所有軟件都完全兼和性能上有差異,做到所有軟件都完全兼 容是不可能的,只能做到容是不可能的,只能做到“向上兼容向上兼容”,即即 低檔機(jī)上運(yùn)行的軟件可以在高檔機(jī)上運(yùn)行低檔機(jī)上運(yùn)行的軟件可以在高檔機(jī)上運(yùn)行2012201210華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.1 概述概述三、低級(jí)語(yǔ)言與硬件結(jié)構(gòu)的關(guān)系三、低級(jí)語(yǔ)言與硬件結(jié)構(gòu)的關(guān)系計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)語(yǔ)言 高級(jí)語(yǔ)言:如高級(jí)語(yǔ)言:如C C,JavaJava等,其語(yǔ)句和用法等,其語(yǔ)句和用法 與具體機(jī)器的指令系統(tǒng)無(wú)關(guān)與具體機(jī)器的指令系統(tǒng)無(wú)關(guān) 低級(jí)語(yǔ)言:是面向機(jī)器的語(yǔ)言,和具體機(jī)低級(jí)語(yǔ)言:是面向機(jī)器的語(yǔ)言,和具體機(jī) 器的指令系統(tǒng)密切相關(guān)器的指令系統(tǒng)密切相
8、關(guān) 機(jī)器語(yǔ)言(二進(jìn)制語(yǔ)言),用指令代機(jī)器語(yǔ)言(二進(jìn)制語(yǔ)言),用指令代 碼編寫(xiě)程序碼編寫(xiě)程序 匯編語(yǔ)言(符號(hào)語(yǔ)言),用指令助記匯編語(yǔ)言(符號(hào)語(yǔ)言),用指令助記 符來(lái)編寫(xiě)程序符來(lái)編寫(xiě)程序2012201211華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系三、低級(jí)語(yǔ)言與硬件結(jié)構(gòu)的關(guān)系三、低級(jí)語(yǔ)言與硬件結(jié)構(gòu)的關(guān)系高級(jí)語(yǔ)言與低級(jí)語(yǔ)言的性能比較高級(jí)語(yǔ)言與低級(jí)語(yǔ)言的性能比較比較內(nèi)容比較內(nèi)容高級(jí)語(yǔ)言高級(jí)語(yǔ)言低級(jí)語(yǔ)言低級(jí)語(yǔ)言對(duì)程序員的訓(xùn)練要求對(duì)程序員的訓(xùn)練要求(1)通用算法通用算法(2)語(yǔ)言規(guī)則語(yǔ)言規(guī)則(3)硬件知識(shí)硬件知識(shí)有有較少較少不要不要有有較多較多要要對(duì)機(jī)器獨(dú)立的程度對(duì)機(jī)器獨(dú)立的程度獨(dú)立獨(dú)立不獨(dú)立不獨(dú)立編制程序的難易程度編
9、制程序的難易程度易易難難編制程序所需時(shí)間編制程序所需時(shí)間短短較長(zhǎng)較長(zhǎng)程序執(zhí)行時(shí)間程序執(zhí)行時(shí)間較長(zhǎng)較長(zhǎng)短短編譯過(guò)程中對(duì)計(jì)算機(jī)資源的要求編譯過(guò)程中對(duì)計(jì)算機(jī)資源的要求多多少少2012201212華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2 計(jì)算機(jī)指令2.1 2.1 概述概述2.2 2.2 計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作2012201213華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.2 2.2 計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作通過(guò)指令要求計(jì)算機(jī)硬件完成算術(shù)運(yùn)算操作:通過(guò)指令要求計(jì)算機(jī)硬件完成算術(shù)運(yùn)算操作:使用匯編語(yǔ)言的助記符使用匯編語(yǔ)言的助記符: add add a,b,ca,b,c ;( ;(b)+(c)b)+(c)aa
10、特點(diǎn):只執(zhí)行一種操作特點(diǎn):只執(zhí)行一種操作 有且只有三個(gè)操作數(shù)有且只有三個(gè)操作數(shù)( (最多最多) ) 操作數(shù)取自寄存器操作數(shù)取自寄存器計(jì)算四個(gè)變量計(jì)算四個(gè)變量的累加和的累加和需要三條指令:需要三條指令: 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 硬件設(shè)計(jì)原則硬件設(shè)計(jì)原則1:操作數(shù)格式規(guī)整,操作數(shù)格式規(guī)整,設(shè)計(jì)簡(jiǎn)單設(shè)計(jì)簡(jiǎn)單算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令2012201214華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.2 2.2
11、計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作一、高級(jí)語(yǔ)言程序與匯編語(yǔ)言程序的關(guān)系一、高級(jí)語(yǔ)言程序與匯編語(yǔ)言程序的關(guān)系 把把C C語(yǔ)言編譯成匯編語(yǔ)言(語(yǔ)言編譯成匯編語(yǔ)言(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不同系列的計(jì)算機(jī),采用的指令助記符不一樣不同系列的計(jì)算機(jī),采用的指令助記符不一樣 MIPS MIPS是世界上十分流行的一款是世界上十分流行的一款RISCRISC處理器處理器 (Microprocessor(Microprocessor withoutwithout interlockedinterlocked pipedpiped stagesstages) 無(wú)內(nèi)部互鎖流水級(jí)的微處理器無(wú)內(nèi)部互鎖流水級(jí)的微處理器8080年代初期由斯坦福年代初期由斯坦福(Stanford)(Stanford)大學(xué)大學(xué)HennessyHennessy教授領(lǐng)導(dǎo)的教授領(lǐng)導(dǎo)的研究小組研制出來(lái)的。研究小組研制
13、出來(lái)的。MIPSMIPS公司在此基礎(chǔ)上開(kāi)發(fā)了公司在此基礎(chǔ)上開(kāi)發(fā)了R系列系列的的RISCRISC工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計(jì)算機(jī)工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計(jì)算機(jī)公司采用,構(gòu)成各種工作站和計(jì)算機(jī)系統(tǒng)。如公司采用,構(gòu)成各種工作站和計(jì)算機(jī)系統(tǒng)。如R3000R3000、R4000R4000、R10000R10000等等 2012201215華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.2 2.2 計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作二、計(jì)算機(jī)硬件的操作數(shù)二、計(jì)算機(jī)硬件的操作數(shù)1. 1. 寄存器操作數(shù)寄存器操作數(shù) 以以MIPSMIPS為例討論為例討論操作數(shù)來(lái)自寄存器,操作數(shù)來(lái)自寄存器,MIPSMIP
14、S寄存器有寄存器有3232個(gè),每個(gè)寄存?zhèn)€,每個(gè)寄存器為器為3232位,對(duì)字進(jìn)行訪問(wèn)。位,對(duì)字進(jìn)行訪問(wèn)。有效利用寄存器是提高程序性能的關(guān)鍵MIPSMIPS指令中寄存器的表示:指令中寄存器的表示: $ $sisi $ $titi例例3 3)C C語(yǔ)句:語(yǔ)句: 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硬件設(shè)計(jì)原則硬件設(shè)計(jì)原則2:越少越快越少越快同時(shí)考慮指令字長(zhǎng)同時(shí)考慮指令字長(zhǎng) P455 P455圖圖A-6-1A-6-1: $S0 $S0$s7$s7:保存臨時(shí)變量(過(guò)程調(diào)用時(shí)保留);:保存臨時(shí)變量(過(guò)程調(diào)用時(shí)保留); $t0$t0$t7$t7:臨時(shí)變量(過(guò)程調(diào)用時(shí)不保留)。:臨時(shí)變量(過(guò)程調(diào)用時(shí)不保留)。2012201216華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、計(jì)算機(jī)硬件的操作數(shù)二、計(jì)算機(jī)硬件的操作數(shù)2. 2. 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)通過(guò)通過(guò)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令將存儲(chǔ)器中的數(shù)據(jù)送往寄
16、存器將存儲(chǔ)器中的數(shù)據(jù)送往寄存器取數(shù)指令:取數(shù)指令:lwlw (LDA (LDA等)等)例例4 4)C C語(yǔ)句:語(yǔ)句: g=h+A8 g=h+A8 一個(gè)操作數(shù)來(lái)自存儲(chǔ)器,運(yùn)算前先將一個(gè)操作數(shù)來(lái)自存儲(chǔ)器,運(yùn)算前先將A8A8送寄存器,送寄存器,A8A8存儲(chǔ)單元地址由存儲(chǔ)單元地址由$S3$S3中的基址加中的基址加8 8得到得到C C編譯器生成的匯編指令(存儲(chǔ)器以字編址):編譯器生成的匯編指令(存儲(chǔ)器以字編址): lwlw $t0,8($s3) $t0,8($s3) ;存儲(chǔ)器;存儲(chǔ)器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個(gè)字個(gè)字的數(shù)組的數(shù)組2012201217華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2. 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù) 存儲(chǔ)器編址方法存儲(chǔ)器編址方法大多數(shù)存儲(chǔ)器按字節(jié)編址大多數(shù)存儲(chǔ)器按字節(jié)編址 連續(xù)字的地址相差連續(xù)字的地址相差4 4對(duì)齊限制:對(duì)齊限制:MIPSMIPS中的字的起始地址必須是中的字的起始地址必須是4 4 的倍數(shù)的倍數(shù)例例4 4)C C語(yǔ)句:語(yǔ)句: g=h+A8 g=h+A8 C C編譯器生成的編譯器生成的MIPSMIPS匯編指令:匯編指令: lwlw $t0, $t0,3232($s
18、3) ($s3) ;存儲(chǔ)器;存儲(chǔ)器A8 $t0A8 $t0 add $s1,$s2,$t0 add $s1,$s2,$t0 ;g,hg,h分配給分配給$s1,$s2$s1,$s22012201218華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2. 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù) 兩種字節(jié)尋址方式兩種字節(jié)尋址方式(0 xABCD)(0 xABCD): 使用最左邊或使用最左邊或“大端大端”字節(jié)的地址作為字字節(jié)的地址作為字地址地址 使用最右邊或使用最右邊或“小端小端”字節(jié)的地址作為字字節(jié)的地址作為字地址地址MIPSMIPS采用大端編址采用大端編址 字節(jié)0 1 2 3ABCD字節(jié)0 1 2 3DCBA2012201219華
19、東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.2.存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)存數(shù)指令:存數(shù)指令:swsw (STRSTR等)等)例例5 5)C C語(yǔ)句:語(yǔ)句: A12=h+A8 A12=h+A8 兩個(gè)操作數(shù)來(lái)自存儲(chǔ)器,一個(gè)為源操作數(shù),一個(gè)兩個(gè)操作數(shù)來(lái)自存儲(chǔ)器,一個(gè)為源操作數(shù),一個(gè)為目的操作數(shù)為目的操作數(shù) C C編譯器生成的編譯器生成的MIPSMIPS匯編指令:匯編指令: lwlw $t0,32($s3) $t0,32($s3) ;存儲(chǔ)器;存儲(chǔ)器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華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、計(jì)算機(jī)硬件的操作數(shù)二、計(jì)算機(jī)硬件的操作數(shù)3. 3. 常數(shù)或立即數(shù)常數(shù)或立即數(shù) 指令直接給出操作數(shù),可加快運(yùn)算速度指令直接給出操作數(shù),可加快運(yùn)算速度 硬件設(shè)計(jì)原則硬件設(shè)計(jì)原則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華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2 計(jì)算機(jī)指令2.
21、1 2.1 概述概述2.2 2.2 計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示2012201222華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示指令字指令字( (簡(jiǎn)稱指令簡(jiǎn)稱指令) )即表示一條指令的機(jī)器字即表示一條指令的機(jī)器字指令格式指令格式則是指令字用二進(jìn)制代碼表示的結(jié)則是指令字用二進(jìn)制代碼表示的結(jié) 構(gòu)形式構(gòu)形式 操作碼字段操作碼字段 地址碼字段地址碼字段表征指令的操表征指令的操作特性與功能作特性與功能指定參與操作的操指定參與操作的操作數(shù)的地址作數(shù)的地址以助記符編寫(xiě)的指令送入計(jì)算機(jī)需轉(zhuǎn)換成相應(yīng)的二進(jìn)制碼,以助記符編寫(xiě)的指令
22、送入計(jì)算機(jī)需轉(zhuǎn)換成相應(yīng)的二進(jìn)制碼,這種轉(zhuǎn)換借助匯編程序可以自動(dòng)完成,匯編程序就相當(dāng)于這種轉(zhuǎn)換借助匯編程序可以自動(dòng)完成,匯編程序就相當(dāng)于一個(gè)一個(gè)“翻譯翻譯”。2012201223華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示一、操作碼一、操作碼對(duì)每條指令規(guī)定一個(gè)操作碼,表示該指令應(yīng)對(duì)每條指令規(guī)定一個(gè)操作碼,表示該指令應(yīng)進(jìn)行什么性質(zhì)的操作。進(jìn)行什么性質(zhì)的操作。操作碼字段的位數(shù)一般取決于計(jì)算機(jī)指令系操作碼字段的位數(shù)一般取決于計(jì)算機(jī)指令系統(tǒng)的規(guī)模,統(tǒng)的規(guī)模,n n位操作碼可表示位操作碼可表示2 2n n條指令功能。條指令功能。一個(gè)指令系統(tǒng)中操作碼的位數(shù)往往是不定長(zhǎng)一個(gè)
23、指令系統(tǒng)中操作碼的位數(shù)往往是不定長(zhǎng)的,即不同類型的指令有不同的劃分,以便的,即不同類型的指令有不同的劃分,以便盡可能用較短的指令字長(zhǎng)來(lái)表示更多的操作盡可能用較短的指令字長(zhǎng)來(lái)表示更多的操作種類。種類。2012201224華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示二、地址碼二、地址碼 CPUCPU用來(lái)取得所需操作數(shù)的地址用來(lái)取得所需操作數(shù)的地址各種不同操作數(shù)的指令格式各種不同操作數(shù)的指令格式$s3$s3$s2$s2$s1$s1操作碼操作碼三地址指令三地址指令$s2$s2$s1$s1操作碼操作碼二地址指令二地址指令A(yù)ddressAddress操作碼操作碼一地址指
24、令一地址指令操作碼操作碼零地址指令零地址指令2012201225華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、地址碼二、地址碼1.1.零地址指令零地址指令 特點(diǎn):指令字中只有操作碼,而無(wú)地址碼特點(diǎn):指令字中只有操作碼,而無(wú)地址碼 無(wú)需操作數(shù)無(wú)需操作數(shù) 操作數(shù)隱含操作數(shù)隱含2.2.一地址指令一地址指令單操作數(shù)指令單操作數(shù)指令 特點(diǎn):另一操作數(shù)地址或目的地址隱含,特點(diǎn):另一操作數(shù)地址或目的地址隱含,($s0)($s0)OPOP(Address)(Address)-$s0$s0表示某一隱表示某一隱含的寄存器含的寄存器中的內(nèi)容中的內(nèi)容表示操作性質(zhì)表示操作性質(zhì)表示某一存儲(chǔ)單元表示某一存儲(chǔ)單元的內(nèi)容的內(nèi)容2012201
25、226華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、地址碼二、地址碼3.3.二地址指令二地址指令雙操作數(shù)指令雙操作數(shù)指令 特點(diǎn):特點(diǎn):$s0$s0、$s1$s1為兩操作數(shù)地址,為兩操作數(shù)地址,$s1$s1兼目的兼目的 地址地址($s0)($s0)OPOP($s1)($s1)-$s0$s04.4.三地址指令三地址指令 特點(diǎn):指令直接給出了二操作數(shù)地址及目特點(diǎn):指令直接給出了二操作數(shù)地址及目 的地址的地址 ($s0)($s0)OPOP($s1)($s1)-$s2$s2 優(yōu)點(diǎn):優(yōu)點(diǎn):$s0$s0、$s1$s1中內(nèi)容不被破壞中內(nèi)容不被破壞 缺點(diǎn):指令碼加長(zhǎng),增加了存儲(chǔ)空間缺點(diǎn):指令碼加長(zhǎng),增加了存儲(chǔ)空間201220
26、1227華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系二、地址碼二、地址碼按操作數(shù)物理地址分類按操作數(shù)物理地址分類 存儲(chǔ)器存儲(chǔ)器- -存儲(chǔ)器(存儲(chǔ)器(SSSS)型指令)型指令 參與操作的數(shù)都放在內(nèi)存里,執(zhí)行此類參與操作的數(shù)都放在內(nèi)存里,執(zhí)行此類 指令需多次訪問(wèn)內(nèi)存,速度慢指令需多次訪問(wèn)內(nèi)存,速度慢 寄存器寄存器- -寄存器(寄存器(RRRR)型指令)型指令 CPUCPU內(nèi)部操作,速度快內(nèi)部操作,速度快 寄存器寄存器- -存儲(chǔ)器(存儲(chǔ)器(RSRS)型指令)型指令 執(zhí)行此類指令時(shí),既要訪問(wèn)內(nèi)存單元,執(zhí)行此類指令時(shí),既要訪問(wèn)內(nèi)存單元, 又要訪問(wèn)寄存器又要訪問(wèn)寄存器通常指令字的長(zhǎng)度和地址結(jié)構(gòu)不是單一的,通常指令字的長(zhǎng)度
27、和地址結(jié)構(gòu)不是單一的,往往混合使用,增強(qiáng)功能往往混合使用,增強(qiáng)功能 MIPS MIPS使用三地址格式使用三地址格式 運(yùn)算類指令只能為運(yùn)算類指令只能為RRRR型指令;傳送類指令為型指令;傳送類指令為RSRS型指令型指令2012201228華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示三、指令字長(zhǎng)度三、指令字長(zhǎng)度指令字長(zhǎng)度一個(gè)指令字中包含二進(jìn)制代碼的位數(shù)一個(gè)指令字中包含二進(jìn)制代碼的位數(shù)機(jī)器字長(zhǎng)機(jī)器字長(zhǎng)計(jì)算機(jī)能并行處理的二進(jìn)制數(shù)據(jù)的位數(shù)計(jì)算機(jī)能并行處理的二進(jìn)制數(shù)據(jù)的位數(shù)機(jī)器字長(zhǎng)通常與寄存器的位數(shù)一致機(jī)器字長(zhǎng)通常與寄存器的位數(shù)一致2012201229華東師范大學(xué)計(jì)算機(jī)
28、科學(xué)技術(shù)系三、指令字長(zhǎng)度三、指令字長(zhǎng)度指令分類指令分類單字長(zhǎng)指令單字長(zhǎng)指令:指令字長(zhǎng)度等于機(jī)器字長(zhǎng)度:指令字長(zhǎng)度等于機(jī)器字長(zhǎng)度半字長(zhǎng)指令半字長(zhǎng)指令:指令字長(zhǎng)度等于半個(gè)機(jī)器字:指令字長(zhǎng)度等于半個(gè)機(jī)器字 長(zhǎng)度長(zhǎng)度雙字長(zhǎng)指令雙字長(zhǎng)指令:指令字長(zhǎng)度等于兩個(gè)機(jī)器字:指令字長(zhǎng)度等于兩個(gè)機(jī)器字 長(zhǎng)度長(zhǎng)度多字長(zhǎng)優(yōu)點(diǎn):能提供足夠的地址位尋址主存多字長(zhǎng)優(yōu)點(diǎn):能提供足夠的地址位尋址主存 缺點(diǎn):占用存儲(chǔ)空間,多次訪問(wèn),速缺點(diǎn):占用存儲(chǔ)空間,多次訪問(wèn),速 度慢度慢 MIPS MIPS指令使用指令使用3232位字長(zhǎng),同機(jī)器字長(zhǎng)位字長(zhǎng),同機(jī)器字長(zhǎng)規(guī)整性規(guī)整性2012201230華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)
29、算機(jī)中指令的表示計(jì)算機(jī)中指令的表示四、四、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華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系四、四、MIPSMIPS指令格式指令格式如指令
30、采用統(tǒng)一格式又要保持如指令采用統(tǒng)一格式又要保持3232位指令字長(zhǎng),位指令字長(zhǎng),則最大常數(shù)只能為則最大常數(shù)只能為2 25 5MIPSMIPS設(shè)計(jì)者采用一種折中方案:設(shè)計(jì)者采用一種折中方案:所有指令長(zhǎng)度一致,但采用不同的指令格式所有指令長(zhǎng)度一致,但采用不同的指令格式 R R型(寄存器):型(寄存器):I I型型(立即數(shù))立即數(shù))opoprsrsrtrtrdrdshamtshamt functfunct硬件設(shè)計(jì)原則硬件設(shè)計(jì)原則4:優(yōu)秀的設(shè)計(jì)需要適當(dāng)?shù)恼壑袃?yōu)秀的設(shè)計(jì)需要適當(dāng)?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個(gè)地址或立即數(shù)個(gè)地址或立即數(shù)2012201232華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系四、四、MIPSMIPS指令格式指令格式P46P46圖圖2-132-13給出了前述指令的格式給出了前述指令的格式例例7 7)將指令)將指令add $tO,$s1,$s2add $tO,$s1,$s2翻譯為機(jī)器碼:翻譯為機(jī)器碼: op op: 000000 000000 加加/ /減減 functfunct:100000 100000 選擇
32、加操作選擇加操作 寄存器寄存器$t0-$t7$t0-$t7分別對(duì)應(yīng)寄存器分別對(duì)應(yīng)寄存器8-158-15 寄存器寄存器$S0-$S7$S0-$S7分別對(duì)應(yīng)寄存器分別對(duì)應(yīng)寄存器16-2316-23 寄存器寄存器$zer0$zer0對(duì)應(yīng)寄存器對(duì)應(yīng)寄存器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華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系四、四、MIPSMIPS指令格式指令格式例例8 8)將指令)將指令lwlw $t0,32($s3) $t0,32($s3)翻譯為機(jī)器碼:翻譯為機(jī)器碼: 這里這里rtrt字段為目的寄存器地址字段為目的寄存器地址多種指令格式使硬件變得復(fù)雜,力求指令格多種指令格式使硬件變得復(fù)雜,力求指令格式基本一致,可降低復(fù)雜度式基本一致,可降低復(fù)雜度例例R R型和型和I I型指令格式,前三段各段長(zhǎng)度相等,型指令格式,前三段各段長(zhǎng)度相等,R R型后三段長(zhǎng)度等于型后
34、三段長(zhǎng)度等于I I型第四段型第四段100011100011 1001110011 0100001000 0000 0000 0010 0000 0000 0000 0010 0000 op op rsrs rtrt address address2012201234華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系四、四、MIPSMIPS指令格式指令格式例例9 9)C C語(yǔ)句:語(yǔ)句:A300=h+A300A300=h+A300 設(shè)數(shù)組設(shè)數(shù)組A A的基址放在的基址放在$t1$t1中,翻譯成機(jī)器碼。中,翻譯成機(jī)器碼。 編譯成編譯成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 翻譯成機(jī)器碼翻譯成機(jī)器碼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àn)小結(jié)見(jiàn)P38P38圖圖2-72-72012201235華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系四、四、MIPSMIPS指令格式指令格式 當(dāng)前計(jì)算機(jī)構(gòu)造基于兩個(gè)關(guān)鍵性的原則:當(dāng)前計(jì)算機(jī)構(gòu)造基于兩個(gè)關(guān)鍵性的原則:1.1.指令以數(shù)據(jù)形式表示指令以數(shù)據(jù)形式表示2.2.和數(shù)據(jù)一樣,程序存儲(chǔ)在存儲(chǔ)器中,并且和數(shù)據(jù)一樣,程序存儲(chǔ)在存儲(chǔ)器中,并且可
37、以讀寫(xiě)可以讀寫(xiě) 存儲(chǔ)程序存儲(chǔ)程序 P39P39圖圖2-82-8顯示了存儲(chǔ)程序的概念顯示了存儲(chǔ)程序的概念2012201236華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示五、邏輯運(yùn)算指令五、邏輯運(yùn)算指令邏輯運(yùn)算:邏輯運(yùn)算: MIPS MIPS使用使用nornor指令(其中一個(gè)操作數(shù)為指令(其中一個(gè)操作數(shù)為0 0)來(lái)實(shí)現(xiàn))來(lái)實(shí)現(xiàn) NOTNOT操作操作 邏輯乘、邏輯加支持立即數(shù)操作邏輯乘、邏輯加支持立即數(shù)操作邏輯操作C操作符Java操作符MIPS指令助記符邏輯左移srl邏輯乘&and,andi邏輯加IIor,ori邏輯非nor2012201237華東師范大學(xué)
38、計(jì)算機(jī)科學(xué)技術(shù)系五、邏輯運(yùn)算指令五、邏輯運(yùn)算指令例例1010)將指令)將指令sllsll $t2,$s0,4 $t2,$s0,4翻譯為機(jī)器碼翻譯為機(jī)器碼指令功能:將指令功能:將$s0$s0內(nèi)容邏輯左移內(nèi)容邏輯左移4 4位后送位后送$t2$t2機(jī)器碼為:機(jī)器碼為: 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華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系五、邏輯運(yùn)算指令五、邏輯運(yùn)算指令例例1111)設(shè):)設(shè): ($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這種位模式習(xí)慣上稱為掩碼(這種位模式習(xí)慣上稱為掩碼(mask)mask),可隱藏某些位,可隱藏某些位2012201239華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系五、邏輯運(yùn)算指令五、邏輯運(yùn)算指令例例1111)設(shè):)設(shè): ($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àn)小結(jié)見(jiàn)P42P42圖圖2-102-102012201240華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示六、分支指令六、分支指令1. 1. 條件分支指令條件分支指令: : beqbeq register1,register2,L1 register
44、1,register2,L1指令功能:若(指令功能:若(register1register1)= =(register2register2) 時(shí),跳轉(zhuǎn)至?xí)r,跳轉(zhuǎn)至L1L1地址地址 bnebne register1,register2,L1 register1,register2,L1指令功能:若(指令功能:若(register1register1)(register2register2) 時(shí),跳轉(zhuǎn)至?xí)r,跳轉(zhuǎn)至L1L1地址地址2012201241華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系六、分支指令六、分支指令例例1212)將)將if-then-elseif-then-else語(yǔ)句編譯成條件分支語(yǔ)句編譯成條件
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 ;當(dāng)當(dāng)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對(duì)應(yīng)對(duì)應(yīng)$s0,$s1,$s2,$s3,$s4$s0,$s1,$s2,$s3,$s4
46、判斷相反條件代碼效率較高判斷相反條件代碼效率較高2012201242華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系六、分支指令六、分支指令2. MIPS2. MIPS指令系統(tǒng)將無(wú)條件分支指令命名為指令系統(tǒng)將無(wú)條件分支指令命名為跳跳 轉(zhuǎn)指令(轉(zhuǎn)指令(jumpjump),簡(jiǎn)寫(xiě)為),簡(jiǎn)寫(xiě)為j j 將例將例1212)編譯完整:)編譯完整: bnebne $s3,$s4,else ; $s3,$s4,else ;當(dāng)當(dāng)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)生分支指令和標(biāo)號(hào),而在程序設(shè)計(jì)語(yǔ)言中并編譯器經(jīng)常產(chǎn)生分支指令和標(biāo)號(hào),而在程序設(shè)計(jì)語(yǔ)言中并不出現(xiàn),高級(jí)語(yǔ)言避免了顯式標(biāo)號(hào)和分支,效率高。不出現(xiàn),高級(jí)語(yǔ)言避免了顯式標(biāo)號(hào)和分支,效率高。2012201243華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系六、分支指令六、分支指令循環(huán)循環(huán): :編譯一個(gè)編譯一個(gè)C C語(yǔ)言語(yǔ)言whilewhile循環(huán)循環(huán)C C語(yǔ)言:語(yǔ)言: while (while (saveisavei=k)=k) i+=1; i+=1;設(shè):設(shè):i,ki,k對(duì)
48、應(yīng)對(duì)應(yīng)$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華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示七、比較指令七、比較指令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àn)小結(jié)見(jiàn)P45P45,46 46 圖圖2-122-12、圖、圖2-132-132012201245華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2 計(jì)算機(jī)指令2.1 2.1 概述概述2.2 2.2 計(jì)算機(jī)硬件的操作計(jì)算機(jī)硬件的操作2.3 2.3 計(jì)算機(jī)中指令的表示計(jì)算機(jī)中指令的表示2.4 2.4 計(jì)算機(jī)硬件的過(guò)程支持計(jì)算機(jī)硬件的過(guò)程支持2012201246華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.4 計(jì)算機(jī)硬件的過(guò)程支持計(jì)算機(jī)硬件的過(guò)程支持在過(guò)程運(yùn)行期間程序必須遵循六個(gè)步驟:在過(guò)程運(yùn)行期間程序必須遵循六個(gè)步驟: 將參數(shù)放在過(guò)程可以獲取的位置將參數(shù)放在過(guò)程可以獲取的位置 向過(guò)程傳遞控制向過(guò)程傳遞控制 獲得過(guò)程所需的存
51、儲(chǔ)資源獲得過(guò)程所需的存儲(chǔ)資源 執(zhí)行需要的任務(wù)執(zhí)行需要的任務(wù) 將結(jié)果的值放在調(diào)用程序可以獲取的地方將結(jié)果的值放在調(diào)用程序可以獲取的地方 將控制返回初始點(diǎn)將控制返回初始點(diǎn)充分利用寄存器:充分利用寄存器: $a0 $a0$a3$a3:四個(gè)參數(shù)寄存器,用于傳遞參數(shù);:四個(gè)參數(shù)寄存器,用于傳遞參數(shù); $v0 $v0$v1$v1:兩個(gè)儲(chǔ)值寄存器,用于返回值;:兩個(gè)儲(chǔ)值寄存器,用于返回值; $ $rara: 一個(gè)返回地址寄存器,用于返回初始點(diǎn)一個(gè)返回地址寄存器,用于返回初始點(diǎn)2012201247華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.4 計(jì)算機(jī)硬件的過(guò)程支持計(jì)算機(jī)硬件的過(guò)程支持 過(guò)程指令(跳轉(zhuǎn)過(guò)程指令(跳轉(zhuǎn)- -鏈
52、接指令):鏈接指令): JalJal ProcedureAddressProcedureAddress ; ;跳轉(zhuǎn)到某個(gè)地址,并在跳轉(zhuǎn)到某個(gè)地址,并在 $ $rara中保留返回地址中保留返回地址 返回地址:返回地址:($($rara) = (PC) + 4) = (PC) + 4程序計(jì)數(shù)器程序計(jì)數(shù)器 寄存器跳轉(zhuǎn)指令(返回指令):寄存器跳轉(zhuǎn)指令(返回指令): jrjr $ $rara ;無(wú)條件跳轉(zhuǎn)到寄存器所指地址;無(wú)條件跳轉(zhuǎn)到寄存器所指地址 調(diào)用者根據(jù)需要將參數(shù)放在調(diào)用者根據(jù)需要將參數(shù)放在$a0$a0$a3$a3中中 執(zhí)行執(zhí)行jaljal X X跳轉(zhuǎn)到過(guò)程跳轉(zhuǎn)到過(guò)程X X 被調(diào)用者執(zhí)行運(yùn)算,將結(jié)
53、果放在被調(diào)用者執(zhí)行運(yùn)算,將結(jié)果放在$v0$v0、$v1$v1中中 執(zhí)行返回指令執(zhí)行返回指令jrjr $ $rara,返回?cái)帱c(diǎn)處,返回?cái)帱c(diǎn)處2012201248華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系2.4 計(jì)算機(jī)硬件的過(guò)程支持計(jì)算機(jī)硬件的過(guò)程支持一、使用更多寄存器一、使用更多寄存器若希望傳遞更多的參數(shù)若希望傳遞更多的參數(shù)使用使用堆棧堆棧將主存的某一部分設(shè)置為堆棧區(qū),堆棧能夠具有程序?qū)⒅鞔娴哪骋徊糠衷O(shè)置為堆棧區(qū),堆棧能夠具有程序員要求的任意長(zhǎng)度員要求的任意長(zhǎng)度, ,是一組能存儲(chǔ)和取出數(shù)據(jù)的暫時(shí)存是一組能存儲(chǔ)和取出數(shù)據(jù)的暫時(shí)存儲(chǔ)單元儲(chǔ)單元, , 堆棧和其他形式存儲(chǔ)器之間的差別就在于,堆棧和其他形式存儲(chǔ)器之間的
54、差別就在于,它們對(duì)數(shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌鼈儗?duì)數(shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌?需要設(shè)置一個(gè)需要設(shè)置一個(gè)棧指針棧指針,它是,它是CPUCPU中一個(gè)專用的寄存器,中一個(gè)專用的寄存器,MIPSMIPS的棧指針為的棧指針為$sp$sp棧指針指定的存儲(chǔ)器單元,就是堆棧的棧頂棧指針指定的存儲(chǔ)器單元,就是堆棧的棧頂堆棧操作:對(duì)棧頂操作,先進(jìn)后出堆棧操作:對(duì)棧頂操作,先進(jìn)后出 壓棧壓棧(push) (push) 出棧出棧(pop)(pop)2012201249華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系 堆棧堆棧進(jìn)棧操作進(jìn)棧操作堆棧指示器堆棧指示器($sp)302H302H301H301H300H300H2FFH
55、2FFH2FEH2FEH2FDH2FDH2FCH2FCH300Ha寄存器寄存器進(jìn)棧以前進(jìn)棧以前存儲(chǔ)器存儲(chǔ)器302H302H301H301H300H300H2FFH2FFHa2FEH2FEH2FDH2FDH2FCH2FCH2FFH堆棧指示器堆棧指示器($sp)a寄存器寄存器進(jìn)棧以后進(jìn)棧以后存儲(chǔ)器存儲(chǔ)器棧頂棧頂棧頂棧頂進(jìn)棧操作可描述如下:進(jìn)棧操作可描述如下: 由指令把棧頂?shù)刂匪腿胗芍噶畎褩m數(shù)刂匪腿?sp$sp,指針指向棧頂指針指向棧頂 進(jìn)棧:進(jìn)棧:($sp$sp)1 $sp1 $sp , ,(寄存器)(寄存器) MspMsp 先修改指針先修改指針, ,指向空位,再指向空位,再存入數(shù)據(jù)存入數(shù)據(jù)Ms
56、pMsp表示棧指表示棧指針指示的存儲(chǔ)器棧頂單元針指示的存儲(chǔ)器棧頂單元棧指針指向滿棧頂棧指針指向滿棧頂2012201250華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系 堆棧堆棧出棧操作出棧操作出棧操作描述如下:出棧操作描述如下: ($SP$SP)= 2FDH= 2FDH,指針指向棧頂指針指向棧頂 出棧:出棧: (MspMsp) 寄存器寄存器, , ($ $spsp)11$ $spsp 先取出數(shù)據(jù),后先取出數(shù)據(jù),后修改指針修改指針302H302H301H301H300H300H2FFH2FFHa a2FEH2FEHb b2FDH2FDHc c2FCH2FCH2FDH寄存器寄存器出棧以前出棧以前存儲(chǔ)器存儲(chǔ)器302H
57、302H301H301H300H300H2FFH2FFHa a2FEH2FEHb b2FDH2FDHc2FCH2FCH2FEHc寄存器寄存器出棧以后出棧以后存儲(chǔ)器存儲(chǔ)器棧頂棧頂棧頂棧頂堆棧指示器堆棧指示器($sp)堆棧指示器堆棧指示器($sp)2012201251華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系一、使用更多寄存器一、使用更多寄存器例例1313)編譯一個(gè)不調(diào)用其他過(guò)程的)編譯一個(gè)不調(diào)用其他過(guò)程的C C過(guò)程過(guò)程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對(duì)應(yīng)參數(shù)寄存器對(duì)應(yīng)參數(shù)寄存器$a0$a0$a3$a3返回值返回值f f對(duì)應(yīng)對(duì)應(yīng)$s0$s02012201252華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系例例13)leaf_exampleleaf_example: : 圖圖2-142-14addiaddi $sp,$sp,-12 ; $sp,$sp,-12 ;過(guò)程中用到三個(gè)寄存器,將舊過(guò)程中用到三個(gè)寄存器,將舊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),復(fù)制到返回值寄存器復(fù)制
60、到返回值寄存器lwlw $s0,0($sp) ; $s0,0($sp) ;恢復(fù)原寄存器值恢復(fù)原寄存器值(pop)(pop)lwlw $t0,4($sp) $t0,4($sp)lwlw $t1,8($sp) $t1,8($sp)addiaddi $sp,$sp,12 $sp,$sp,12JrJr $ $rara ; ;返回?cái)帱c(diǎn)處返回?cái)帱c(diǎn)處MIPSMIPS將將1818個(gè)寄存器分成二組:個(gè)寄存器分成二組: $t0 $t0$t9$t9:1010個(gè)臨時(shí)寄存器,過(guò)程調(diào)用中不必保存;個(gè)臨時(shí)寄存器,過(guò)程調(diào)用中不必保存; $S0 $S0$S7$S7:8 8個(gè)保留寄存器,個(gè)保留寄存器,過(guò)程調(diào)用中必須被保存。過(guò)程調(diào)用中必須
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度健康醫(yī)療大數(shù)據(jù)預(yù)付款全新合作協(xié)議
- 二零二五年度幼兒園保育員聘用合同書(shū)-幼兒教育創(chuàng)新項(xiàng)目合作
- 二零二五年度環(huán)保咨詢服務(wù)營(yíng)業(yè)執(zhí)照轉(zhuǎn)讓合同
- 二零二五年度一手房購(gòu)房意向金預(yù)定合同
- 2025年度有限責(zé)任公司股東離任協(xié)議書(shū)
- 二零二五年度拆除房屋及土地回收合同范本
- 二零二五年度學(xué)校食堂承包經(jīng)營(yíng)與服務(wù)滿意度提升協(xié)議
- 二零二五年度離職后商業(yè)秘密保護(hù)及競(jìng)業(yè)限制合同
- 二零二五年度房屋維修安全責(zé)任保險(xiǎn)協(xié)議
- 二零二五年度美容院養(yǎng)生保健入股合同協(xié)議
- 合肥的文化民俗
- 傷口的延續(xù)性護(hù)理
- 藥品批發(fā)公司培訓(xùn)課件模板
- 《教科版一國(guó)兩制》課件
- 急性腎挫裂傷護(hù)理查房課件
- 腦出血個(gè)案護(hù)理計(jì)劃
- 小學(xué)生電力科普小講座(課件)-小學(xué)常識(shí)科普主題班會(huì)
- 第八次課-冶金考古
- 臨床醫(yī)生如何進(jìn)行臨床科研-2
- 硝酸鎂法制取濃硝酸
- PFMEA-失效模式分析案例
評(píng)論
0/150
提交評(píng)論