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

下載本文檔

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

文檔簡介

第四章

指令系統(tǒng)

1指令指令:執(zhí)行某種操作的命令。它是程序設(shè)計的最小單位,是硬件能理解并加以執(zhí)行的語言,是硬件設(shè)計的依據(jù)。微指令:屬于硬件,可具體到每個信號一位一位地給出。機器指令:簡稱指令,每條指令可完成一個獨立的邏輯、算術(shù)運算或某種操作宏指令:若干條機器指令組成,屬于軟件。機器指令的集合稱為指令系統(tǒng)。2指令格式

一條指令必須包含下列信息:

操作碼(operationcode)操作數(shù)的地址(sourceoperandaddress)操作結(jié)果的存儲地址(targetoperandaddress)下條指令的地址地址碼3指令格式

指令的基本格式如下:

操作碼字段地址碼字段操作碼(OperationCode,OP)用來表示該指令所要完成的操作(加、減、乘、除、數(shù)據(jù)傳送等),其長度取決于指令系統(tǒng)中的指令條數(shù)。4指令格式

實際上包括兩種信息:操作碼和地址碼。指令的基本格式如下:

操作碼字段地址碼字段地址碼用來描述該指令的操作對象直接給出操作數(shù)指出操作數(shù)的存儲器地址寄存器地址(即寄存器名)。5指令字長

指令字長取決于操作碼字段的長度、操作數(shù)地址的個數(shù)及長度。一般是機器字長的整數(shù)倍。單字長指令:指令字長等于機器字長半字長指令:指令字長等于半個機器字長雙字長指令:指令字長等于兩個機器字長指令系統(tǒng)中,若各種指令的長度隨指令功能而異,稱為變長指令結(jié)構(gòu)。否則稱為定長指令。目前為止,主流PC和傳統(tǒng)的大、中、小型機仍廣泛采用復(fù)雜指令系統(tǒng),相應(yīng)地廣泛采用變長指令格式。6地址碼

顯地址隱地址:按照事先約定用隱含方式給出。

1.四地址指令格式:

功能:(A1)OP(A2)→A3 A4為下條將要執(zhí)行指令的地址其中

Ai表示地址,(Ai)表示存放于該地址的內(nèi)容。

OPA1A2A3A47地址碼

2.三地址指令格式:

功能:(A1)OP(A2)→A3 (PC)+1→PC(隱含)3.二地址指令格式:功能:(A1)OP(A2)→A1 (PC)+1→PC(隱含)OPA1A2A3OPA1A28地址碼

4.一地址指令格式:功能:OP(A1)→A1 (PC)+1→PC(隱含)5.零地址指令(如與堆棧相關(guān)的一些指令)格式:6.多地址指令

OPA1OP9操作碼

操作碼指出指令應(yīng)該執(zhí)行什么性質(zhì)的操作和具有何種功能。

編碼格式:

固定格式:操作碼的長度固定,且集中放在指令字的一個字段中??勺兏袷?操作碼的長度可變,且分散地放在指令字的不同字段中。

單功能型操作碼:讓操作碼只表示一種操作含義。多功能型操作碼10操作碼

一、固定長度操作碼(定長編碼)

指令操作碼的長度決定了指令系統(tǒng)能完成不同操作的指令條數(shù)。若某機器的操作碼長度為K位,則它最多只能有2K條不同指令。操作碼均為8位11操作碼

二、可變長度操作碼(變長編碼)在指令字長有限的前提下要保持比較豐富的指令種類,可采取可變長度操作碼。方法是:當(dāng)指令中的地址部分位數(shù)較多時,讓操作碼的位數(shù)少些;當(dāng)指令的地址部分位數(shù)減少時,讓操作碼的位數(shù)增多,以增加指令種類,稱之為擴展操作碼。12操作碼

變長編碼方法:設(shè)某機器的指令長度為16位,包括一個4位基本操作碼字段和三個4位地址字段,其格式如圖4-6所示4-6指令格式4位基本操作碼有16種編碼結(jié)果(即有16種組合),若全部用于表示三地址指令,則只有16條。若三地址指令僅需15條,兩地址指令需15條,一地址指令需15條,零地址指令需16條,共61條指令,應(yīng)如何安排操作碼?顯然,只有4位基本操作碼是不夠的,必須將操作碼的長度向地址碼字段擴展才行。一種可供擴展的方法和步驟如下:OPCODEA1A2A313操作碼

1.15條三地址指令的操作碼由4位基本操作碼從0000~1110給出,剩下1111用于把操作碼擴展到A1,即4位擴展到8位;2.15條二地址指令的操作碼由8位操作碼從11110000~11111110給出,剩下11111111用于把操作碼擴展到A2,即從8位擴展到12位;3.15條一地址指令的操作碼由12位操作碼從111111110000~111111111110給出,剩下111111111111用于把操作碼擴展到A3,即從12位擴展到16位;4.16條零地址指令的操作碼由16位操作碼從1111111111110000~1111111111111111給出。14操作碼

[例4.1]指令字長為12位,每個地址碼為3位,采用擴展操作碼的方式,設(shè)計4條三地址指令、255條一地址指令和8條零地址指令。(1)

寫出擴展表示;(2)

畫出指令譯碼邏輯圖;(3)

計算操作碼平均長度。解:(1)操作碼的擴展表示如下:

0

00 ××× ××× ×××

… 4條三地址指令

0

11 ××× ××× ×××

1

00 000 000 ×××

… 255條一地址指令

1

11 111 110 ××× 111 111 111

000

… 8條零地址指令 111 111 111

111藍色的部分為操作碼,紅色的部分決定是否擴展15(3)操作碼平均長度=(4×3+9×255+12×8)/267=9。16操作碼

三、操作碼的優(yōu)化指令操作碼是有空余的。在可變長度的指令系統(tǒng)的設(shè)計中,擴展方法的原則:

使用頻度(即指令在程序中的出現(xiàn)概率)高的指令應(yīng)分配短的操作碼,使用頻度低的指令相應(yīng)地分配較長的操作碼,哈夫曼(Huffman)編碼法就是根據(jù)上述原則進行編碼。

Huffman編碼法可用Huffman樹的方法來實現(xiàn):

首先將使用頻度最小的、盡可能接近的兩個概率合并為一個概率和,然后把它作為葉結(jié)點。新的結(jié)點與其它的葉結(jié)點再按頻度大小排序。然后繼續(xù)與別的相近的概率合并,如此反復(fù),直至全部使用頻度都處理完畢,最后形成一個頻度為1的根結(jié)點。壓縮過程可不完全相同。此后,從根節(jié)點開始向下延伸,左分支取1,右分支取0,遍歷所有的葉節(jié)點。

17表4.2操作碼的Huffman編碼法指令I(lǐng)i使用頻度PiHuffman編碼操作碼長度LiI1I2I3I4I5I6I70.400.260.150.060.050.040.04010110111001110111110111111位2位3位5位5位5位5位18操作碼

如果將使用的頻度與位數(shù)綜合考慮,可按下式求得平均編碼長度:L=∑Li×Pi上例的平均編碼長度為:

L=[0.40×1+0.26×2+0.15×3+0.6×5+0.05×5+0.04×5+0.04×5]位=2.32位Huffman擴展編碼法與擴展編碼法區(qū)別:

Huffman擴展編碼法:從指令的使用頻度出發(fā),對指令的長度沒有限制(操作碼與地址碼兩部分長度之和是字節(jié)的整數(shù)倍)。

擴展編碼法:從地址碼的個數(shù)出發(fā)來決定操作碼字段位數(shù)19操作碼

[例4.2]某計算機有10條指令,它們的使用頻度分別為:0.35、0.20、0.11、0.09、0.08、0.07、0.04、0.03、0.02、0.01,用Huffman編碼對它們的操作碼進行編碼,并計算平均代碼長度。解:Huffman編碼的操作碼如表4.5所示。表4.5Huffman編碼方案指令使用頻度Pi

Huffman編碼方案AHuffman編碼方案BI1I2I3I4I5I6I7I8I9I10

35%20%11%9%8%7%4%3%2%1%01011011101111011111011111101111111011111111011111111100101100011001110101101111100111011111011111

20操作碼

21操作碼

22操作碼

方案A的平均碼長=35%×1+20%×2+11%×3+9%×4+8%×5+7%×6+4%×7+3%×8+2%×9+1%×10 =0.35+0.40+0.33+0.36+0.40+0.42+0.28+0.24+0.18+0.01=2.97方案B的平均碼長=35%×1+20%×2+11%×5+9%×5+8%×5+7%×5+4%×5+3%×5+2%×5+1%×5 =0.35+0.40+0.55+0.45+0.40+0.35+0.20+0.15+0.10+0.05=3可見,采用Huffman編碼法,不論A方案還是B方案,其平均長度都比定長操作碼法的4位要短得多。但是它的操作碼的位數(shù)是不規(guī)整的,既不便譯碼,更不適于實際應(yīng)用,所以只能采用它的變形,它介于定長二進制譯碼和Huffman編碼之間,具有三種(或更多種)長度,但仍采用頻度值大的用短位數(shù)表示,頻度值小的用長位數(shù)表示的思想。

23操作碼

指令使用頻度Pi

操作碼

I1I2I3I4I5I6I7I8I9I10

35%20%11%9%8%7%4%3%2%1%

000110110011011110111100111101111110111111平均碼長=35%×2+20%×2+11%×2+9%×4+8%×4+7%×4+4%×6+3%×6+2%×6+1%×6=0.7+0.4+0.22+0.36+0.32+0.28+0.24+0.18+0.12+0.06=2.8824確定指令格式的原則

1.指令長度應(yīng)盡可能的短

2.機器字長應(yīng)是字符長度的整數(shù)倍關(guān)系。因為機器字長=字符長度的倍數(shù),對字符存儲有利。(現(xiàn)在的機器都是這樣的)沒有字長=20而字符長=8的機器25指令字長應(yīng)是字符長度的整數(shù)倍關(guān)系。

信息整數(shù)邊界原則:信息的地址(按字節(jié)編址,用該信息的首字節(jié)地址表示)必須是該信息寬度(字節(jié)數(shù))的整數(shù)倍。按此原則,任何寬度的信息從首字節(jié)起到主存邊界(存儲字最后一位)之前能放得下該信息所有字節(jié)。顯然,各種寬度的地址必須是(主存寬度8字節(jié),按字節(jié)編址):a(1字節(jié))_字節(jié)地址 ····××××Wh(雙字節(jié))_半字地址 ····×××0W(4字節(jié))_單字地址 ····××00Wd(8字節(jié))_雙字地址 ····×00026主存寬度8字節(jié),按字節(jié)編址27確定指令格式的原則

3.指令操作碼字段應(yīng)有足夠的位數(shù),使之能表示指令系統(tǒng)中的全部操作。

4.指令中地址段的位數(shù)要足夠長。作業(yè)

4.64.1328尋址技術(shù)

尋址方式:就是尋找指令或數(shù)據(jù)有效地址的方式。

指令中地址碼字段給出的地址稱為形式地址(邏輯地址)經(jīng)過某種運算后,形式地址可得到能夠直接訪問主存的地址,稱為有效地址(物理地址)。

A——形式地址EA——有效地址(EffectiveAddress)(x)——x中的內(nèi)容29編址方式

一、編址單位1.字編址:每個編址單位與訪問單位相一致(此處字為機器字長)每執(zhí)行一條指令,程序計數(shù)器PC加1;每從主存中讀出一個數(shù)據(jù),地址寄存器加1

30編址方式

2.字節(jié)編址:編址單位與信息的基本單位(一個字節(jié))相一致編址單位和主存的訪問單位通常是不相同的。(否則頻帶太窄)通常主存的訪問單位是編址單位的若干倍。采用字節(jié)編址的機器中,如果指令(數(shù)據(jù))長度是32位,那么每執(zhí)行完一條指令(訪問完一條數(shù)據(jù)),程序計數(shù)器要加4。

地址信息浪費3.位編址31編址方式

二、指令中地址碼的位數(shù):主存越大,編址單位越小,位數(shù)越多。例:設(shè)某機主存容量為220個字節(jié),機器字長32位.(直接尋址)若編址單位為字節(jié),其地址碼應(yīng)為20位;若編址單位為字,其地址碼只需18位。220字節(jié)/32位=220字節(jié)/4字節(jié)=218個地址

從減少指令長度的角度看,編址單位越大越好;而從對字符或位的操作是否方便看,編址單位越小越好。32指令和數(shù)據(jù)的尋址方式

一、指令的尋址方式

指令的尋址方式:順序方式、跳躍方式。1.順序?qū)ぶ贩绞?/p>

指令序列在主存中是順序存放。程序執(zhí)行時,從該程序的第一條指令開始,逐條取出并逐條執(zhí)行。程序計數(shù)器(PC)對指令的地址進行順序計數(shù)。PC中開始時存放程序的首地址,然后每執(zhí)行一條指令,PC加1或加一個常數(shù),以指出下條指令的地址,直到程序結(jié)束。

33指令和數(shù)據(jù)的尋址方式

2.跳躍尋址方式

所謂跳躍,就是指下條指令的地址不是通過程序計數(shù)器PC加1獲得的,而是由指令本身給出。

34指令和數(shù)據(jù)的尋址方式

二、操作數(shù)尋址方式(10種)設(shè)某計算機指令系統(tǒng)具有如圖4-13所示單地址指令結(jié)構(gòu)。

opxD操作碼尋址特征碼形式地址或稱偏移量圖4-13單地址指令格式

尋址過程就是把X和D的不同組合變換成有效地址的過程。

1.立即尋址X特征碼指出尋址方式是立即尋址,D不是形式地址,而是一個操作數(shù)。速度快。

但是,因為操作數(shù)是指令的一部分,不能被修改,而且立即數(shù)的大小受到指令長度的限制,所以這種尋址方式靈活性最差,通常用于給某一寄存器或主存單元賦初值或提供一個常數(shù)。

35指令和數(shù)據(jù)的尋址方式

2.直接尋址

形式地址D給出操作數(shù)的地址。EA=D

這種尋址方式不需要作任何尋址運算。但隨著主存容量的擴大,所需的地址碼將會越來越長。對于定長指令,由于地址碼字段位數(shù)有限,限制了訪問主存的范圍;而對于變長指令,勢必造成指令的長度過長。因此這種尋址方式缺少靈活性。36指令和數(shù)據(jù)的尋址方式

3.間接尋址

D所指示單元中的內(nèi)容才是操作數(shù)的有效地址,而D只是一個間接地址。間接尋址中又有一級間接尋址EA=(D)和多級間接尋址之分.它的主要優(yōu)點如下:(1)擴大了尋址范圍(從2D的位數(shù)擴大到2機器字長)(2)可將主存單元作為程序的地址指針但是,間接尋址在取指之后至少需要兩次訪問主存才能取出操作數(shù),降低了取操作數(shù)的速度。37指令和數(shù)據(jù)的尋址方式

4.寄存器直接尋址

寄存器直接尋址指令的地址碼部分給出某一個通用寄存器的編號,這個指定的寄存器中存放著操作數(shù),X特征碼表示尋址方式為寄存器直接尋址方式,有效地址EA=D=Ri

。(1)從寄存器中存取數(shù)據(jù)比從主存中快得多。(2)由于寄存器的數(shù)量較少,其地址碼字段比主存單元地址短得多。這種方式可以縮短指令長度,提高指令的執(zhí)行速度,幾乎所有的計算機都使用了寄存器直接尋址。38指令和數(shù)據(jù)的尋址方式

5.寄存器間接尋址

有效地址EA=(Ri)。

寄存器間接尋址方式的指令較短,并且在取指后只須一次訪問主存便可得到操作數(shù),因此指令執(zhí)行速度較前述間接尋址方式快,是一種廣泛使用的尋址方式。此時寄存器本身被稱為間接地址指示器,在編程過程時常作為地址指針。39指令和數(shù)據(jù)的尋址方式

6.相對尋址

相對尋址是把程序計數(shù)器PC中的內(nèi)容加上指令中的形式地址D,形成操作數(shù)的有效地址。EA=(PC)+D

相對尋址方式有如下兩個特點:(1)操作數(shù)的地址不是固定的,它隨著PC值的變化而變化,并且與指令之間總是相差一個固定值。(2)對于指令地址而言,操作數(shù)地址可能在指令地址之前或之后。因此,指令中給出的位移量可正、可負,通常用補碼表示。如果位移量為n位,則相對尋址的尋址范圍為:(PC)-2(n-1)~(PC)+2(n-1)-140指令和數(shù)據(jù)的尋址方式

7.變址尋址

變址寄存器:用來存放尋址的修改量。變址寄存器的內(nèi)容可根據(jù)程序的需要來設(shè)置。假定變址寄存器為Rx,則操作數(shù)的有效地址EA=(Rx)+D。

這種尋址方式與相對尋址的區(qū)別在于它與本條指令的地址無關(guān),操作數(shù)地址隨變址寄存器的內(nèi)容浮動一個D。

41[例4.3]一條雙字長的load指令存儲在地址為200和201的存儲位置,該指令將地址碼指定的存儲器內(nèi)容裝入累加器AC。指令的第一個字指定操作碼和尋址方式,第二個字是地址部分。PC寄存器的值是200。通用寄存器R1的值是400,變址寄存器Rx的內(nèi)容是100,如圖4-20所示。指令的尋址方式字段M可指定任何一種尋址方式。問在以下尋址方式下,裝入AC的值。(1)

直接尋址;(2)

立即尋址;(3)

間接尋址;(4)

相對尋址;(5)

變址尋址;(6)

寄存器(R1)直接尋址;(7)

寄存器(R1)間接尋址。42解:(1)在直接尋址方式下,有效地址是指令中的地址碼部分內(nèi)容500,裝入AC的操作數(shù)是800。(2)在立即尋址方式下,指令的地址碼部分就是操作數(shù)而不是地址,所以將500裝入AC(實際上有效地址是201)。(3)在間接尋址方式下,操作數(shù)的有效地址存儲在地址為500的單元中,由此得到有效地址800,操作數(shù)是300。(4)在相對尋址方式下,有效地址是500+202=702,所以操作數(shù)是325。在該指令的執(zhí)行時,PC的內(nèi)容已經(jīng)更新為指令地址202。(5)在變址尋址方式下,有效地址是Rx+500=600,操作數(shù)是900。(6)在寄存器直接尋址方式下,R1的內(nèi)容400裝入AC。(7)在寄存器間接尋址方式下,有效地址是R1的內(nèi)容400,裝入AC的操作數(shù)是700。438.基址尋址

基址寄存器:存放尋址的基準(zhǔn)值的寄存器假設(shè)基址寄存器為Rb,基址尋址是將基址寄存器Rb的內(nèi)容與指令中給出的位移量D相加,形成操作數(shù)有效地址,即EA=(Rb)+D。

變址尋址中變址寄存器提供修改量(可變的),而指令中提供基準(zhǔn)值(固定的);基準(zhǔn)尋址中基址寄存器提供基準(zhǔn)值(固定的),而指令中提供修改量(可變的)。這兩種尋址方式應(yīng)用的場合也不同,變址尋址是面向用戶的,用于訪問字符串、向量和數(shù)組等成批數(shù)據(jù);而基準(zhǔn)尋址面向系統(tǒng),主要用于邏輯地址和物理地址間的變換,用以解決程序在主存中的再定位和擴大尋址空間等問題。某些大型機中,基址寄存器只能由特權(quán)指令來管理,用戶指令無權(quán)操作和修改。某些小、微型機中,基址尋址和變址尋址實際上是合二為一的。

44指令和數(shù)據(jù)的尋址方式

9.段尋址方式

例:Intel8088/8086處理器只能進行16位運算,其地址寄存器也是16位。因此,尋址范圍只有216=64KB。然而處理器的直接尋址范圍可達到220=1MB方法:將1MB(220)的存儲空間以64KB為單位分為若干段(220/216=24段)在形成操作數(shù)的有效地址時,由一個基地址加上某寄存器提供的16位偏移量以形成20位物理地址。這個基地址由CPU中的段寄存器提供。形成20位物理地址時,段寄存器中的內(nèi)容自動左移4位,然后與偏移量相加,即形成所需的20位地址。

45指令和數(shù)據(jù)的尋址方式

10.復(fù)合尋址

(1)變址+間址方式

(2)相對+間址方式

先進行變址尋址,即把變址寄存器Rx中的內(nèi)容與指令中的形式地址相加,作為操作數(shù)的間接地址。操作數(shù)的有效地址為EA=((Rx)+D)。

先進行相對尋址,即把程序計數(shù)器PC中的內(nèi)容與指令中的形式地址D相加,再進行間接尋址。操作數(shù)的有效地址為EA=((PC)+D)。

46[例4.4]某機主存容量64K×16位,共有60條單字長、單地址指令。試采用直接、間接、變址和相對這四種尋址方式設(shè)計指令格式,并說明每一種尋址方式的尋址范圍及有效地址計算方法。解:60條指令操作碼字段(OP)至少需占用6位(26=64),這樣指令余下長度10位。尋址模式(X)為四種,所以要2位(22=4)。形式地址(D)只剩下8位。其指令格式如下: 15109870OPXD尋址模式如下:X=00直接尋址 有效地址 E=D(256字)X=01間接尋址 有效地址 E=(D)(64K字)X=10變址尋址 有效地址 E=(Rx)+D(64K字)X=11相對尋址 有效地址 E=(PC)+D(PC附近256個字)其中Rx為變址寄存器(16位),PC為程序計數(shù)器(16位)。變址和相對尋址時,位移量D可正可負。機器字長需覆蓋的尋址范圍47指令系統(tǒng)

指令系統(tǒng)就是計算機的機器語言。指令系統(tǒng)表征著計算機的基本功能和使用屬性,它是計算機系統(tǒng)設(shè)計中的核心問題。指令系統(tǒng)的設(shè)計主要包括指令功能、操作類型的設(shè)計,尋址方式和指令格式的設(shè)計。

48指令系統(tǒng)

指令系統(tǒng)基本要求:1.指令系統(tǒng)的完備性:指令系統(tǒng)的完備性是指在一個有限可用的存儲空間,對于任何可解的問題,編制計算機程序時,指令系統(tǒng)所提供的指令足夠使用。2.指令系統(tǒng)的有效性:指令系統(tǒng)的有效性是指用該指令系統(tǒng)所編制的程序能高效率運行。3.指令系統(tǒng)的規(guī)整性:指令系統(tǒng)的規(guī)整性細分為指令操作的對稱性和勻齊性、指令格式與數(shù)據(jù)格式的一致性。指令操作的對稱性是指在運算時,所有寄存器(存儲)單元都可同等對待,不論哪一個操作數(shù)或運算結(jié)果都可不受約束地存入任一單元。指令操作的勻齊性是指一種性質(zhì)的操作可適用于各種數(shù)據(jù)類型。指令格式與數(shù)據(jù)格式一致性主要指指令字長與數(shù)據(jù)字長有一個規(guī)整的關(guān)系,便于程序的加工處理。如機器基本字長為32位,長指令選32位,短指令選16位,在此字長的條件下,可以選擇指令的地址格式。49指令系統(tǒng)

指令分類:一、指令分類法:1.按指令地址格式分類:指令可分為四地址指令、三地址指令、二地址指令、單地址指令和零地址指令。2.按指令的使用權(quán)來分類:指令可分為特權(quán)指令和非特權(quán)指令。3.按指令使用范圍來分類:指令可分通用指令和專用指令。

4.按指令的操作性質(zhì)分類

:1.數(shù)據(jù)傳送類指令2.運算類指令

3.程序控制類指令4.輸入/輸出類指令50指令系統(tǒng)

具體的講解1.數(shù)據(jù)傳送類指令:數(shù)據(jù)傳送指令主要用于寄存器與寄存器,寄存器與存儲單元,存儲單元與存儲單元之間的數(shù)據(jù)傳送操作。

51指令系統(tǒng)

2.運算類指令

(1)算術(shù)運算指令

(2)邏輯運算指令

①按位測(位檢查)②按位清(位清除)③按位置(位設(shè)置)④按位修改⑤判符合(3)移位指令

52指令系統(tǒng)

3.程序控制類指令

(1)無條件轉(zhuǎn)移指令

(2)條件轉(zhuǎn)移指令

(3)轉(zhuǎn)子程序與返回指令:保存返回地址的方法:

返回地址存放在子程序的入口單元即第一個單元,此單元實際上就是該子程序的專用鏈接指示器。返回時將第一個單元地址作為間接地址,在子程序的出口安排一條以第一個單元內(nèi)容為轉(zhuǎn)向地址的無條件轉(zhuǎn)移指令,便可返回到調(diào)用程序,如圖4-25所示。

53指令系統(tǒng)

②利用堆棧結(jié)構(gòu)。這是解決子程序嵌套和遞歸調(diào)用的最好方法,由于堆棧具有先進后出的性質(zhì),因此根據(jù)調(diào)用的先后次序,各調(diào)用程序的返回地址可依次壓入堆棧,返回時堆棧以后進先出的順序彈出各自的返回地址。

(4)程序自中斷指令:當(dāng)程序運行該類指令時,就以中斷方式暫停后續(xù)指令的執(zhí)行,然后將程序斷點參數(shù)加以保存,接著轉(zhuǎn)向某地址執(zhí)行某段程序,實現(xiàn)所期望的功能如查錯、顯示結(jié)果等。這種指令是由軟件驅(qū)動的,所以又稱為軟中斷。4.

輸入/輸出類指令

(1)獨立編址的I/O指令(又稱I/O映象的I/O指令)(2)統(tǒng)一編址I/O指令(存儲器映象的I/O指令)

54作業(yè)4.114.1455CISC和RISC指令系統(tǒng)的發(fā)展過程:20世紀(jì)50-60年代:分立原件計算機十幾、幾十條指令——傳送、加減等運算。70年代后為了給高級語言提供更多支持,指令系統(tǒng)越來越龐大。

傳統(tǒng)的指令設(shè)計思想:提高指令系統(tǒng)的有效性。56CISC和RISC復(fù)雜指令系統(tǒng)計算機CISC(ComplexInstructionSetComputer)

特點是:(1)指令系統(tǒng)復(fù)雜龐大,指令數(shù)目一般多達2、3百條;(2)尋址方式多;(3)指令格式多;(4)指令字長不固定;(5)可訪問內(nèi)存的指令不受限制;(6)各種指令使用頻率相差很大;(7)各種指令執(zhí)行時間相差很大;(8)大多數(shù)采用微程序控制器。57CISC和RISCCISC指令系統(tǒng)很復(fù)雜,功能很強,但不一定能提高機器的速度,原因是:CISC采用很復(fù)雜的尋址方式,計算有效地址,需花費一定的時間。有的指令需要多次訪問主存儲器,因此執(zhí)行速度會降低。復(fù)雜指令系統(tǒng)的實現(xiàn)需要復(fù)雜的控制器來支持系列機為實現(xiàn)兼容,控制部件多用微程序控制方式來實現(xiàn),以便于指令系統(tǒng)的擴展。但微程序控制部件執(zhí)行一條機器指令一般需要幾個微周期,因此嚴(yán)重降低了指令的執(zhí)行速度。為了提高指令的執(zhí)行速度,CISC中常采用流水線技術(shù),但由于諸如指令系統(tǒng)采用變字長指令,不同指令爭用共同資源以及轉(zhuǎn)移指令等,使流水線的效率不高。復(fù)雜指令并沒有充分利用。20%的常用指令在程序中出現(xiàn)的概率是80%。58CISC和RISCRISC(ReducedInstructionsetComputer)機具有下述一些特點:1.優(yōu)先選取使用頻率最高的一些簡單指令。2.指令長度固定,指令格式種類少,尋址方式種類少。3.只有取數(shù)/存數(shù)指令訪問存儲器,其余指令操作在寄存器間進行。59CISC和RISCIBM370的五種指令格式:1.RR(寄存器-寄存器)格式,指令長度是16位,其格式為:844OPR1R2

兩個源操作數(shù)都在寄存器中,結(jié)果放在第一個源寄存器中。2.RX(變址)格式,指令長度是32位,其格式為:844412OPR1X2B2D2

第一個源操作數(shù)與結(jié)果放在同一寄存器中,第二個源操作數(shù)在存儲器中,其地址=(X2)+(B2)+D2,D2為12位位移量(無符號)。60CISC和RISC3.RS(寄存器-存儲器)格式,指令格式是32位,其格式為:8 44412OPR1R3B2D2R1是存放結(jié)果的目的寄存器,R3為源操作數(shù)寄存器,另一個操作數(shù)在存儲器中,其地址=(B2)+D2。RS與RX指令的區(qū)別在于RS是三地址格式,并取消了變址寄存器。61CISC和RISC4.SI(存儲器-直接數(shù))格式,指令長度是32位,其格式為:88412OPConstantB1D1

將立即數(shù)imm(8位)送到存儲器,其地址=(B1)+D1。5.SS(存儲器-存儲器)格式,指令長度是48位,其格式為:88412412OPOL(S)B1D1B2D2

兩個操作數(shù)都在存儲器中,其地址分別為(B1)+D1和(B2)+D2,(B1)+D1還是目的地址。SS格式用于十進制運算與字符串處理,數(shù)據(jù)長度(Length)字段可定義為1個長度(1~256個字符)或兩個長度(每一個為1~16個十進制數(shù))。62CISC和RISCIBM370指令操作碼都是8位,其中最左邊兩位用以指明指令格式和指令長度。00××××××=RR型,16位,64種01××××××=RX型,32位,64種10××××××=RS型,32位,64種11××××××=SS型,48位,64種63CISC和RISC例:SPARC機的精簡指令系統(tǒng):字長32位,3種指令格式、6種指令類型,共75條指令。

1)三種指令格式

call指令:調(diào)用指令

op30位位移量313029064Branch指令、Sethi指令313029282522210opacondop222位位移量opRdop222位立即數(shù)轉(zhuǎn)移指令65Branch指令、Sethi指令313029282522210opacondop222位位移量opRdop222位立即數(shù)將22位立即數(shù)左移10位,送入Rd再執(zhí)行一條加法指令補充后面的10位數(shù),形成32位數(shù)66其他指令31302925241918141312540opRdop3Rs1iAs1Rs2opRdop3Rs1isimm13opRdop3Rs1opfRs2通用寄存器,源操作數(shù)地址或地址寄存器地址目標(biāo)寄存器地址13位擴展位立即數(shù),最高位為1(0),前面都擴展為1(0)浮點指令碼用于選擇第二個操作數(shù)在Rs2還是simm中676種指令類型:1)算術(shù)/邏輯運算/移位指令2)取存數(shù)指令3)轉(zhuǎn)移指令4)讀寫專用寄存器指令5)浮點運算指令6)協(xié)處理器指令683)指令功能和尋址方式算術(shù)/邏輯運算/移位指令:(Rs1)op(Rs2)Rdi=0時(Rs1)opsimm13Rdi=1時

例:ADDR1,R2,R3(R1)+(R2)R3ADDR1,80H,R3(R1)+80HR3取存數(shù)指令存儲器地址=(Rs1)+(Rs2)i=0時存儲器地址=(Rs1)+simm13i=1時轉(zhuǎn)移指令相對尋址或寄存器尋址讀寫專用寄存器69指令的替代實現(xiàn)技巧:SPARC約定R0的內(nèi)容恒為0,立即數(shù)可作操作數(shù)處理,所以:MOVE

寄存器間傳送數(shù)據(jù)

ADDRs,R0,Rd

(Rs)RdINC

寄存器內(nèi)容加1

ADDRs,1,Rd

(Rs)+1RdCLEAR

清除寄存器

ADDR0,R0,Rd

0Rd……70Pentium微處理器的指令系統(tǒng)指令長度1字節(jié)——10余字節(jié)opMOD/RMSIBDispIMM字節(jié)1或20,1,2,4

0,1,2,4ModReg/opR/MssIndexBaseMod=11時,R/M指出操作數(shù)所在寄存器,否則,R/M指出操作數(shù)的24種尋址方式。寄存器號或附加操作碼71Pentium微處理器的指令系統(tǒng)指令長度1字節(jié)——10余字節(jié)opMOD/RMSIBDispIMM字節(jié)1或20,1,2,4

0,1,2,4ModReg/opR/MssIndexBaseMod不為11時,參與決定尋址方式。SS指出變址寄存器的放大因子,index指出變址寄存器,Base指出基址寄存器。72Pentium微處理器的指令系統(tǒng)指令長度1字節(jié)——10余字節(jié)opMOD/RMSIBDispIMM字節(jié)1或2

溫馨提示

  • 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

提交評論