出版時間:2006-1 出版社:清華大學出版社 作者:賴斯 頁數(shù):633
Tag標簽:無
前言
本書特點 匯編語言和計算機體系結(jié)構(gòu)都是難學的課程。傳統(tǒng)的匯編語言是如此復雜和特別,以至于即使學習基本概念都可能是一項困難任務。計算機體系結(jié)構(gòu)也有同樣的問題,而且更嚴重。學習匯編語言,我們要研究一個復雜系統(tǒng);而學習計算機體系結(jié)構(gòu),則要研究許多復雜系統(tǒng)?! ∧敲丛鯓硬拍茏钣行У貙W習匯編語言和計算機體系結(jié)構(gòu)呢?本書采用的方法是使用一個簡單的計算機模型HIHI非常容易學習,學生可以迅速用HI完成大量任務。另外,學生可以著重學習重要的系統(tǒng)概念,而不是無關(guān)緊要的細節(jié)?! ∈褂煤唵蔚挠嬎銠C模型介紹基本概念很難說是一項創(chuàng)新技術(shù)。但是,本書以兩種創(chuàng)新的方式使用Hl模型。第一,HI幾乎出現(xiàn)在每一章。結(jié)果是連貫的計算機系統(tǒng)的開發(fā),而不是不相關(guān)主題的集合。第二,HI不是靜態(tài)模型,而是有一些學生可以修復的缺陷(事實上是重大缺陷)。HI的缺陷不是本書的缺陷,相反,它們是本書用來使學生參與設(shè)計和實現(xiàn)過程的資源?! ”緯淖钪匾攸c之一是提供大量幫助更好理解的練習。例如,學生可以用c++或Ja-va編寫連接器,或者為HI實現(xiàn)一種面向堆棧的體系結(jié)構(gòu)并評估其性能?! ∫驗楸緯攸c在重要的系統(tǒng)概念上面,所以本書為計算機科學和工程領(lǐng)域的高級課程提供了極好的準備。使用本書的學生將具備在高級編程、編譯器設(shè)計、編程語言設(shè)計、操作系統(tǒng)、高級體系結(jié)構(gòu)和計算機工程方面從事重要工作的知識。 HI完美地示范了計算機體系結(jié)構(gòu)和組織的基本方面。但是,它不能示范現(xiàn)代計算機中存在的某些高級功能。因此,筆者在第I4-I6章增加了關(guān)于現(xiàn)代系統(tǒng)的材料。這幾章涉及存儲系統(tǒng)、RISC、CISC、流水線技術(shù)、SPARC、Pentium和JVM(Java虛擬機,Java Virtual Machine)。 書中各章可以以不同順序講述,某些章節(jié)可以跳過(參見后面的每章前提)。例如,第5章(數(shù)字邏輯電路)可以在第l章之后的任何時間講述,或者跳過;第I6章(Java虛擬機)可以在第7章之后的任何時間講述,或者跳過。
內(nèi)容概要
《匯編語言與計算機體系結(jié)構(gòu)》是一本優(yōu)秀的匯編語言和計算機體系結(jié)構(gòu)教材?書中通過設(shè)計并且逐步完善一個簡單計算機模型HI,系統(tǒng)全面地介紹了計算機體系結(jié)構(gòu)和組織,匯編語言、匯編器和匯編過程,C++和Java實現(xiàn),標準指令集和最優(yōu)指令集,現(xiàn)代存儲系統(tǒng)、SPARC、Pentium和JVM等?!秴R編語言與計算機體系結(jié)構(gòu)》對硬件和軟件均衡對待,適合作為計算機科學、軟件工程及相關(guān)專業(yè)的大學教材?
書籍目錄
第1章數(shù)制1.1簡介1.2按位記數(shù)制1.3各數(shù)制的算術(shù)規(guī)則1.4數(shù)制轉(zhuǎn)換1.5Horner法1.6有符號二進制數(shù)1.6.1符號-絕對值表示法1.6.22的補碼表示法1.6.31的補碼表示法1.6.4加n表示法1.7用2的補碼加法計算減法1.82的補碼和無符號數(shù)的范圍1.9擴展2的補碼和無符號數(shù)1.10溢出1.10.1有符號數(shù)溢出1.10.2無符號數(shù)溢出1.11分析2的補碼數(shù)1.12加法器電路1.13門1.14用加法器執(zhí)行減法1.15比較有符號數(shù)1.16比較無符號數(shù)1.17正數(shù)、負數(shù)和無符號數(shù)的一致對待1.18浮點數(shù)表示法1.18.1科學記數(shù)法1.18.232位IEEE754浮點數(shù)格式1.18.3下溢、溢出和特殊值1.18.4某些Java程序中的計算誤差1.18.5長格式1.19小結(jié)1.20問題第2章機器語言2.1簡介2.2計算機的組件2.3機器語言編程2.4在sim上運行機器語言程序2.5問題第3章H1匯編語言:第1部分3.1簡介3.2匯編語言基礎(chǔ)3.3注釋匯編語言程序3.4使用標號3.5使用匯編器3.6低級語言與高級語言3.7匯編器工作原理3.8使用dup修飾符3.9操作數(shù)字段中的算術(shù)表達式3.10指定當前位置3.11字符串3.12org偽指令3.13end偽指令3.14指令的順序執(zhí)行3.15問題第4章H1匯編語言:第2部分4.1簡介4.2描述指令的簡寫形式4.3直接指令4.4堆棧指令4.5立即指令4.6I/O指令4.7轉(zhuǎn)移指令4.8間接指令4.9相對指令4.10變址4.11連接指令4.12終止指令4.13高級語言中指令的自動生成4.14調(diào)試4.15使用存儲映像式I/O4.16equ偽指令4.17Java程序的潛在問題:大小端4.18問題第5章電子學和數(shù)字邏輯電路基礎(chǔ)5.1簡介5.2電子學基礎(chǔ)5.2.1導體和絕緣體5.2.2一個簡單電路5.2.3有效電壓5.2.4電源5.2.5如何避免觸電5.2.6晶體管5.2.7電容、電感和阻抗5.3組合邏輯電路5.3.1門5.3.2布爾函數(shù)5.3.3最小電路5.3.4使用布爾代數(shù)使電路最小化5.3.5摩根定律的圖示法5.3.6使用卡諾圖使電路最小化5.3.7多路復用器5.3.8解碼器和編碼器5.3.9半加器和全加器5.3.10一位移位器5.3.11乘法器陣列5.3.12算術(shù)邏輯單元5.3.13三態(tài)緩沖器5.3.14ROM5.4時序邏輯電路5.4.1SR觸發(fā)器5.4.2時鐘控制D觸發(fā)器5.4.3時鐘控制JK觸發(fā)器5.4.4邊沿檢測5.4.5T觸發(fā)器5.4.6RAM5.4.7二進制計數(shù)器5.4.8寄存器5.4.9時鐘和序列發(fā)生器5.5集成電路5.6問題第6章H1和V1的微級6.1簡介6.2H1的微級6.2.1H1的組織概述6.2.2微指令6.2.3存儲器數(shù)據(jù)總線6.2.4存儲器地址總線6.2.5寄存器庫6.2.6指定微操作6.2.7驅(qū)動寄存器庫的控制輸入端6.2.8整合H1各部分6.2.9分支多路復用器6.2.10定時問題6.2.11微指令格式6.2.12序列發(fā)生器驅(qū)動的控制輸入端6.2.13基本指令集的微代碼6.2.14硬件/微代碼權(quán)衡6.3在sim上使用新的微代碼6.3.1如何使用!偽指令6.3.2創(chuàng)建配置文件6.3.3創(chuàng)建二進制微代碼6.3.4用新指令集匯編6.3.5在微級上跟蹤6.3.6加密微代碼6.3.7編寫并優(yōu)化復雜的微代碼6.4解釋機器語言指令6.5硬接線控制6.6垂直微編程6.6.1使用V16.6.2構(gòu)成更短的微指令6.6.3匯編垂直微代碼6.7問題第7章評估H1的指令集體系結(jié)構(gòu):第1部分7.1簡介7.2啞編譯器7.3全局變量7.4局部變量7.5變化的相對地址7.6參數(shù)和傳值調(diào)用7.7返回值7.8需要相對指令的原因7.9確定動態(tài)局部變量和參數(shù)的地址7.10間接引用指針7.11問題第8章評估H1的指令集體系結(jié)構(gòu):第2部分8.1簡介8.2引用調(diào)用8.2.1引用調(diào)用的實現(xiàn)8.2.2C++引用參數(shù)的概念視圖8.2.3不間接引用C++引用參數(shù)的情況8.2.4傳值調(diào)用與引用調(diào)用的比較8.2.5常數(shù)和表達式作為變元8.3函數(shù)重載和重命名8.4結(jié)構(gòu)8.5Java中的指針8.6函數(shù)指針8.7數(shù)組8.7.1定義并訪問數(shù)組8.7.2數(shù)組作為變元8.7.3Java中的數(shù)組8.8控制語句8.9有符號數(shù)和無符號數(shù)比較8.10多字加法8.11位級操作8.12遞歸8.13問題第9章高級匯編語言編程9.1簡介9.2指向指針的指針9.3引用調(diào)用及其他地方存在的潛在錯誤9.4關(guān)系和布爾表達式9.5字符串9.6值結(jié)果調(diào)用9.7變長變元列表9.8問題第10章連接和加載10.1簡介10.2浮動字段10.3顯示標題和機器代碼正文的程序10.4小s項10.5禁止重定位10.6分別匯編10.7乘法子例程10.8使用庫10.9分別匯編的優(yōu)點10.10啟動代碼10.11C++模塊的分別編譯10.12問題第11章用C++或Java實現(xiàn)匯編器和連接器11.1簡介11.2編寫匯編器11.2.1一個簡單匯編器的規(guī)范11.2.2操作碼表11.2.3符號表11.2.4使用二進制文件11.2.5讀取輸入文本文件并創(chuàng)建標題11.2.6匯編機器字11.2.7將機器正文寫入輸出文件11.2.8分析輸入11.2.9Java程序的大小端問題11.2.10添加對public、extern和end偽指令的支持11.3編寫連接器11.3.1一個簡單連接器的規(guī)范11.3.2構(gòu)建P、E、R和S表11.3.3重定位地址并解析外部引用11.3.4添加庫支持11.4問題第12章最優(yōu)指令集12.1簡介12.2新增和改進的指令12.2.1mult、m、div和rem12.2.2addc和subc12.2.3scmp12.2.4ucmp12.2.5shll和shrl12.2.6shra12.2.7addy12.2.8or、xor、and和flip12.2.9cali12.2.10sect和dect12.2.11sodd12.2.12esba、reba、bpbp、pobp和pbp12.2.13cora12.2.14bcpy12.3鏈表--使用最優(yōu)指令集示例12.4關(guān)于最優(yōu)指令集的進展報告12.4.1主存儲器的數(shù)量不足12.4.2存儲器存儲字符串的效率不高12.4.3缺少加和減的立即指令12.4.4缺少變址寄存器12.4.5累加器型寄存器太少12.4.6swap指令破壞sp寄存器12.4.7缺少乘法和除法指令12.4.8sp寄存器作為棧頂指針和基址寄存器的雙重用途12.4.9難以獲得堆棧上變量的地址12.4.10缺少塊復制指令12.4.11難以調(diào)用地址已知的函數(shù)12.4.12aloc和dloc指令的局限性12.4.13難以執(zhí)行有符號數(shù)和無符號數(shù)比較12.4.14難以執(zhí)行多字加法12.4.15不支持位級操作12.5問題第13章使用、評估并實現(xiàn)最優(yōu)指令集和堆棧指令集13.1簡介13.2H1上的乘法13.3二維數(shù)組13.4匯編語言中的面向?qū)ο缶幊?3.4.1C++的結(jié)構(gòu)、類和對象13.4.2繼承13.4.3通過指針調(diào)用成員函數(shù)13.4.4虛函數(shù)和多態(tài)性13.5名調(diào)用13.6面向堆棧的體系結(jié)構(gòu)13.6.1體系結(jié)構(gòu)與組織13.6.2以棧頂代替ac寄存器13.6.34位操作碼的可用性13.6.4特殊的堆棧操作13.6.5更簡單的編譯13.6.6返回值13.6.7使用堆棧指令集示例13.6.8比較最優(yōu)指令集和堆棧指令集13.6.9關(guān)于JVM的幾點觀察13.7編寫最優(yōu)和堆棧指令集的微代碼13.8微編程的挑戰(zhàn)13.9問題第14章存儲系統(tǒng)14.1簡介14.2地址的傳送14.3多程序系統(tǒng)14.4直接存儲器存取14.5分時系統(tǒng)14.6重定位寄存器14.7虛擬存儲器14.7.1簡單分頁系統(tǒng)14.7.2關(guān)聯(lián)存儲器14.7.3中斷14.7.4請求式分頁14.7.5請求式分頁的頁面替換策略14.7.6頁面大小的考慮14.7.7超級用戶/用戶模式14.7.8存儲器保護14.7.9分頁的分段14.8高速緩沖存儲器14.8.1緩存的替換策略14.8.2寫策略14.8.3存儲器到緩存的映射方案14.9可共享的程序14.10問題第15章某些現(xiàn)代體系結(jié)構(gòu)15.1簡介15.2CISC與RISC15.3SPARC:RISC體系結(jié)構(gòu)15.3.1重疊的寄存器窗口15.3.2保存和恢復指令15.3.3加載和存儲指令15.3.4轉(zhuǎn)移、call和jmpl指令15.3.5指令流水線15.3.6連接指令15.3.7尋址方式15.3.8一個簡單的匯編語言程序15.3.9合成指令15.3.10編譯器生成的代碼15.3.11存儲映像式I/O15.4Pentium:CISC體系結(jié)構(gòu)15.4.1寄存器結(jié)構(gòu)15.4.2匯編語言15.4.3編譯器生成的代碼15.4.4I/O指令15.5問題第16章Java虛擬機(JVM)16.1簡介16.2JVM的結(jié)構(gòu)16.3某些使用操作數(shù)堆棧的普通操作16.4方法的調(diào)用和返回16.5執(zhí)行引擎的實現(xiàn)16.6明智之舉:JVM使用堆棧體系結(jié)構(gòu)16.7一個簡單的例子16.8常數(shù)池16.9類文件格式16.10字節(jié)碼的空間效率16.11控制語句16.12反匯編類文件16.13對象和數(shù)組16.14JVM:抽象機器16.15問題附錄A指令集匯總(s.txt、b.txt、o.txt、k.txt)附錄B微指令級匯總(mic.txt)附錄C標準指令集的微代碼(s.has)附錄DSPARC匯總(sparc.txt)附錄Ejava虛擬機字節(jié)碼匯總(jvm.txt)附錄FASCII匯總(ascii.txt)附錄G數(shù)制匯總(number.txt)附錄H了解C++對Java程序員的幫助
編輯推薦
通過一個逐步完善的計算機模型來演示基本概念 提供了完整的軟件包(包括模擬器、匯編器和連接器等) 包含對C++和Java實現(xiàn)的匯編級分析 每童都有來自多年教學實踐的大量練習
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
匯編語言與計算機體系結(jié)構(gòu) PDF格式下載