注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)計(jì)算機(jī)輔助設(shè)計(jì)與工程計(jì)算計(jì)算機(jī)輔助綜合MIPS處理器設(shè)計(jì)透視

MIPS處理器設(shè)計(jì)透視

MIPS處理器設(shè)計(jì)透視

定 價(jià):¥55.00

作 者: (英)Dominic Sweetman著;趙俊良等譯;趙俊良譯
出版社: 北京航空航天大學(xué)出版社
叢編項(xiàng): AKAE嵌入式研究中心推薦教材
標(biāo) 簽: 微處理器/CPU

ISBN: 9787810774307 出版時(shí)間: 2005-06-01 包裝: 膠版紙
開(kāi)本: 23cm 頁(yè)數(shù): 427 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書涵蓋了有關(guān)MIPS處理器的發(fā)展歷史、運(yùn)行原理和編程等諸多內(nèi)容。首先介紹了MIPS的發(fā)展歷史;然后分別對(duì)MIPS處理器的體系結(jié)構(gòu)、協(xié)處理器、Cache、中斷、內(nèi)存管理、浮點(diǎn)運(yùn)算、MIPS指令集、匯編語(yǔ)言編程、C語(yǔ)言編程、代碼的可移植性等細(xì)節(jié)進(jìn)行了詳細(xì)深入的分析;最后列舉了一些MIPS代碼的例子。本書不僅內(nèi)容充實(shí),而且語(yǔ)言通俗易懂,是MIPS體系結(jié)構(gòu)領(lǐng)域中全面性和易讀性結(jié)合的很好的一本書,適合學(xué)習(xí)MIPS體系結(jié)構(gòu)的初學(xué)者;同時(shí)對(duì)于MIPS程序員和高級(jí)用戶也極有參考價(jià)值。本書既可用作計(jì)算機(jī)類、微電子類本科生及研究生教科書和參考書,也可作為從事MIPS軟件開(kāi)發(fā)、計(jì)算機(jī)體系結(jié)構(gòu)研究和開(kāi)發(fā)人員的參考資料。本書前言這是一本關(guān)于MIPS的書。MIPS是20世紀(jì)80年代中期誕生的RISCCPU設(shè)計(jì)之一,也是銷量最好的RISCCPU之一。從SONY、任天堂的游戲主機(jī),到Cisco的路由器,再到SGI的超級(jí)計(jì)算機(jī),到處都能看到MIPSCPU的應(yīng)用。目前,RISC體系結(jié)構(gòu)正面臨著普及與強(qiáng)大的x86體系結(jié)構(gòu)CPU的強(qiáng)烈沖擊,到20世紀(jì)末,MIPS也許會(huì)是那些原始RISCCPU設(shè)計(jì)中惟一正常盈利的體系結(jié)構(gòu)。RISC是一個(gè)有用的名詞,而并非只是市場(chǎng)宣傳用語(yǔ),它體現(xiàn)了20世紀(jì)80年代中期為提高流水線效率所設(shè)計(jì)的一組計(jì)算機(jī)體系結(jié)構(gòu)之間的共同特性。CISC則麻煩得多,因?yàn)樗鼘?shí)際上泛指所有非RISC的東西。本書將采用一個(gè)狹義的CISC定義,用它來(lái)指使用微代碼控制的結(jié)構(gòu),如68000、x86等。本書是為程序員編寫的,這個(gè)目標(biāo)決定了本書內(nèi)容的取舍。如果一個(gè)程序員遇到問(wèn)題或感興趣,那么這些內(nèi)容將包含在本書內(nèi)。這意味著我們不必討論那些困擾了兩代硬件設(shè)計(jì)工程師的MIPS接口問(wèn)題。在操作系統(tǒng)中可能隱藏著許多我們?cè)谶@里討論的細(xì)節(jié)。有許多優(yōu)秀的程序員認(rèn)為C語(yǔ)言已經(jīng)足夠地接近底層了,結(jié)構(gòu)方面的調(diào)節(jié)不需要關(guān)心。但有時(shí)確實(shí)需要深入具體細(xì)節(jié)——對(duì)比特邊界是如何工作的這一問(wèn)題,人類是天生就滿懷好奇的。根據(jù)這個(gè)原則,我們?cè)诿枋鲆粋€(gè)軟件人員可能不熟悉的東西時(shí),傾向于非正式的方式——特別是關(guān)于CPU內(nèi)部工作原理的內(nèi)容。但討論到程序員們以往見(jiàn)過(guò)的東西,如寄存器、指令以及數(shù)據(jù)如何存儲(chǔ)在內(nèi)有等問(wèn)題時(shí),我們將采用更簡(jiǎn)潔和技術(shù)化的說(shuō)法。這里假設(shè)本書的讀者已經(jīng)熟悉并適應(yīng)了C語(yǔ)言。在本書中,大多數(shù)的引用材料使用C語(yǔ)言作為簡(jiǎn)要操作的一種描述方法,特別是在指令集細(xì)節(jié)和匯編語(yǔ)言相關(guān)的章節(jié)。在本書中有些部分是要求讀者要了解CISC(即680x0或x86)匯編語(yǔ)言的,因?yàn)檎驹贑ISC的角度上,MIPS體系結(jié)構(gòu)的獨(dú)創(chuàng)性與特殊性會(huì)更好地體現(xiàn)出來(lái)。當(dāng)然如果不熟悉CISC匯編,這也并沒(méi)有太大關(guān)系。通常需要對(duì)CPU的細(xì)節(jié)了解到本書所述程序的是操作系統(tǒng)開(kāi)發(fā)人員或在嵌入式領(lǐng)域工作的人。嵌入式系統(tǒng)廣義來(lái)說(shuō),是指任何把計(jì)算機(jī)操作得不像計(jì)算機(jī)的用法。這些系統(tǒng)的共同特征是,操作系統(tǒng)并未將CPU工作的細(xì)節(jié)隱藏起來(lái),它對(duì)于程序員來(lái)說(shuō)是可見(jiàn)的。MIPSCPU可以應(yīng)用在很寬的領(lǐng)域內(nèi),例如從游戲程序領(lǐng)域到工業(yè)控制領(lǐng)域。但這并不是說(shuō)本書只是一本參考手冊(cè),要把一個(gè)CPU體系結(jié)構(gòu)留在你的大腦里,就必須真正地理解它。我希望本書能引起希望全面理解現(xiàn)代CPU體系結(jié)構(gòu)的學(xué)生(在校或即將入校的學(xué)生)的編程興趣。如果從頭到尾地將此書讀上一遍,你大概會(huì)期望從綜述到細(xì)節(jié)的逐步深入過(guò)程,本書正是如此。不過(guò)同時(shí),你還會(huì)看到一些按歷史發(fā)展的內(nèi)容表述,通常我們第一次介紹某個(gè)概念時(shí),會(huì)討論關(guān)于它的第一個(gè)版本。Hennessy和Patterson稱此為“進(jìn)化學(xué)習(xí)(learningthroughevolution)”,我們認(rèn)為這是一種優(yōu)秀的表達(dá)方法(當(dāng)然,對(duì)他們來(lái)說(shuō)足夠優(yōu)秀的方法對(duì)我也是一樣的)。因此,在第1章中以一些歷史和背景作為開(kāi)始,把MIPS放在當(dāng)時(shí)的環(huán)境中,來(lái)討論當(dāng)初MIPS的發(fā)明者們?cè)陬^腦中最初形成的相關(guān)技術(shù)和觀念。在第2章中,繼續(xù)跟隨他們的思路討論MIPS機(jī)器語(yǔ)言的特點(diǎn)。為了簡(jiǎn)化指令,前兩章省去了處理器控制方面的細(xì)節(jié),我們把這內(nèi)容留到第3章。處理器機(jī)制難看但實(shí)用,它允許MIPSCPU處理它們的高速緩存(cache)、異常和啟動(dòng)(exceptionsandstartup)與存儲(chǔ)器管理(memorymanagement)。以上三個(gè)主題將分別由第4章到第6章來(lái)討論。MIPS指令集中和浮點(diǎn)數(shù)處理相關(guān)的部分被刻意地分離開(kāi)來(lái)。這種分離使得我們可以設(shè)計(jì)不同程序支持浮點(diǎn)的MIPS處理器,從完全不支持、部分支持到完全支持。所以也把浮點(diǎn)功能放在第7章單獨(dú)介紹。到此為止,是按照一個(gè)合乎邏輯的順序來(lái)使讀者獲取MIPS方面的知識(shí)。但在剩余的章節(jié)中將作一些調(diào)整,將使它們更像一本參考手冊(cè)或是一本基于例子的教程。第8章將全面介紹整個(gè)MIPS指令系統(tǒng)。目的是詳盡地介紹MIPS指令集,但是要比標(biāo)準(zhǔn)MIPS手冊(cè)要簡(jiǎn)潔得多。本書只用了十來(lái)頁(yè)篇幅介紹指令集,而在其他書中則需要一百多頁(yè)來(lái)講述。第9章講述的是匯編語(yǔ)言編程,其組織結(jié)構(gòu)更像一本編程手冊(cè)。本章的風(fēng)格與本書其余章節(jié)不同,它的出現(xiàn)是由于一直沒(méi)有一份合適的MIPS匯編語(yǔ)言手冊(cè)。任何在匯編級(jí)別的編程者,將會(huì)看到本書其余部分都有相關(guān)內(nèi)容。第10章面向的讀者是熟悉C編程而關(guān)心其中MIPS體系結(jié)構(gòu)有影響的部分的,如包括MIPS編譯器下的存儲(chǔ)器管理和參數(shù)傳遞的執(zhí)行。第11章是一個(gè)幫助提示的列表,來(lái)幫助讀者在MIPS和其他CPU間移植軟件。第12章收集了一些軟件的片斷,并加入了注釋,這些都是根據(jù)本書的相關(guān)主題精選出來(lái)的。理解實(shí)際軟件也許會(huì)很困難,但是如果讀者從事MIPS軟件項(xiàng)目開(kāi)發(fā),不管把它看作為一個(gè)風(fēng)格指南,還是看作一個(gè)參考列表,此章將會(huì)非常有用。附錄A(關(guān)于指令時(shí)序)、附錄B(關(guān)于匯編語(yǔ)言語(yǔ)法)和附錄C(關(guān)于目標(biāo)代碼)中包含了很高的技術(shù)含量,盡管有許多東西可能不會(huì)涉及到,但這些是不能被完全忽略的。在附錄D中能看到一些關(guān)于MIPS體系結(jié)構(gòu)的一些消息,能了解到MIPS16、MDMX和MIPSV擴(kuò)展的指令系統(tǒng)。在本書的末尾還能看到相關(guān)的術(shù)語(yǔ)說(shuō)明——可以查詢專用名詞、陌生名詞和縮寫。風(fēng)格和限制(styleandlimits)因?yàn)槊勘緯俭w現(xiàn)了作者的勞動(dòng),所以我最好說(shuō)說(shuō)本書的優(yōu)點(diǎn)。因?yàn)樽x者當(dāng)中有一些學(xué)生,所以我想是否要把MIPS的用法和普通用法區(qū)分開(kāi)。但我決定不這么做,除非這樣做沒(méi)有任何代價(jià)。我也盡量把書寫得具體些,而不那么抽象。我并不關(guān)心像TLB之類的術(shù)語(yǔ)在更大的范圍內(nèi)有什么含義,但會(huì)解釋它們?cè)贛IPS上下文中的意思。人類有很強(qiáng)的總結(jié)能力,我想這一點(diǎn)對(duì)于學(xué)習(xí)者來(lái)說(shuō)不會(huì)造成太大的打擊。本書至少醞釀了七年,所以并不是一朝一夕寫成的。我在1986年開(kāi)始從事MIPS體系結(jié)構(gòu)方面的工作。在1988年之前,我給一些客戶做關(guān)于MIPS體系結(jié)構(gòu)方面的培訓(xùn)課程,其中演示的幻燈片就成了本書的一些框架。在1993年,我將它們收集在一起并給IDT公司做了一個(gè)軟件手冊(cè)作為MIPS文檔包的一部分來(lái)出版,但它僅針對(duì)IDTR3051系列,略去了許多有趣的細(xì)節(jié)。在1995到1996年間,本書加入了64位的CPU的內(nèi)容,并且覆蓋了所有看上去相關(guān)的內(nèi)容。MIPS的傳奇還在繼續(xù),不然,本書只能寫給歷史學(xué)家,MorganKaufmann也將不愿意出版它了。因?yàn)樽珜懞蛯徍吮緯倪^(guò)程相當(dāng)?shù)拈L(zhǎng),所以我不得不定義了一些合理的止步點(diǎn)。有些宣布得太晚的MIPS技術(shù)發(fā)展,書中沒(méi)有涉及,但在出版前更新了附錄D來(lái)盡量多地反映當(dāng)今MIPS方面的發(fā)展。感謝(acknowledgments)本書中的所有主題都是根據(jù)我所從事計(jì)算機(jī)方面的經(jīng)驗(yàn)來(lái)寫的。MikeCole使我對(duì)計(jì)算機(jī)產(chǎn)生了濃厚的興趣,所以從那時(shí)起我就試著效仿他的技巧來(lái)篩選一些好的想法。許多人在Whitechapel工作站教過(guò)我一些關(guān)于計(jì)算機(jī)結(jié)構(gòu)和硬件設(shè)計(jì)方面的東西——可能BobNewman和RickFilipkiewicz是讓我受益最多的人。我也必須感謝Whitechapel的銷售員DaveGravell讓我最初接觸了MIPS。我對(duì)在Algorithmics的工程師同事們(ChrisDearman,RickFilipkiewicz,GeraldOnions,NigelStephens和ChrisShaw)必須致以雙倍的感謝,在同他們無(wú)數(shù)次的探討、爭(zhēng)論和設(shè)計(jì)中使本書能夠跟上時(shí)代的競(jìng)爭(zhēng)。在MorganKaufmann,我也不止耗盡了一個(gè)編輯的精力:BruceSpatz在最初鼓勵(lì)我開(kāi)始寫此書,JenniferMann接管了此事,DenisePenrose幫著出版。還要感謝很多的評(píng)論家對(duì)于本書的章節(jié)花費(fèi)了大量的時(shí)間:IDT(IntegratedDeviceTechnology,Inc.)公司的PhilBourekas,LSILogicCorporation的ThomasDaniel,SGI公司的MikeMurphy和CarnegieMellon大學(xué)的DavidNagle。Algorithmics的NigelStephens寫了最初版本的第9章的一部分和附錄B、附錄C中關(guān)于匯編語(yǔ)言語(yǔ)法和目標(biāo)代碼部分。在這些部分如果有錯(cuò)誤,那全都是我的失誤,與他無(wú)關(guān)。作者

作者簡(jiǎn)介

  Dominic Sweetman屬于最后一代希望從底層到上層理解計(jì)算機(jī)系統(tǒng)的程序員。他豐富的職業(yè)生涯開(kāi)始于編寫底層代碼,從操作系統(tǒng)的開(kāi)發(fā)到網(wǎng)絡(luò)再到分布式系統(tǒng)。他是一位在硬件系統(tǒng)、CPU、網(wǎng)絡(luò)的操作系統(tǒng)方面經(jīng)驗(yàn)豐富的設(shè)計(jì)者和開(kāi)發(fā)者,是Whitechael Workstations的發(fā)起人之一,于1988年創(chuàng)立了Algoritmics公司,并擔(dān)任主管。Dominic和他的妻子、兩個(gè)孩子及三只貓生活在倫敦北部。

圖書目錄

第1章 RISC和MIPS
1.1 流水線2
1.1.1 什么使流水線效率降低?3
1.1.2 流水線和緩存4
1.2 MIPS的五級(jí)流水線4
1.3 RISC 和CISC6
1.4 迄今為止一些重要的MIPS芯片7
1.4.1 R2000到R30007
1.4.2 R6000: 一次偏軌7
1.4.3 R4000革命8
1.4.4 R5000和R100009
1.5 MIPS和CISC體系結(jié)構(gòu)的比較11
1.5.1 MIPS指令集的一些規(guī)定11
1.5.2 編址及內(nèi)存訪問(wèn)12
1.5.3 MIPS不支持的特征13
1.5.4 可能沒(méi)有預(yù)料到的特征14
1.5.5 程序員可見(jiàn)的流水線效果14
第2章 MIPS體系結(jié)構(gòu)
2.1 MIPS匯編語(yǔ)言18
2.2 寄存器的特點(diǎn)19
2.3 整數(shù)乘法單元和寄存器22
2.4 加載和存儲(chǔ):尋址方式23
2.5 存儲(chǔ)器和寄存器中的數(shù)據(jù)類型24
2.5.1 整數(shù)數(shù)據(jù)類型24
2.5.2 未對(duì)齊的加載和存儲(chǔ) 25
2.5.3 存儲(chǔ)器中的浮點(diǎn)數(shù)據(jù) 25
2.6 匯編語(yǔ)言的合成指令 26
2.7 MIPS I發(fā)展到 MIPS IV : 64位(和其他)的擴(kuò)展 27
2.7.1 邁向64位 28
2.7.2 誰(shuí)需要64位?29
2.7.3 關(guān)于64位與無(wú)模式轉(zhuǎn)換:寄存器中的數(shù)據(jù)30
2.7.4 MIPS III的一些其他改進(jìn)31
2.8 基本地址空間 32
2.8.1 簡(jiǎn)單系統(tǒng)的尋址34
2.8.2 核心與用戶權(quán)限34
2.8.3 64位CPU的存儲(chǔ)映射34
2.9 流水線冒險(xiǎn)36
第3章 協(xié)處理器0: MIPS處理器控制
3.1 CPU控制指令41
3.2 起作用的寄存器及起作用的時(shí)機(jī)42
3.3 標(biāo)準(zhǔn)CPU控制寄存器編碼43
3.3.1 處理器ID(PRId)寄存器43
3.3.2 狀態(tài)寄存器(SR)44
3.3.3 原因寄存器(Cause)49
3.3.4 異常返回地址(EPC)51
3.3.5 無(wú)效虛地址寄存器(BadVaddr)51
3.4 R4000以后的CPU專有的控制寄存器51
3.4.1 Count/Compare寄存器: R4000時(shí)鐘51
3.4.2 Config寄存器: R4x00配置52
3.4.3 LoadLinked Address (LLAddr)寄存器54
3.4.4 調(diào)試觀測(cè)點(diǎn)(WatchLo/WatchHi)寄存器54
第4章 MIPS的緩存
4.1 緩存和緩存的管理56
4.2 緩存怎樣工作56
4.3 早期MIPS CPU中的寫透緩存58
4.4 近期MIPS CPU中的回寫緩存59
4.5 緩存設(shè)計(jì)的其他選擇59
4.6 緩存管理60
4.7 二級(jí)和三級(jí)緩存62
4.8 MIPS CPU緩存的構(gòu)造63
4.9 對(duì)R3000風(fēng)格的緩存編程64
4.9.1 使用緩存隔離和交換65
4.9.2 初始化和判斷大小66
4.9.3 緩存無(wú)效66
4.9.4 測(cè)試和探察67
4.10 對(duì)R4000風(fēng)格的緩存編程67
4.10.1 CacheERR、ERR和ErrorEPC寄存器:緩存錯(cuò)誤處理68
4.10.2 緩存指令70
4.10.3 計(jì)算緩存的大小和配置方式71
4.10.4 初始化程序72
4.10.5 在緩存中無(wú)效或者寫回一個(gè)內(nèi)存區(qū)域73
4.11 緩存效率73
4.12 修改軟件來(lái)影響緩存的效率75
4.13 寫緩沖區(qū)和需要關(guān)心它的時(shí)候77
4.14 關(guān)于MIPS緩存的其他話題79
4.14.1 多處理器的緩存特征79
4.14.2 緩存別名79
第5章 異常、中斷和初始化
5.1 精確異常81
5.2 異常發(fā)生時(shí)刻83
5.3 異常向量: 異常處理開(kāi)始的地方83
5.4 異常處理基礎(chǔ)86
5.5 從異常返回87
5.6 嵌套異常87
5.7 一個(gè)異常處理例程88
5.8 中斷88
5.8.1 MIPS處理器的中斷資源89
5.8.2 實(shí)現(xiàn)中斷優(yōu)先級(jí)91
5.8.3 原子性和對(duì)SR的原子改變92
5.8.4 中斷使能下的關(guān)鍵區(qū): MIPS中的信號(hào)量機(jī)制93
5.9 啟動(dòng)94
5.9.1 識(shí)別CPU型號(hào)96
5.9.2 啟動(dòng)序列97
5.9.3 啟動(dòng)一個(gè)應(yīng)用程序97
5.10 模擬指令98
第6章 內(nèi)存管理與TLB
6.1 大型計(jì)算機(jī)上的內(nèi)存管理101
6.1.1 基本進(jìn)程空間布局和保護(hù)101
6.1.2 把進(jìn)程空間映射到真正的物理內(nèi)存103
6.1.3 最佳頁(yè)映射103
6.1.4 我們真正想要的104
6.1.5 MIPS設(shè)計(jì)的起源106
6.2 MIPS TLB的特點(diǎn)106
6.3 MMU的寄存器109
6.3.1 EntryHi、EntryLo和PageMask寄存器110
6.3.2 Index寄存器112
6.3.3 Random寄存器113
6.3.4 Wired寄存器114
6.3.5 Context寄存器及XContext寄存器114
6.4 MMU的控制指令115
6.5 對(duì)TLB編程116
6.5.1 如何產(chǎn)生重裝入116
6.5.2 使用ASID117
6.5.3 Random寄存器與被綁定入口117
6.6 建立內(nèi)存譯碼機(jī)制118
6.7 TLB的異常處理代碼119
6.7.1 32位R3000系列CPU的TLB異常處理函數(shù)120
6.7.2 R4x00系列CPU的TLB異常處理函數(shù)122
6.7.3 XTLB的失效處理函數(shù)124
6.8 跟蹤已修改的頁(yè)(模擬dirty位)124
6.9 內(nèi)存地址譯碼和64位指針125
6.10 使用MIPS的TLB126
6.11 在非Unix系統(tǒng)中的內(nèi)存管理127
第7章 浮點(diǎn)支持
7.1 浮點(diǎn)的基本描述128
7.2 IEEE754標(biāo)準(zhǔn)及其背景129
7.3 怎樣保存IEEE浮點(diǎn)數(shù)130
7.3.1 IEEE尾數(shù)的標(biāo)準(zhǔn)化131
7.3.2 對(duì)使用特殊值時(shí)的保留指數(shù)值131
7.3.3 MIPS浮點(diǎn)數(shù)據(jù)格式132
7.4 IEEE754的MIPS實(shí)現(xiàn)134
7.5 浮點(diǎn)寄存器135
7.6 浮點(diǎn)異常/中斷136
7.7 浮點(diǎn)控制: 控制/狀態(tài)寄存器137
7.8 浮點(diǎn)實(shí)現(xiàn)/校正寄存器139
7.9 浮點(diǎn)指令指南140
7.9.1 裝入/存儲(chǔ)140
7.9.2 寄存器間的傳送141
7.9.3 三個(gè)操作數(shù)算術(shù)操作142
7.9.4 乘加操作143
7.9.5 一元(可變符號(hào))操作143
7.9.6 轉(zhuǎn)換操作143
7.9.7 條件分支和測(cè)試指令144
7.10 指令時(shí)序安排的要求146
7.11 指令時(shí)序?qū)λ俣刃枨?47
7.12 按需初始化和使能147
7.13 浮點(diǎn)模擬148
第8章 MIPS指令集完全指南
8.1 一個(gè)簡(jiǎn)單的例子149
8.2 匯編助記符及其含義150
8.2.1 U和NonU(非U)助記符152
8.2.2 除法助記符153
8.2.3 指令的詳細(xì)清單153
8.3 浮點(diǎn)處理指令175
8.4 特殊指令及其用途179
8.4.1 向左加載/向右加載(load left/load right): 地址非對(duì)齊的存取操作179
8.4.2 關(guān)聯(lián)加載/條件存儲(chǔ)(loadlinked/storeconditional)183
8.4.3 條件拷貝(conditional move)指令184
8.4.4 可能跳轉(zhuǎn)的指令(branchlikely)185
8.4.5 整數(shù)乘累加指令(interget multiplyaccumulate)和乘加指令(multiplyadd)186
8.4.6 浮點(diǎn)乘加指令(floatingpoint multiplyadd)187
8.4.7 多浮點(diǎn)條件標(biāo)志位187
8.4.8 緩存數(shù)據(jù)預(yù)取188
8.4.9 存取同步屏障:Sync指令189
8.5 指令的機(jī)器編碼190
8.5.1 指令編碼中的域190
8.5.2 指令編碼表的注意事項(xiàng)202
8.5.3 編碼方式和處理器實(shí)現(xiàn)的簡(jiǎn)單剖析203
8.6 指令集的功能分組203
8.6.1 空操作204
8.6.2 寄存器間的數(shù)據(jù)拷貝指令204
8.6.3 立即數(shù)加載指令204
8.6.4 算術(shù)/邏輯操作指令205
8.6.5 整數(shù)乘法、除法以及求余指令207
8.6.6 整數(shù)乘累加指令208
8.6.7 存取指令209
8.6.8 跳轉(zhuǎn)、分支和子程序調(diào)用指令211
8.6.9 斷點(diǎn)及異常指令212
8.6.10 0#協(xié)處理器(CP0)處理指令212
8.6.11 浮點(diǎn)操作指令213
8.6.12 ATMizerII系統(tǒng)的專用浮點(diǎn)指令215
第9章 匯編程序設(shè)計(jì)
9.1 一個(gè)簡(jiǎn)單的例子216
9.2 語(yǔ)法簡(jiǎn)介220
9.3 指令使用規(guī)則221
9.3.1 帶1~3個(gè)寄存器的計(jì)算型指令221
9.3.2 帶立即數(shù)的運(yùn)算指令222
9.3.3 關(guān)于32/64位指令223
9.4 尋址模式223
9.5 匯編偽指令226
9.5.1 段的選擇226
9.5.2 包含堆棧的程序布局228
9.5.3 數(shù)據(jù)的定義與對(duì)齊229
9.5.4 符號(hào)綁定屬性231
9.5.5 函數(shù)偽指令233
9.5.6 匯編器控制偽操作(.set)235
9.5.7 編譯/調(diào)試支持237
9.5.8 SGI匯編語(yǔ)言中增加的偽操作237
第10章 MIPS上的C語(yǔ)言編程
10.1 堆棧、子程序鏈接以及參數(shù)傳遞239
10.2 堆棧參數(shù)結(jié)構(gòu)240
10.3 使用寄存器傳遞參數(shù)241
10.4 C庫(kù)范例242
10.5 一個(gè)特殊的例子傳遞數(shù)據(jù)結(jié)構(gòu)243
10.6 傳遞不定數(shù)量的參數(shù)244
10.7 函數(shù)的返回值245
10.8 擴(kuò)展寄存器——使用標(biāo)準(zhǔn)SGI n32和n64245
10.9 堆棧分布、堆棧幀以及輔助調(diào)試器248
10.9.1 leaf函數(shù)250
10.9.2 nonleaf函數(shù)251
10.9.3 適用于復(fù)雜堆棧要求的堆棧幀指針254
10.10 數(shù)目可變的參數(shù)列表257
10.11 不同線程間的共享函數(shù)和共享庫(kù)問(wèn)題258
10.11.1 單一地址空間的代碼共享259
10.11.2 MIPS ABI中的共享庫(kù)代碼259
10.12 編譯器的優(yōu)化261
10.12.1 普通優(yōu)化262
10.12.2 優(yōu)化不友好的代碼并且如何避免264
10.12.3 優(yōu)化約束265
10.13 通過(guò)C進(jìn)行器件訪問(wèn)的提示265
10.13.1 使用“volatile”制約破壞性的優(yōu)化266
10.13.2 C中的非對(duì)齊數(shù)據(jù)267
第11章 可移植性和C代碼
11.1 MIPS的移植: 常見(jiàn)問(wèn)題清單270
11.2 一個(gè)理想的程序移植過(guò)程272
11.2.1 程序移植的3個(gè)選擇272
11.2.2 解決系統(tǒng)相關(guān)的問(wèn)題273
11.2.3 分離不可移植代碼274
11.2.4 何時(shí)使用匯編274
11.3 可移植C程序和語(yǔ)言標(biāo)準(zhǔn)275
11.4 C庫(kù)函數(shù)和POSIX276
11.5 數(shù)據(jù)表示和對(duì)齊277
11.6 尾端: 字、字節(jié)和位的順序279
11.6.1 尾端和程序員281
11.6.2 尾端:  描述和腦力問(wèn)題282
11.6.3 尾端: 硬件問(wèn)題284
11.6.4 互相對(duì)立尾端陣營(yíng)之間的連接286
11.6.5 可配置尾端的連接287
11.6.6 處理MIPS CPU的兩種尾端的軟件288
11.6.7 可移植性與尾端無(wú)關(guān)代碼290
11.6.8 尾端和外部數(shù)據(jù)291
11.6.9 尾端問(wèn)題“預(yù)知”和“治愈”的假象292
11.7 高速緩存會(huì)引起什么樣的錯(cuò)誤?怎樣才能阻止它?292
11.7.1 高速緩存的管理和DMA數(shù)據(jù)294
11.7.2 高速緩存的管理和指令數(shù)據(jù)的寫入295
11.7.3 高速緩存的管理和非高速緩存(或?qū)懲福┑臄?shù)據(jù)295
11.8 MIPS的不同實(shí)現(xiàn)295
第12章 軟件舉例
12.1 MIPS的啟動(dòng)298
12.2 MIPS緩存管理309
12.2.1 緩存操作:緩存指令出現(xiàn)前的32位MIPS310
12.2.2 Cache操作: 遵從MIPS III和Cache指令320
12.3 MIPS異常處理337
12.3.1 xcption: 為程序員做些什么?337
12.3.2 xcption: C語(yǔ)言接口代碼338
12.3.3 xcption: 低層模塊(lowlevel module)339
12.4 MIPS中斷355
12.5 MIPS的優(yōu)化357
附錄A指令時(shí)序與優(yōu)化
A.1 避免冒險(xiǎn): 確保代碼正確363
A.2 避免互鎖提高性能364
A.3 乘法單元冒險(xiǎn): hi和lo的早期修正365
A.4 避免CP0冒險(xiǎn): 要使用多少nop?365
A.5 CP0指令/指令調(diào)度(instruction scheduling)367
A.6 CP0標(biāo)志位(flags)和指令369
附錄B匯編語(yǔ)言語(yǔ)法
附錄C目標(biāo)代碼
C.1 工具377
C.2 區(qū)和段(section & segment)378
C.3 ECOFF(RISC/OS)379
C.3.1 文件頭379
C.3.2 可選的a.out頭381
C.3.3 調(diào)入器(loader)舉例382
C.3.4 進(jìn)一步閱讀383
C.4 ELF(MIPS ABI)383
C.4.1 文件頭383
C.4.2 程序頭385
C.4.3 調(diào)入器舉例385
C.4.4 進(jìn)一步閱讀387
C.5 目標(biāo)代碼工具387
附錄DMIPS的發(fā)展
D.1 MIPS16388
D.1.1 MIPS16中的特殊編碼和指令389
D.1.2 MIPS16的評(píng)價(jià)389
D.2 MIPS V/MDMX390
D.2.1 編譯器可以使用多媒體指令嗎?391
D.2.2 MDMX的應(yīng)用392
D.2.3 MIPS V的應(yīng)用393
D.2.4 MDMX/MIPS V可能的成功393
MIPS術(shù)語(yǔ)說(shuō)明394

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)