计算机组织与设计软硬体介面.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机组织与设计软硬体介面

第二章 指令:電腦語言 計算機結構 (第二﹑三週) 簡介 計算機五大要件 中央處理器(CPU) 主記憶體 (Main Memory) 輔助記憶體(Auxiliary Memory) 輸入裝置 (Input devices) 輸出裝置 (Output devices) 簡介 微處理器單元 控制單元: 負責轉譯指令並且處理控制匯流排的訊號 算術邏輯單元 (ALU): 執行算術以及邏輯運算 Add, Sub, Mul, Div Not, And, Or, XOR 暫存器: 中央處理器裡面的記憶體 簡介 中央處理器 製造商 Intel: Pentium III, IA-64 AMD: K6-3, K7 IBM: PowerPC Sun: SPARC HP: PA-RISK, IA-64 DEC: Alpha MIPS: MIPS 電腦硬體中的運算 MIPS 處理器 指令 指令集 SPIM 可執行 MIPS程式的模擬器 Unix, Windows, and Dos 版的 SPIM 模擬器可在 /cod2e.htm 取得 電腦硬體中的運算 MIPS 組合語言語法 add a, b, c # a = b+c; 將變數 b 與 c 相加並將總和放進 a中 如果要將變數 b, c, d 與 e 相加並將其值存入變數 a中,則我們需要作下列三道指令: add a, b, c add a, a, d add a, a, e # a = b+c+d+e; MIPS語言每行最多包涵一道指令 設計原則 1: 簡單明瞭有助於一致性 因為設計一套不定數目運算元的硬體比設計一套固定數目運算元的硬體困難多了。 電腦硬體中的運算 範例. 這是C語言的程式片段: a = b + c; d = a - e; 請寫出C編譯程式所產生的MIPS程式碼 解答 add a, b, c sub d, a, e 範例.這也是C語言的程式片段,這例子比上例還複雜一些: f = (g+h) - (i+j); 請寫出C編譯程式所產生的MIPS程式碼 解答. add t0, g, h # 臨時變數 t0 包含 g+h add t1, i, j sub f, t0, t1 電腦硬體中的運算 與高階程式語言不同的是,算術運算指令的運算元一定是暫存器 (register)。 MIPS 有 32個 32-bit 暫存器. 設計原則 2:小就是快(Smaller is faster.) 範例. 然而,編譯器需要將程式中的變數與暫存器結合在一起。 以下面這行C程式語言來說: f = (g+h) - (i+j); 變數 f, g, h, i, 與 j 分別被指定到暫存器 $s0, $s1, $s2, $s3與 $s4。 編譯過後的MIPS 組合語言碼是怎樣呢? 解答. add t0, g, h add t1, i, j sub f, t0, t1 電腦硬體中的運算 範例: 編譯當運算元在記憶體內的C語言賦值敘述(Assignment statement) 假設A是個100個字組(word)的陣列,且編譯器用暫存器$s1 與 $s2 來和變數g 與h作對應。並且假設此陣列的起始位址(或稱為基址)存在$s3, 試著轉譯下面這道C程式語言: g = h + A[8]; 解答. lw $t0, 32($s3) # $t0 存放 A[8] add $s1, $s2, $t0 # g = h + A[8] 計算機硬體的運算元 排列限制(Alignment restriction ) 在MIPS中,字組(word)的起始位址永遠都是4的倍數 計算機硬體的運算元 範例. 利用載入及儲存進行編譯 假設變數h對應到$s2暫存器,且陣列A的基址暫存器在$s3。則 試問底下C賦值敘述之MIPS組合語言碼為何? A[12] = h + A[8]; 解答. lw $t0, 32($s3) #暫存器$t0存放A[8] add $t0, $s2, $t0 #暫存器$t0存放(h+A[8]) sw $t0, 48($s3) #將h+A[8]存入A[12] 計算機硬體的運算元 範例 利用陣列索引變數進行編譯 底下是一個索引值本身是變數的陣列: g = h + A[i]; 假設A是個基址放在暫存器$s3、具有100個元素的陣列。設編譯器將變數g、h、i分別對應到$s1、$s2、$s4。試問這個程

文档评论(0)

shujukd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档