亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chapter2.htm

?? see mips run,mips學習最好的資料
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0036)http://www.xtrj.org/smr/chapter2.htm -->
<HTML><HEAD><TITLE>第二章 MIPS體系結構&nbsp;&nbsp;</TITLE><!-- http://www.xtrj.org/smr/chapter2.htm -->
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META http-equiv=Content-Type content="text/html; charset=gb2312"></HEAD>
<BODY>
<P>第二章 MIPS體系結構 <BR><BR>在計算世界中, "體系結構"一詞被用來描述一個抽象的機器,而不是一個具體的機器 <BR>實現. 
這一點非常有用的, 用來區分在市場廣告上已經被濫用的"體系結構"這個術 <BR>語. 讀者有可能不熟悉"抽象描述",但其概念其實很簡單. 
<BR><BR>當然,如果你是一個喜歡在 滑的路上開快車的司機,前輪還是后輪驅動就很有所謂 
<BR>了。計算機也是如此。如果你需要高性能計算,一個計算機的具體參數與實現對你 <BR>就很重要了。 
<BR><BR>一般而言,一個CPU的體系結構有一個指令集加上一些寄存器而組成。“指令集”與” 
<BR>體系結構“這兩個術語是同義詞。你經常會看見ISA(指令集體系結構--ISA)的縮寫。 
<BR><BR><BR>MIPS體系結構家族包含如下幾代。每一代之間都有一些區別。 <BR><BR>MIPS 1:32位處理器使用的指令集。仍然被廣泛使用著。 
<BR>MIPS II:為R6000機器所定義的,包含了一些細微的改進。后來實現在1995年的32位 <BR>MIPS實現中。 <BR>MIPS 
III:R4xxx的64位指令集。 <BR>MIPC IV: MIPS III的一個細微的升級。定義在R10000和R5000中。 
<BR><BR>上述的MIPS體系結構等級與MIPS公司提供的文檔中定義的是一致的。這些文檔提供 
<BR>了足夠的信息,以使得同一個UNIX應用程序可以在不同的MIPS體系結構等級上運行, 
<BR>但是在操作系統或底層相關的代碼方面的移植方面,顯得不足。MIPS CPU其他一些 <BR>軟件可見的方面都是于具體CPU實清b相關的。 
<BR><BR>在本書中,我將更加慷慨大方些。有時候,我會描述一個在MIPS 體系結構手冊中找 <BR>不到的,但卻在所有MIPS III 
體系結構實現中能發現的并且你會遇到的功能。 <BR><BR>另外,除了ISA等級,大多數MIPS CPU在實現方法上分為兩大類:早期的MIRS R3000和 
<BR>其他所有的32位MIPS CPU;另外就是已MIPS R4000為代表的64位CPU。 <BR><BR>有不少MIPS 
CPU的實現加入了一些新指令和其他一些有趣的功能。對於軟件或工具 <BR>( 如編譯器)而言,要利用這些非標準的,依賴于具體實現的功能是不容易的。 
<BR><BR>我們可以在兩種細節層次上來描述MIPS的體系結構。第一種描述(本章)是在匯編語 
<BR>言的層次上看待你的程序,比如,你在工作站上寫一個應用程序。這也意味著CPU的 <BR>所有一般的計算是可見的。 
<BR><BR>在下面章節里,我們將介紹MIPS的各個方面,包括建構在CPU之上的操作系統所掩蓋 
<BR>的所有CPU的細節,CPU控制寄存器,中斷,陷入,高速緩沖操作和內存管理。至少 <BR>我們會將一個CPU分成一些小部分來學習和介紹。 
<BR><BR><BR><BR><BR>2.1 MIPS匯編語言的特點 
<BR><BR>匯編語言是CPU二進制指令的可讀寫版本。我們在后面將有單獨的一章來講述匯編語 
<BR>言。從來沒有接觸過匯編語言的讀者在閱讀本書時可能會有一些迷惑 。 
<BR><BR>大多數MIPS匯編語言都是非常古板的,都是一些寄存器號碼。但是工具鏈(toolchains)可 
<BR>以使得使用微處理機語言變得簡單。工具鏈至少允許程序員引用一些助記符,而嚴 
<BR>格的匯編語言要求嚴格的數字編碼。大多我們都是用比較熟悉的C預處理器。C預處 <BR>理器會把C風格的注解去掉,而得到一個可用的匯編代碼。 
<BR><BR>有C預處理器的幫助,MIPS匯編程序都是用助記符來表示寄存器。助記符同時也代表 <BR>了每個寄存器的用法(我們將在2.2節介紹這一點) 
<BR><BR>對於熟悉匯編語言但不熟悉MIPS的讀者,下面是一些例子。 <BR><BR>/* this is a comment */ <BR>#so is 
this <BR><BR>entrypoint: #this's a label <BR><BR>addu $1, $2, $3 # (registers) 
$1 = $2 + $3 <BR><BR>與大多數匯編語言一樣, MIPS匯編語言也是以行為單位的。每一行的結束是一個指 
<BR>令的結束,并且忽略任何“#”之后的內容,認為是注釋。在一行里可以有多條指令。 <BR>指令之間要用分號“;”隔開。 
<BR><BR>一個符號(label)是一個后面跟著冒號“:”的字。符號可以是任何字符串的組合。 
<BR>符號被用來定義一段代碼的入口和定義數據段的一個存儲位置。 
<BR><BR>如上所示,許多指令都是3個操作數/符(operand)。目標寄存器在左側(注意,這一 <BR>點與Inetel x86 
正相反)。一般而言,寄存器結果和操作符的順序與C語言或其他符 <BR>號語言的方式是一致的。 例如: <BR><BR>subc $1, $2, $3 
<BR><BR>意味著: <BR><BR>$1 = $2 - $3; <BR><BR>這方面我們就先講這么多。 <BR><BR>2.2 寄存器 
<BR><BR>對於一個程序,可以有32個通用寄存器,分別為:$0-$31。其中,兩個,也只有兩 <BR>個的使用不同于其他。 
<BR><BR>$0:不管你存放什么值,其返回值永遠是零。 
<BR><BR>$31:永遠存放著正常函數調用指令(jal)的返回地址。請注意call-by-registe的jalr指 
<BR>令可以使用任何寄存器來存放其返回地址。當然,如不用$31,看起來程序會有點古 <BR>怪。 
<BR><BR>其他方面,所有的寄存器都是一樣的??梢员挥迷谌魏我粋€指令中(你也可以用$0作 
<BR>為一個指令的目標寄存器。當然不管你存入什么數據,數據都消失了。) 
<BR><BR>MIPS體系結構下,程序計數器不是一個寄存器,其實你最好不要去那樣想。在一個 
<BR>具有流水線的CPU中,程序計數器的值在一個給定的時刻有多個可選值。這一點有點 <BR>迷惑人。jal指令的返回地址跟隨其后的第二條指令。 
<BR><BR>... <BR>jal printf <BR>move $4, $6 <BR>xxx # return here after call 
<BR><BR>上述的解釋是有道理的,因為緊跟蹤jal指令后面的指令,由於在delay slot(延遲 
<BR>位置)上--請記住,關于延遲位置的規則是該指令將在轉移目標(如上述的printf)之 <BR>前執行。延遲位置指令經常被用來傳遞函數調用的參數。 
<BR><BR>MIPS里沒有狀態碼。CPU狀態寄存器或內部都不包含任何用戶程序計算的結果狀態信 <BR>息。 
<BR><BR>hi和lo是與乘法運算器相關的兩個寄存器大小的用來存放結果的地方。它們并不是 
<BR>通用寄存器,除了用在乘除法之外,也不能有做其他用途。但是,MIPS里定義了一 
<BR>些指令可以往hi和lo里存入任何值。想一想我們會發現,這是非常有必要的當你想 <BR>要恢復一個被打斷的程序時。 
<BR><BR>浮點運算協處理器(浮點加速器,FPA),如果存在的話,有32個浮點寄存器。按匯編 <BR>語言的簡單約定講,是從$f0到$31。 
<BR><BR>實際上,對於MIPS I和MIPS II的機器,只有16個偶數號的寄存器可以用來做數學計 
<BR>算。當然,它們可以既用來做單精度(32位)和雙精度(64位)。當你做一個雙精度的 
<BR>運算時,寄存器$f1存放$f0的余數。奇數號的寄存器只用來作為寄存器與FPA之間的 <BR>數據傳送。 <BR><BR>MIPS III 
CPU有32個FP寄存器。但是為了保持軟件與過去的兼容性,最好不要用奇 <BR>數號的寄存器。 <BR><BR>2.2.1 助記符與通用寄存器的用法 
<BR><BR>我們已經描述了一些體系結構方面的內容,下面來介紹一些軟件方面的內容。 <BR><BR>寄存器編號 助記符 用法 <BR>0 zero 
永遠返回值為0 <BR>1 at 用做匯編器的暫時變量 <BR>2-3 v0, v1 子函數調用返回結果 <BR>4-7 a0-a3 子函數調用的參數 
<BR>8-15 t0-t7 暫時變量,子函數使用時不需要保存與恢復 <BR>24-25 t8-t9 <BR>16-25 s0-s7 
子函數寄存器變量。子函數必須保存和恢復使用過的變量在函數返 <BR>回之前,從而調用函數知道這些寄存器的值沒有變化。 <BR>26,27 k0,k1 
通常被中斷或異常處理程序使用作為保存一些系統參數 <BR>28 gp 全局指針。一些運行系統維護這個指針來更方便的存取“static“和”extern" 
<BR>變量。 <BR>29 sp 堆棧指針 <BR>30 s8/fp 第9個寄存器變量。子函數可以用來做楨指針 <BR>31 ra 子函數的返回地□ 
<BR>'7d <BR><BR>雖然硬件沒有強制性的指定寄存器使用規則,在實際使用中,這些寄存器的用法都 
<BR>遵循一系列約定。這些約定與硬件確實無關,但如果你想使用別人的代碼,編譯器 <BR>和操作系統,你最好是遵循這些約定。 
<BR><BR>寄存器約定用法引人了一系列的寄存器約定名。在使用寄存器的時候,要盡量用這 <BR>些約定名或助記符,而不直接引用寄存器編號。 
<BR><BR>1996年左右,SGI開始在其提供的編譯器中使用新的寄存器約定。這種新約定可以用 <BR>來建立使用32位地址或64位地址的程序,分別叫 
"n32"和"n64"。我們暫時不討論這 <BR>些,將會在第10章詳細討論。 <BR><BR>寄存器名約定與使用 <BR><BR>*at: 
這個寄存器被匯編的一些合成指令使用。如果你要顯示的使用這個寄存器(比 <BR>如在異常處理程序中保存和恢復寄存器),有一個匯編directive可被用來禁止匯編 
<BR>器在directive之后再使用at寄存器(但是匯編的一些宏指令將因此不能再可用)。 <BR><BR>*v0, v1: 
用來存放一個子程序(函數)的非浮點運算的結果或返回值。如果這兩個寄 <BR>存器不夠存放需要返回的值,編譯器將會通過內存來完成。詳細細節可見10.1節。 
<BR><BR><BR>*a0-a3: 用來傳遞子函數調用時前4個非浮點參數。在有些情況下,這是不對的。請 <BR>參10.1細節。 <BR><BR>* 
t0-t9: 依照約定,一個子函數可以不用保存并隨便的使用這些寄存器。在作表達 
<BR>式計算時,這些寄存器是非常好的暫時變量。編譯器/程序員必須注意的是,當調用 <BR>一個子函數時,這些寄存器中的值有可能被子函數破壞掉。 
<BR><BR>*s0-s8: 依照約定,子函數必須保證當函數返回時這些寄存器的內容必須恢復到函 
<BR>數調用以前的值,或者在子函數里不用這些寄存器或把它們保存在堆棧上并在函數 
<BR>退出時恢復。這種約定使得這些寄存器非常適合作為寄存器變量或存放一些在函數 <BR>調用期間必須保存原來值。 <BR><BR>* k0, k1: 
被OS的異?;蛑袛嗵幚沓绦蚴褂?。被使用后將不會恢復原來的值。因此 <BR>它們很少在別的地方被使用。 <BR><BR>* gp: 
如果存在一個全局指針,它將指向運行時決定的,你的靜態數據(static data)區 
<BR>域的一個位置。這意味著,利用gp作基指針,在gp指針32K左右的數據存取,系統只 
<BR>需要一條指令就可完成。如果沒有全局指針,存取一個靜態數據區域的值需要兩條 
<BR>指令:一條是獲取有編譯器和loader決定好的32位的地址常量。另外一條是對數據 <BR>的真正存取。為了使用gp, 
編譯器在編譯時刻必須知道一個數據是否在gp的64K范圍 <BR>之內。通常這是不可能的,只能靠猜測。一般的做法是把small global data (小的 
<BR>全局數據)放在gp覆蓋的范圍內(比如一個變量是8字節或更小),并且讓linker報警 
<BR>如果小的全局數據仍然太大從而超過gp作為一個基指針所能存取的范圍。 <BR><BR>并不是所有的編譯和運行系統支持gp的使用。 <BR><BR>*sp: 
堆棧指針的上下需要顯示的通過指令來實現。因此MIPS通常只在子函數進入和 <BR>退出的時刻才調整堆棧的指針。這通過被調用的子函數來實現。sp通常被調整到這 
<BR>個被調用的子函數需要的堆棧的最低的地方,從而編譯器可以通過相對於sp的偏移 <BR>量來存取堆棧上的堆棧變量。詳細可參閱10.1節堆棧使用。 
<BR><BR>* fp: fp的另外的約定名是s8。如果子函數想要在運行時動態擴展堆棧大小,fp作 
<BR>為楨指針可以被子函數用來記錄堆棧的情況。一些編程語言顯示的支持這一點。匯 
<BR>編編程員經常會利用fp的這個用法。C語言的庫函數alloca()就是利用了fp來動態調 <BR>整堆棧的。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲天堂网中文字| 中文字幕在线观看不卡视频| 欧美日韩不卡视频| 日韩免费观看2025年上映的电影| 欧美日韩和欧美的一区二区| 91.麻豆视频| 久久中文字幕电影| 中文字幕在线一区免费| 午夜一区二区三区在线观看| 蜜桃av一区二区在线观看| 国产自产v一区二区三区c| 丁香啪啪综合成人亚洲小说| 欧美在线影院一区二区| 精品美女被调教视频大全网站| 欧美韩国日本不卡| 日韩福利视频导航| 成人avav影音| 日韩精品一区二区三区在线播放| 中文字幕国产一区| 欧美aaaaaa午夜精品| 一本久久a久久精品亚洲| 亚洲精品在线观看网站| 视频一区视频二区中文| www.欧美精品一二区| 国产色综合久久| 韩国欧美国产1区| 欧美一区二区在线免费播放| 一区二区三区精品视频在线| 粉嫩av亚洲一区二区图片| 国产精品视频看| 国模一区二区三区白浆| 日韩一区二区三区免费观看| 日本一不卡视频| 欧美成人vps| 激情文学综合网| 国产午夜精品一区二区三区嫩草| 黑人精品欧美一区二区蜜桃| 日韩欧美国产电影| 国产乱码精品一品二品| 国产欧美一区二区精品性色超碰| 国产激情精品久久久第一区二区| 久久久高清一区二区三区| 国产成人av一区| 亚洲图片你懂的| 在线观看一区二区视频| 一区二区三区日韩在线观看| 色就色 综合激情| 性欧美疯狂xxxxbbbb| 日韩亚洲欧美成人一区| 国产一区二区三区免费播放| 国产欧美日本一区二区三区| 91一区二区三区在线观看| 日韩和的一区二区| 中文字幕精品综合| 欧美伦理电影网| 国产成人精品免费在线| 午夜在线成人av| 综合色天天鬼久久鬼色| 欧美v亚洲v综合ⅴ国产v| av网站免费线看精品| 蜜臀av亚洲一区中文字幕| 中文av一区特黄| 91精品国产综合久久蜜臀| 国产成人久久精品77777最新版本| 亚洲卡通欧美制服中文| 久久久精品免费网站| 91.麻豆视频| 欧美日韩在线三区| 欧洲一区二区三区在线| 一本一本大道香蕉久在线精品 | 精品亚洲免费视频| 亚洲精品免费播放| 国产精品青草久久| 国产亚洲精品资源在线26u| 日韩欧美一区二区免费| 欧美伦理电影网| 欧美一区二区视频网站| 欧美喷水一区二区| 欧美日韩国产电影| 欧美日韩免费视频| 欧美日本视频在线| 欧美性受xxxx| 欧美老年两性高潮| 欧美精品免费视频| 91麻豆精品国产| 日韩一区二区免费电影| 337p日本欧洲亚洲大胆色噜噜| 欧美一区二区精品久久911| 337p亚洲精品色噜噜噜| 制服丝袜中文字幕一区| 欧美成人a视频| 久久精品日产第一区二区三区高清版 | 欧美日高清视频| 欧美一区二区视频观看视频| 精品国产一区二区亚洲人成毛片| 亚洲国产高清在线| 午夜精品久久一牛影视| 国产99久久久久| 9191精品国产综合久久久久久| 久久久五月婷婷| 舔着乳尖日韩一区| caoporm超碰国产精品| 91精品国产乱| 亚洲日穴在线视频| 免费一级欧美片在线观看| 成人午夜电影小说| 欧美成人在线直播| 亚洲综合视频在线观看| 北岛玲一区二区三区四区 | 亚洲综合小说图片| 国产伦精品一区二区三区在线观看 | 色综合天天做天天爱| 欧美α欧美αv大片| 亚洲成人一区二区| 精品久久人人做人人爱| 午夜天堂影视香蕉久久| 91久久精品一区二区| 中文在线资源观看网站视频免费不卡| 亚洲成av人片一区二区梦乃| 91在线免费播放| 国产精品剧情在线亚洲| 成年人网站91| 国产精品视频免费看| 国产成人99久久亚洲综合精品| 日韩欧美亚洲国产精品字幕久久久| 天堂一区二区在线| 69成人精品免费视频| 日韩精品高清不卡| 欧美一区二区三区精品| 激情综合网激情| 久久久青草青青国产亚洲免观| 国产精品亚洲午夜一区二区三区| 精品av久久707| 成人黄色一级视频| 亚洲综合图片区| 欧美一区二区免费| 成人黄色777网| 亚洲一区二区3| 久久久精品人体av艺术| 色综合久久久久| 国产精品一级黄| 亚洲精品ww久久久久久p站| 欧美一区二区三区视频在线| 国产精品中文字幕日韩精品| 亚洲欧洲国产日本综合| 欧美精品亚洲二区| 懂色av一区二区三区免费观看 | 色婷婷久久久久swag精品| 免费黄网站欧美| 亚洲国产精品久久不卡毛片 | 国产午夜精品理论片a级大结局| 精品写真视频在线观看| 欧美一激情一区二区三区| 国产精品系列在线播放| 成人黄色片在线观看| 91女人视频在线观看| 欧美午夜精品久久久| 色综合中文字幕国产| 国产乱妇无码大片在线观看| 免费高清不卡av| 蜜臀国产一区二区三区在线播放| 中文字幕一区二区三区在线观看| 日韩一区二区在线播放| 欧美另类videos死尸| 欧美三级视频在线观看| 欧美日韩一本到| 欧美日韩高清影院| 欧美大片拔萝卜| 精品精品欲导航| 国产色婷婷亚洲99精品小说| 久久久久亚洲综合| 国产精品免费看片| 国产精品黄色在线观看| 国产精品三级视频| 日日夜夜精品视频免费| 久久av中文字幕片| 97久久人人超碰| 欧美一区二区三区视频| 久久久国产精华| 午夜伊人狠狠久久| 国产成人免费av在线| 欧洲精品视频在线观看| 欧美一区二区三区视频免费播放 | 欧美性猛交xxxx乱大交退制版 | 一本久道中文字幕精品亚洲嫩| 欧美伦理电影网| 亚洲色大成网站www久久九九| 日本aⅴ亚洲精品中文乱码| 99久久99久久精品免费观看| 日韩欧美不卡在线观看视频| 国产日韩av一区二区| 欧美一区二区播放| 色网站国产精品| 精品国产乱码久久久久久夜甘婷婷 | 制服丝袜中文字幕一区| 亚洲电影视频在线| 色婷婷精品大视频在线蜜桃视频| 国产精品美女久久久久久久| 狠狠色狠狠色合久久伊人| 欧美肥妇free|