2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 指令:計算機的語言,計算機中的信息分為:,數(shù)值型數(shù)據(jù),數(shù)據(jù)信息,控制信息,,,非數(shù)值型數(shù)據(jù),2.1 數(shù)據(jù)信息的表示方法,數(shù)值型數(shù)據(jù)的完整表示:采用什么進位計數(shù)制(逢幾進位)如何使符號數(shù)字化(機器數(shù)的編碼方法)如何處理小數(shù)點位置(定點表示、浮點表示),2.1.1進位計數(shù)制及轉(zhuǎn)換,一. 基本概念 r進制 一般的,在r進制下,數(shù),,,該位數(shù)字(0~r-1),基數(shù):指該進位制中允許選用的基本數(shù)碼的個數(shù),,權:權的大小是

2、以基數(shù)為底,該位數(shù)字所在位置的序號為指數(shù)的整數(shù)次冪。,所代表的數(shù)值可以表示為:,例:,2.1.1進位計數(shù)制及轉(zhuǎn)換,二. 各種數(shù)制之間的轉(zhuǎn)換1.十進制轉(zhuǎn)換為二進制整數(shù) :規(guī)則:連續(xù)“除以2取余,直到商為0”例1:(116)10 = ( )2,2.1.1進位計數(shù)制及轉(zhuǎn)換,例1:(116)10 = ( )2 (116)10 = ( 1110100 )2例2:29D =( )B,11

3、101,2.1.1進位計數(shù)制及轉(zhuǎn)換,小數(shù):規(guī)則:連續(xù)“乘以2取整,直到小數(shù)部分為0”例1: 0.8125D =( )B0.8125 × 2 = 1.625 ……10.625 × 2 = 1.25 ……10.25 × 2 = 0.5 ……00.5 × 2 = 1 ……1因此:0.8125D =(0. 11

4、01 )B例2:0.375D =( )B,0.011,2.1.1進位計數(shù)制及轉(zhuǎn)換,2. 二進制轉(zhuǎn)化為十進制規(guī)則:按權相加例1:,例2:,2.1.2 機器數(shù)的編碼格式,機器數(shù)是指數(shù)在計算機中的表示形式,一般是采用某種編碼形式表示帶符號的二進制數(shù)。真值是指機器數(shù)所對應的實際數(shù)值。常用的機器數(shù)形式有:原碼、補碼、反碼。,2.1.2 機器數(shù)的編碼格式,一. 原碼表示法(符號和幅值表示法) 規(guī)定:最高位為符

5、號位(0為正,1為負),其余有效數(shù)值部分用二進制的絕對值表示。,2.1.2 機器數(shù)的編碼格式,注意:1)0可分+0和-0。 +0 為 0.0…0 -0為 1.0…02)符號位和數(shù)值無關,不能作為數(shù)值的一部分直接參與運算,在運算中要額外增加一步處理。3)原碼表示的數(shù)取不到端點 小數(shù): |X|<1 整數(shù):|X|<2n,2.1.2 機器數(shù)的編碼格式,二. 補碼表示法1.模,

6、,13,,-2,模為12,例:11-2 = ?11- 2 = 11+10 = 21 21-12 = 9,2.1.2 機器數(shù)的編碼格式,2. 補碼定義 [X]補 = M + X (mod M),定點小數(shù)的補碼可定義為:,定點整數(shù)的補碼可定義為:,2.1.2 機器數(shù)的編碼格式,3. 補碼的性質(zhì)符號位是數(shù)值的一部分,可以與尾數(shù)一起直接參與運算,不需要單獨處理。所有負數(shù)的最高有效位都

7、是1,硬件只需檢測該位就可判斷是正數(shù)還是負數(shù)。 數(shù)0只有一種表示,即00……0。補碼可以取到負方向最值。,2.1.2 機器數(shù)的編碼格式,4. 原碼與補碼的互換正數(shù):補碼表示與原碼表示相同負數(shù):原碼的符號位保持不變,其余各位取反,末位再加1。例:,[X]原 =1.1010,變反: 1.0101,末位加1: 1,,[X]補 =1.0110,2.1.2 機器數(shù)的編碼格式,5.二進制補碼轉(zhuǎn)換十進制數(shù)32位二進制補碼可按

8、如下公式轉(zhuǎn)換:,例:以下32位二進制補碼對應的十進制數(shù)是多少? 1111 1111 1111 1111 1111 1111 1111 11002解:1111 1111 1111 1111 1111 1111 1111 11002= –1×231 + 1×230 + … + 1×22 +0×21 +0×20= –2,147,483,648 + 2,147,483,644 = –41

9、0,…,,2.1.2 機器數(shù)的編碼格式,6.二進制補碼的相關操作:1)對二進制補碼數(shù)取反(正數(shù),負數(shù)),2.1.2 機器數(shù)的編碼格式,例:對210 求反(字長32位)解: 210=0000 0000 0000 0000 0000 0000 0000 00102 1111 1111 1111 1111 1111 1111 1111 11012 +

10、 12———————————————————————————————————————— = 1111 1111 1111 1111 1111 1111 1111 11102 = -210,2.1.2 機器數(shù)的編碼格式,2)符號擴展用于將一個n位表示的二進制數(shù)轉(zhuǎn)化成一個多于n位表示的數(shù)。將最高有效位(符號位)以復制的方

11、式填 滿高位部分。,2.1.2 機器數(shù)的編碼格式,三. 反碼表示法反碼表示規(guī)則:正數(shù)的反碼:與原碼相同負數(shù)的反碼:符號位為1,尾數(shù)由原碼按位取反。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,根據(jù)數(shù)據(jù)中小數(shù)點位置是否固定,將數(shù)的格式分為定點表示和浮點表示。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,一.定點表示法(小數(shù)點位置不變)(1)小數(shù)點位置事先隱含約定(2)若小數(shù)點固定在符號位之后,則該數(shù)是一個純小數(shù)。 例如 N=0.110

12、101001(3)若把小數(shù)點定在最末位之后,這時表示一個純整數(shù)(定點整數(shù))。 例如 N=01011010,2.1.3 數(shù)值數(shù)據(jù)的表示方法,二. 浮點表示法1. 通用浮點數(shù)表示形式: 任何一個二進制數(shù)N都可以表示為 N=(-1)S×F×2E其中S表示浮點數(shù)的符號(1表示負數(shù)),F(xiàn)稱為數(shù)N的尾數(shù),表示數(shù)N的全部有效數(shù)據(jù),其值在0和1之間。 E是一個二進制整數(shù),稱為數(shù)N的

13、指數(shù)(或稱為階碼),指明該數(shù)的小數(shù)點位置,表示數(shù)據(jù)的大小范圍。如:N=(-1)0×0.1011010×2011 N=(-1)1×0.1110010×2-1,2.1.3 數(shù)值數(shù)據(jù)的表示方法,MIPS中浮點數(shù)的表示如下:單精度浮點數(shù):32位,其中,S為浮點數(shù)的符號位,指數(shù)域為8位寬(包括指數(shù)的符號位),尾數(shù)域為23位寬。浮點數(shù)表示法可擴大數(shù)值的表示范圍,但依然

14、可能會因數(shù)太大而不能表示。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,雙精度浮點數(shù):兩個32位,其中,S為浮點數(shù)的符號位,指數(shù)域為11位寬(包括指數(shù)的符號位),尾數(shù)域為52位寬。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,幾個相關概念: 科學計數(shù)法:十進制小數(shù)點左邊只有一位整數(shù)的記數(shù)法。規(guī)格化數(shù): 一個采用科學記數(shù)法表示的數(shù),若沒有前導零且小數(shù)點左邊只有一位整數(shù),則可稱為規(guī)格化數(shù)。如: 1.010×10-9 √ 0

15、.110×10-9 × 10.010×10-9 ×二進制規(guī)格化浮點數(shù) 尾數(shù)部分的小數(shù)點左邊只保留一位非零數(shù)。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,采用規(guī)格化科學記數(shù)法的優(yōu)點:-簡化了浮點數(shù)的數(shù)據(jù)交換-簡化了浮點算術算法-提高了用一個字存儲的數(shù)的精度偏移(移碼)表示法在浮點數(shù)加減中,將兩數(shù)的指數(shù)調(diào)整為相同。若指數(shù)用補碼表示,不易比較其大小。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,為

16、更直觀比較指數(shù)的大小,可用移碼表示浮點數(shù)的指數(shù)。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,移碼定義: [E]移 = E+Bias E為指數(shù)的真值,Bias 為偏階,通常 Bias= 2n ,其中,n為指數(shù)的數(shù)碼位位數(shù), 2n 是符號位的位權。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,2. IEEE 754浮點標準: N=(-1)S×(1+Fraction)×2(Exponent-Bias)

17、注: IEEE 754 標準隱藏規(guī)格化二進制數(shù)的前導位1,因此,F(xiàn)raction只是尾數(shù)域的值,其值在0和1之間,真正有效位的值為: 1+Fraction 。Exponent是指數(shù)域的值,Exponent-Bias指明該數(shù)的小數(shù)點位置,表示數(shù)據(jù)的大小范圍。IEEE 754規(guī)定: 單精度浮點數(shù)的偏階為127,即:Bias=127 雙精度浮點數(shù)的偏階為1023,即:Bias=1023,2.1.3 數(shù)值數(shù)據(jù)的表示方法

18、,N=(-1)S×(1+Fraction)×2(Exponent-Bias)在MIPS中的表示:,單精度:,雙精度:,2.1.3 數(shù)值數(shù)據(jù)的表示方法,注意:由于0 沒有前導位1,它的指數(shù)保留為0,所以硬件就不會將前導位1加到尾數(shù)上。因此,0 的表示為000……02。其它數(shù)的表示依然采用前面的形式。,2.1.3 數(shù)值數(shù)據(jù)的表示方法,3. 例1:分別用IEEE 754 的單精度和雙精度格式來表示-0.7510。

19、解:先將-0.7510轉(zhuǎn)換為二進制小數(shù)形式: N = -0.7510 = -0.112 科學記數(shù)表示為: N = -0.112 × 20 規(guī)格化的科學記數(shù)表示為: N = -1.12 × 2-1,2.1.3 數(shù)值數(shù)據(jù)的表示方法,N = -1.12 × 2-1由于單精度表達式為:N=(-

20、1)S×(1+Fraction)×2(Exponent-Bias) 所以:Fraction = (1.1 - 1 )2= 0.12 Exponent = -1 + 127 = 126最終,單精度二進制格式為:,2.1.3 數(shù)值數(shù)據(jù)的表示方法,N = -1.12 × 2-1由于雙精度 中:Bias = 1023 所以:Fraction = (1.1 - 1 )2=

21、 0.12 Exponent = -1 + 1023 = 1022最終,雙精度二進制格式為:,2.1.3 數(shù)值數(shù)據(jù)的表示方法,例2:將X = 23×(-13/16))用IEEE 754的單精度浮點格式來表示。,解: X = 23×(-0.8125)10= 23×(-0.1101)2規(guī)格化的科學記數(shù)表示為:X = -1.1012 × 22Frac

22、tion = (1.101 - 1 )2= 0.1012Exponent = 2+ 127 = 129,2.1.3 數(shù)值數(shù)據(jù)的表示方法,X = -1.1012 × 22Fraction = (1.101 - 1 )2= 0.1012Exponent = 2+ 127 = 129所以,單精度二進制格式為:,2.1.4 字符的表示,一. ASCII碼“美國標準信息交換代碼”(American Standard Cod

23、e for Information Interchange),簡稱ASCII碼。使用8位的字節(jié)來表示字符。 (見課本P72 圖2-15)二. Unicode Unicode是大多數(shù)人類語言中字母的通用編碼。通常采用16位來表示一個字符。 (見課本P74 圖2-16),2.2 MIPS指令集,2.2.1 基本概念:一. 指令集一個給定的計算機體系結(jié)構所包含的指令集合。常見的指令集:MIPS,ARMv7,

24、ARMv8,Intel x86二. 存儲程序概念 多種類型的指令和數(shù)據(jù)均以數(shù)字形式存儲于存儲器中。,2.2.2 MIPS的操作數(shù),一. 相關規(guī)定:MIPS算術運算指令的操作數(shù)必須來自寄存器。寄存器大?。?2位。寄存器個數(shù):32個。寄存器的表示:$s0, $s1, … 表示C程序中的變量所對應的寄存器。 $t0, $t1, … 表示將程序編譯為MIPS指令時所需的臨時寄存器。 (其它各寄存器的表示及功能見課

25、本P71圖2-14),2.2.2 MIPS的操作數(shù),例: 使用寄存器編譯C賦值語句 C code f = ( g + h ) – ( i + j ) ; MIPS code add $t0, $s1, $s2 # $t0 contains g + h add $t1, $s3, $s4 # $t1 contains i + j

26、 sub $s0, $t0, $t1 # f gets $t0 - $t1,2.2.2 MIPS的操作數(shù),二. 存儲器操作數(shù)用于存放復雜的數(shù)據(jù)結(jié)構 (如數(shù)組和結(jié)構)編址方式: 按字節(jié)編址,一個字占4個字節(jié)。通過數(shù)據(jù)傳送指令實現(xiàn)存儲器和寄存器之間數(shù)據(jù)的傳送。 -取數(shù)(load)指令:lw -存數(shù)(store)指令:sw,2.2.2 MIPS的

27、操作數(shù),例1:使用取/存數(shù)指令進行編譯C code: A[12] = h + A[8] ; // A is an array of 100 words ( Assume: h ---- $s2 base address of A ---- $s3 ) MIPS code: lw $t0 , 32($s3) # temporary reg $

28、t0 gets A[8] add $t0, $s2, $t0 # temporary reg $t0 gets h + A[8] sw $t0, 48($s3) # stores h + A[8] back into A[12],2.2.2 MIPS的操作數(shù),討論:如何編譯?,g = h + A[i],( Assume: g, h, i -- $s1, $s

29、2, $s4 base address of A -- $s3 ),2.2.2 MIPS的操作數(shù),例2:Compiling using a variable array indexC code: g = h + A[i] ; // A is an array of 100 words( Assume: g, h, i -- $s1, $s2, $s4 base address of A -- $s3 )

30、MIPS code: add $t1, $s4, $s4 # temp reg $t1 = 2 * i add $t1, $t1, $t1 # temp reg $t1 = 4 * i add $t1, $t1, $s3 # $t1 = address of A[i] (4 * i + $s3) lw $t0 , 0($t1)

31、 # temp reg $t0 = A[i] add $s1, $s2, $t0 # g = h + A[i],2.2.2 MIPS的操作數(shù),寄存器溢出(spilling)將不常使用的變量(或稍后才使用的變量)存回到存儲器中的過程。實現(xiàn):使用取數(shù)/存數(shù)指令,2.2.2 MIPS的操作數(shù),三. 常數(shù)或立即數(shù)操作數(shù)程序中經(jīng)常會在某個操作中使用到常數(shù),如:將數(shù)組的下標加1,用以指向下一個數(shù)組元

32、素。例:使寄存器$s3的內(nèi)容加4 。 - 方法一 常數(shù)被事先存放在存儲器中。 假設 AddrConstants4 是常數(shù)4 在內(nèi)存中相對于$ s1的偏移地址。lw $t0, AddrConstant4($s1) # $t0=constant 4add $s3, $s3, $t0 #$s3=$s3+$t0($t0==4),2.2.2 MIPS的操作數(shù),- 方法二 在算術指令中直接

33、提供一個常數(shù)。 addi $s3, $s3, 4#$s3= $s3+ 4 優(yōu)點:速度快,能耗低,小結(jié),MIPS operands,MIPS assembly language,2.2.3 MIPS指令的表示,計算機中所有的信息都表示成二進制位串。 寄存器對應的數(shù)(編號)$s0 ~ $s7 對應16 ~ 23$t0 ~ $t7 對應 8 ~ 15 例:將以下MIPS語言指令翻譯成機器指令 MIPS code

34、 add $t0, $s1, $s2 Decimal version of machine code | 0 | 17 | 18 | 8 | 0 | 32 | Binary version of machine code | 000000 | 10001 | 10010 |

35、 01000 | 00000 | 100000 | 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits,一. MIPS指令格式,op:指令的基本操作,通常稱為操作碼rs: 第一個源操作數(shù)寄存器rt: 第二個源操作數(shù)寄存器rd: 用于存放操作結(jié)果的目的寄存器shamt: 位移量funct: 功能。一般稱為功能碼,用于指明op

36、字段中操作的特定變式。,Region: ±215,指令長度相同,都為32位。,,2.2.3 MIPS指令的表示,例:Translating assembly into machine instruction C code: A[300] = h + A[300] ; ( Assume: h ---- $s2 base address of A ---- $t1 )MIPS as

37、sembly code:lw $t0, 1200($t1) # temporary reg $t0 gets A[300]add $t0, $s2, $t0 # temporary reg $t0 gets h + A[300]sw $t0, 1200($t1) # stores h + A[300] back into A[300]MIPS machine language

38、 code:Decimal version : address/ op rs rt rd shamt funct | 35 | 9 |

39、 8 | 1200 | | 0 | 18 | 8 | 8 | 0 | 32 | | 43 | 9 | 8 |

40、 1200 |,寄存器對應的數(shù)(編號)$s0 ~ $s7 對應16 ~ 23$t0 ~ $t7 對應 8 ~ 15,2.2.3 MIPS指令的表示,MIPS machine language code:Decimal version : address/

41、 op rs rt rd shamt funct | 35 | 9 | 8 | 1200 | | 0

42、 | 18 | 8 | 8 | 0 | 32 | | 43 | 9 | 8 | 1200 |Binary version | 100011

43、 | 01001 | 01000 | 0000 0100 1011 0000 | | 000000 | 10010 | 01000 | 01000 | 00000 | 100000 | | 101011 | 01001 | 01000 | 0000 0100 1011 0000 |

44、 注意:第一條和最后一條指令唯一的不同僅在于操作碼!各指令的op碼和funct碼的值請參看附錄A :p419-p434,2.2.3 MIPS指令的表示,二.兩個重要準則:指令用數(shù)的形式表示。和數(shù)據(jù)一樣,程序存儲在存儲器中,并且可以讀寫。,2.2.4 邏輯操作,C、Java和MIPS中的邏輯操作,2.2.4 邏輯操作,一. 移位(shift)1. 邏輯左移(sll):將一個字里面的所有位向左移動,并在空出來的位上填充0

45、。左移i位相當于乘以 2i2. 邏輯右移(srl):將一個字里面的所有位向右移動,并在空出來的位上填充0。右移i位相當于除以 2i,,2.2.4 邏輯操作,3. 指令格式 [R型]例: sll $t2, $s0, 4#reg $t2=reg $s0<<4 bit對應的機器語言:,,在移位指令中表示位移量,寄存器對應的數(shù)(編號)$s0 ~ $s7 對應16 ~ 23$t0 ~ $t7 對應 8 ~ 15,2

46、.2.4 邏輯操作,二. 按位與(AND) 按位進行與操作,僅當兩個操作位均為1時結(jié)果才為1。例:$t2:0000 0000 0000 0000 0000 1101 0000 0000 $t1:0000 0000 0000 0000 0011 1100 0000 0000 and $t0, $t1, $t2#reg $t0 = reg $t1 & reg $t2Result:0000 0000

47、 0000 0000 0000 1100 0000 0000,2.2.4 邏輯操作,三. 按位或(OR) 按位進行或操作,當兩個操作位中任意一位為1時結(jié)果就為1。例:$t2: 0000 0000 0000 0000 0000 1101 0000 0000 $t1: 0000 0000 0000 0000 0011 1100 0000 0000 or $t0, $t1, $t2#reg $t0=r

48、eg $t1 | reg $t2Result: 0000 0000 0000 0000 0011 1101 0000 0000,2.2.4 邏輯操作,四. 按位取反(NOT)僅有一位操作數(shù),將1變成0,0變成1。MIPS中用或非(NOR)指令取代NOT。 - A NOR 0 =NOT(A OR 0)=NOT(A) - 保持三操作數(shù)格式例:$t1: 0000 0000 0000 00

49、00 0011 1100 0000 0000 $t3: 0000 0000 0000 0000 0000 0000 0000 0000 nor $t0, $t1, $t3#reg $t0=~(reg $t1 | reg $t3)Result: 1111 1111 1111 1111 1100 0011 1111 1111,2.2.4 邏輯操作,五. 立即數(shù)與(andi)和立即數(shù)或(ori)指令

50、 指令格式:I型,2.2.5 決策指令,分支指令 [I型] beq register1, register2, L1 相等則分支 bne register1, register2, L1 不相等則分支 例1:將以下if 語句編譯成條件分支指令 C code: if ( i = = j ) goto L1 ; f =

51、 g + h ; L1: f = f - i ; ( Assume: f ~ j ---- $s0 ~ $s4 ) MIPS assembly code: beq $s3, $s4, L1 # go to L1 if i equals j add $s0, $s1, $s2 # f =

52、g + h ( skipped if i equals j ) L1: sub $s0, $s0, $s3 # f = f - i ( always executed ),2.2.5 決策指令,例2:將以下if-then-else 語句編譯成條件分支指令 ( Assume: f ~ j ---- $s0 ~ $s4 )C code: if ( i

53、 = = j ) f = g + h ; else f = g - h ; MIPS assembly code: bne $s3, $s4, Else # go to Else if i ≠ j add $s0, $s1, $s2 # f = g + h ( Executed if i = = j if) j

54、 Exit # go to Exit Else: sub $s0, $s1, $s2 # f = g - h ( Executed if i ≠ j  else) Exit: # the first instruction of the next C …

55、… statement,2.2.5 決策指令,一. While 循環(huán)語句例:編譯以下 while 循環(huán)語句 ( Assume: i ~ k---- $s3 ~ $s5 base of save ---- $s6 ) C code: while ( save[i] = = k ) i = i + j ; MIPS assembly cod

56、e: Loop: add $t1, $s3, $s3 # temp reg $t1 = 2 * i add $t1, $t1, $t1 # temp reg $t1 = 4 * i add $t1, $t1, $s6 # $t1 =

57、address of save[i] lw $t0, 0($t1) # temp reg $t0 = save[i] bne $t0, $s5, Exit # go to Exit if save[i] != k add $s3, $s3,

58、$s4 # i = i + j j Loop # go to Loop Exit:,2.2.5 決策指令,小于則置位指令(slt)[R型] 如果第一個寄存器小于第二個寄存器,則將第三個寄存器設置為1,否則設置為0。如:slt $t0, $s3, $s4 # $t0=1 if $

59、s3 < $s4 立即數(shù)版小于則置位指令(slti)[I型] 如:slti $t0, $s2, 10 # $t0=1 if $s2 < 10無符號整數(shù)版小于則置位指令(sltu) 如:sltu $t0, $s3, $s4 # $t0=1 if $s3 < $s4,2.2.5 決策指令,例:有符號比較和無符號比較假設: $s0:1111 1111 11

60、11 1111 1111 1111 1111 11112 $s1:0000 0000 0000 0000 0000 0000 0000 00002執(zhí)行以下兩條指令后,求寄存器$t0和$t1 中的值。 slt $t0, $s0, $s1 sltu $t1, $s0, $s1 答案: $t0:1 $t1:0,2.2.5 決策指令,二. case/sw

61、itch語句用于根據(jù)某個變量的值選擇不同分支之一。實現(xiàn)方法:將多個指令序列分支的地址編碼為一張表(轉(zhuǎn)移地址表或轉(zhuǎn)移表),程序只需索引該表即可跳轉(zhuǎn)到恰當?shù)闹噶钚蛄小?2.2.5 決策指令,寄存器跳轉(zhuǎn)指令[R型]jr $r 轉(zhuǎn)移地址表,,$t4,,,,$r←($t4+4*K),,,2.2.5 決策指令,例:使用轉(zhuǎn)移地址表(jump address table)編譯switch語句 ( Assume: f ~ k --

62、-- $s0 ~ $s5 $t2 contains 4 ) C code: switch ( k ) { case 0 : f = i + j ; break ; /* k = 0 */ case 1 : f = g + h ; break ; /* k =

63、 1 */ case 2 : f = g - h ; break ; /* k = 2 */ case 3 : f = i - j ; break ; /* k = 3 */ },L0: add $s0, $s3, $s4

64、 # k = 0 so f gets i + j j Exit # end of this case so go to Exit L1: add $s0, $s1, $s2 # k = 1 so f gets g + h j Exit

65、 # end of this case so go to Exit L2: sub $s0, $s1, $s2 # k = 2 so f gets g - h j Exit # end of this case so go to Exit L3: sub $s0, $s3, $s4 # k

66、 = 3 so f gets i - j Exit: # end of switch statement,MIPS assembly code: slt $t3, $s5, $zero # test if k = 4, go to Exit add

67、 $t1, $s5, $s5 # temp reg $t1 = 2 * k (0<=k<=3) add $t1, $t1, $t1 # temp reg $t1 = 4 * k add $t1, $t1, $t4 # $t1 = address of Ju

68、mpTable[k] lw $t0, 0($t1) # temp reg $t0 = JumpTable[k] jr $t0 # jump based on register $t0,jump address table $t1= $t4+4 * k:,L0

69、:addressL1:addressL2: addressL3:address,,,,,2.2.5 決策指令,一個重要概念:基本塊:沒有分支(可能出現(xiàn)在末尾者除外)并且沒有分支目標/分支標簽(可能出現(xiàn)在開始者除外)的指令序列。 順序執(zhí)行的語句序列,其中只有一個入口和一個出口 -只有一個入口,表示程序中不會有其它任何地方能通過分支指令進入到此基本塊中。 -只有一個出口,表示程序只有最后一條指令能導致進入到其

溫馨提示

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

評論

0/150

提交評論