彙編語言與計算機體系結構:使用C++和Java

彙編語言與計算機體系結構:使用C++和Java

彙編語言與計算機體系結構:使用C++和Java,2006年出版,作者是呂宏輝。

彙編語言計算機體系結構都是難學的課程。傳統的彙編語言是如此複雜和特別,以至於即使學習基本概念都可能是一項困難任務。計算機體系結構也有同樣的問題,而且更嚴重。學習彙編語言,我們要研究一個複雜系統;而學習計算機體系結構,則要研究許多複雜系統。那么怎樣才能最有效地學習彙編語言和計算機體系結構呢?本書採用的方法是使用一個簡單的計算機模型H1。H1非常容易學習,學生可以迅速用H1完成大量任務。另外,學生可以著重學習重要的系統概念,而不是無關緊要的細節。

基本介紹

  • 書名:彙編語言與計算機體系結構:使用C++和Java
  • 作者:呂宏輝
  • ISBN:9787302120032
  • 定價:79
  • 出版時間:2006.01.01
圖書目錄
第1章數制1
1.1簡介1
1.2按位記數制1
1.3各數制的算術規則4
1.4數制轉換6
1.5Horner法9
1.6有符號二進制數10
1.6.1符號—絕對值表示法10
1.6.22的補碼錶示法11
1.6.31的補碼錶示法13
1.6.4加n表示法14
1.7用2的補碼加法計算減法14
1.82的補碼和無符號數的範圍15
1.9擴展2的補碼和無符號數16
1.10溢出17
1.10.1有符號數溢出17
1.10.2無符號數溢出18
1.11分析2的補碼數20
1.12加法器電路21
1.13門23
1.14用加法器執行減法24
1.15比較有符號數26
1.16比較無符號數27
1.17正數、負數和無符號數的一致對待27
1.18浮點數表示法28
1.18.1科學記數法28
1.18.232位IEEE754浮點數格式29
1.18.3下溢、溢出和特殊值30
1.18.4某些Java程式中的計算誤差30
1.18.5長格式35
1.19小結35
1.20問題36
第2章機器語言40
2.1簡介40
2.2計算機的組件40
2.3機器語言編程44
2.4在sim上運行機器語言程式48
2.5問題52
第3章H1彙編語言:第1部分54
3.1簡介54
3.2彙編語言基礎55
3.3注釋彙編語言程式58
3.4使用標號58
3.5使用彙編器61
3.6低級語言與高級語言65
3.7彙編器工作原理66
3.8使用dup修飾符67
3.9運算元欄位中的算術表達式68
3.10指定當前位置70
3.11字元串71
3.12org偽指令74
3.13end偽指令75
3.14指令的順序執行76
3.15問題78
第4章H1彙編語言:第2部分81
4.1簡介81
4.2描述指令的簡寫形式81
4.3直接指令82
4.4堆疊指令83
4.5立即指令85
4.6I/O指令90
4.7轉移指令96
4.8間接指令98
4.9相對指令102
4.10變址103
4.11連線指令105
4.12終止指令109
4.13高級語言中指令的自動生成109
4.14調試110
4.15使用存儲映像式I/O115
4.16equ偽指令117
4.17Java程式的潛在問題:大小端118
4.18問題121
第5章電子學和數字邏輯電路基礎125
5.1簡介125
5.2電子學基礎125
5.2.1導體和絕緣體125
5.2.2一個簡單電路126
5.2.3有效電壓127
5.2.4電源127
5.2.5如何避免觸電128
5.2.6電晶體129
5.2.7電容、電感和阻抗131
5.3組合邏輯電路133
5.3.1門133
5.3.2布爾函式134
5.3.3最小電路135
5.3.4使用布爾代數使電路最小化136
5.3.5摩根定律的圖示法137
5.3.6使用卡諾圖使電路最小化138
5.3.7多路復用器141
5.3.8解碼器和編碼器142
5.3.9半加器和全加器143
5.3.10一位移位器144
5.3.11乘法器陣列145
5.3.12算術邏輯單元148
5.3.13三態緩衝器149
5.3.14ROM151
5.4時序邏輯電路153
5.4.1SR觸發器153
5.4.2時鐘控制D觸發器155
5.4.3時鐘控制JK觸發器157
5.4.4邊沿檢測157
5.4.5T觸發器159
5.4.6RAM159
5.4.7二進制計數器160
5.4.8暫存器161
5.4.9時鐘和序列發生器163
5.5積體電路164
5.6問題165
第6章H1和V1的微級168
6.1簡介168
6.2H1的微級168
6.2.1H1的組織概述168
6.2.2微指令170
6.2.3存儲器數據匯流排171
6.2.4存儲器地址匯流排172
6.2.5暫存器庫172
6.2.6指定微操作175
6.2.7驅動暫存器庫的控制輸入端175
6.2.8整合H1各部分176
6.2.9分支多路復用器178
6.2.10定時問題180
6.2.11微指令格式181
6.2.12序列發生器驅動的控制輸入端181
6.2.13基本指令集的微代碼182
6.2.14硬體/微代碼權衡187
6.3在sim上使用新的微代碼189
6.3.1如何使用!偽指令189
6.3.2創建配置檔案189
6.3.3創建二進制微代碼191
6.3.4用新指令集彙編192
6.3.5在微級上跟蹤193
6.3.6加密微代碼198
6.3.7編寫並最佳化複雜的微代碼198
6.4解釋機器語言指令200
6.5硬接線控制201
6.6垂直微編程202
6.6.1使用V1202
6.6.2構成更短的微指令203
6.6.3彙編垂直微代碼205
6.7問題210
第7章評估H1的指令集體系結構:第1部分214
7.1簡介214
7.2啞編譯器214
7.3全局變數218
7.4局部變數221
7.5變化的相對地址229
7.6參數和傳值調用230
7.7返回值235
7.8需要相對指令的原因236
7.9確定動態局部變數和參數的地址238
7.10間接引用指針241
7.11問題243
第8章評估H1的指令集體系結構:第2部分249
8.1簡介249
8.2引用調用249
8.2.1引用調用的實現249
8.2.2C++引用參數的概念視圖256
8.2.3不間接引用C++引用參數的情況257
8.2.4傳值調用與引用調用的比較258
8.2.5常數和表達式作為變元259
8.3函式重載和重命名263
8.4結構267
8.5Java中的指針271
8.6函式指針272
8.7數組274
8.7.1定義並訪問數組274
8.7.2數組作為變元278
8.7.3Java中的數組282
8.8控制語句283
8.9有符號數和無符號數比較285
8.10多字加法285
8.11位級操作286
8.12遞歸287
8.13問題293
第9章高級彙編語言編程301
9.1簡介301
9.2指向指針的指針301
9.3引用調用及其他地方存在的潛在錯誤307
9.4關係和布爾表達式310
9.5字元串313
9.6值結果調用315
9.7變長變元列表321
9.8問題326
第10章連線和載入329
10.1簡介329
10.2浮動欄位330
10.3顯示標題和機器代碼正文的程式334
10.4小s項336
10.5禁止重定位337
10.6分別彙編338
10.7乘法子例程348
10.8使用庫350
10.9分別彙編的優點357
10.10啟動代碼357
10.11C++模組的分別編譯367
10.12問題371
第11章用C++或Java實現彙編器和連線器376
11.1簡介376
11.2編寫彙編器376
11.2.1一個簡單彙編器的規範377
11.2.2操作碼錶378
11.2.3符號表380
11.2.4使用二進制檔案382
11.2.5讀取輸入文本檔案並創建標題385
11.2.6彙編機器字387
11.2.7將機器正文寫入輸出檔案388
11.2.8分析輸入388
11.2.9Java程式的大小端問題388
11.2.10添加對public、extern和end偽指令的支持389
11.3編寫連線器390
11.3.1一個簡單連線器的規範390
11.3.2構建P、E、R和S表391
11.3.3重定位地址並解析外部引用393
11.3.4添加庫支持395
11.4問題396
第12章最優指令集397
12.1簡介397
12.2新增和改進的指令398
12.2.1mult、m、div和rem399
12.2.2addc和subc400
12.2.3scmp401
12.2.4ucmp402
12.2.5shll和shrl403
12.2.6shra404
12.2.7addy405
12.2.8or、xor、and和flip407
12.2.9cali409
12.2.10sect和dect409
12.2.11sodd410
12.2.12esba、reba、bpbp、pobp和pbp411
12.2.13cora416
12.2.14bcpy417
12.3鍊表——使用最優指令集
示例418
12.4關於最優指令集的進展報告424
12.4.1主存儲器的數量不足424
12.4.2存儲器存儲字元串的效率不高424
12.4.3缺少加和減的立即指令425
12.4.4缺少變址暫存器425
12.4.5累加器型暫存器太少425
12.4.6swap指令破壞sp暫存器425
12.4.7缺少乘法和除法指令426
12.4.8sp暫存器作為棧頂指針和基址暫存器的雙重用途426
12.4.9難以獲得堆疊上變數的地址426
12.4.10缺少塊複製指令426
12.4.11難以調用地址已知的函式426
12.4.12aloc和dloc指令的局限性426
12.4.13難以執行有符號數和無符號數比較426
12.4.14難以執行多字加法426
12.4.15不支持位級操作427
12.5問題427
第13章使用、評估並實現最優指令集和堆疊指令集430
13.1簡介430
13.2H1上的乘法430
13.3二維數組437
13.4彙編語言中的面向對象編程441
13.4.1C++的結構、類和對象441
13.4.2繼承452
13.4.3通過指針調用成員函式457
13.4.4虛函式和多態性464
13.5名調用472
13.6面向堆疊的體系結構479
13.6.1體系結構與組織479
13.6.2以棧頂代替ac暫存器480
13.6.34位操作碼的可用性484
13.6.4特殊的堆疊操作485
13.6.5更簡單的編譯486
13.6.6返回值487
13.6.7使用堆疊指令集示例489
13.6.8比較最優指令集和堆疊指令集491
13.6.9關於JVM的幾點觀察492
13.7編寫最優和堆疊指令集的微代碼493
13.8微編程的挑戰496
13.9問題497
第14章存儲系統503
14.1簡介503
14.2地址的傳送503
14.3多程式系統505
14.4直接存儲器存取505
14.5分時系統506
14.6重定位暫存器506
14.7虛擬存儲器508
14.7.1簡單分頁系統509
14.7.2關聯存儲器512
14.7.3中斷514
14.7.4請求式分頁516
14.7.5請求式分頁的頁面替換策略518
14.7.6頁面大小的考慮519
14.7.7超級用戶/用戶模式520
14.7.8存儲器保護521
14.7.9分頁的分段521
14.8高速緩衝存儲器522
14.8.1快取的替換策略523
14.8.2寫策略523
14.8.3存儲器到快取的映射方案524
14.9可共享的程式526
14.10問題527
第15章某些現代體系結構530
15.1簡介530
15.2CISC與RISC530
15.3SPARC:RISC體系結構532
15.3.1重疊的暫存器視窗532
15.3.2保存和恢復指令536
15.3.3載入和存儲指令538
15.3.4轉移、call和jmpl指令543
15.3.5指令流水線546
15.3.6連線指令552
15.3.7定址方式553
15.3.8一個簡單的彙編語言程式555
15.3.9合成指令557
15.3.10編譯器生成的代碼559
15.3.11存儲映像式I/O565
15.4Pentium:CISC體系結構566
15.4.1暫存器結構566
15.4.2彙編語言567
15.4.3編譯器生成的代碼568
15.4.4I/O指令570
15.5問題571
第16章Java虛擬機(JVM)576
16.1簡介576
16.2JVM的結構577
16.3某些使用運算元堆疊的普通操作578
16.4方法的調用和返回579
16.5執行引擎的實現581
16.6明智之舉:JVM使用堆疊體系結構582
16.7一個簡單的例子582
16.8常數池584
16.9類檔案格式585
16.10位元組碼的空間效率589
16.11控制語句590
16.12反彙編類檔案591
16.13對象和數組593
16.14JVM:抽象機器595
16.15問題595
附錄A指令集匯總(s.txt、b.txt、o.txt、k.txt)598
附錄B微指令級匯總(mic.txt)606
附錄C標準指令集的微代碼(s.has)609
附錄DSPARC匯總(sparc.txt)614
附錄Ejava虛擬機位元組碼匯總(jvm.txt)620
附錄FASCII匯總(ascii.txt)625
附錄G數制匯總(number.txt)627
附錄H了解C++對Java程式設計師的
幫助628

相關詞條

熱門詞條

聯絡我們