計算機系統要素:如何從頭構建一臺現代計算機(原書第2版)

相關主題

商品描述

本書涵蓋數電、體系結構、匯編語言、編譯器、操作系統等計算機核心課程的基礎內容,結合項目實踐能夠對整個計算機學科建立宏觀的理解,並能完成製作一個基本計算機系統的任務。

目錄大綱

譯者序

前言

第一分 硬件

I.1 Hello,World之下 2

I.2 從與非門到俄羅斯方塊 3

I.3 抽象與實現 4

I.4 設計方法 5

I.5 前方之路 6

第1章 布爾邏輯 7

1.1 布爾代數 7

1.1.1 布爾函數 8

1.1.2 真值表和布爾表達式 8

1.2 門 9

1.3 硬件構造 10

1.3.1 硬件描述語言 11

1.3.2 硬件模擬 13

1.4 規範 14

1.4.1 與非門 14

1.4.2 基本邏輯門 14

1.4.3 基本門的多位版本 15

1.4.4 基本門的多路版本 16

1.5 實現 17

1.5.1 行為模擬 17

1.5.2 硬件實現 18

1.5.3 內置芯片 19

1.6 實驗 19

1.7 總結與討論 20

第2章 布爾運算 21

2.1 算術運算 21

2.2 二進制數 21

2.3 二進制加法 22

2.4 有符號二進制數 23

2.5 規範 24

2.5.1 加法器 24

2.5.2 算術邏輯單元 25

2.6 實現 28

2.7 實驗 29

2.8 總結與討論 29

第3章 存儲 31

3.1 存儲設備 31

3.2 時序邏輯 32

3.2.1 時間很重要 32

3.2.2 觸發器 34

3.2.3 組合與時序邏輯 34

3.3 規範 35

3.3.1 數據觸發器 36

3.3.2 寄存器 36

3.3.3 RAM 37

3.3.4 計數器 38

3.4 實現 38

3.4.1 數據觸發器 38

3.4.2 寄存器 38

3.4.3 RAM 39

3.4.4 計數器 40

3.5 實驗 40

3.6 總結與討論 41

第4章 機器語言 42

4.1 機器語言概述 42

4.1.1 硬件單元 42

4.1.2 語言 43

4.1.3 指令 44

4.2 Hack的機器語言 45

4.2.1 背景 45

4.2.2 程序示例 48

4.2.3 Hack語言規範 49

4.2.4 符號 50

4.2.5 輸入/輸出處理 52

4.2.6 語法約定和文件格式 52

4.3 Hack編程 53

4.4 實驗 55

4.5 總結與討論 57

第5章 計算機體系結構 58

5.1 計算機體系結構基礎 58

5.1.1 存儲程序的概念 58

5.1.2 馮·諾依曼體系結構 59

5.1.3 存儲器 59

5.1.4 中央處理單元 60

5.1.5 輸入和輸出 61

5.2 Hack硬件平臺規範 62

5.2.1 概述 62

5.2.2 中央處理單元 62

5.2.3 指令存儲器 63

5.2.4 輸入/輸出 63

5.2.5 數據存儲器 65

5.2.6 計算機 66

5.3 實現 66

5.3.1 中央處理單元 66

5.3.2 內存 68

5.3.3 計算機 68

5.4 實驗 69

5.5 總結與討論 70

第6章 匯編器 72

6.1 背景 72

6.2 Hack機器語言規範 73

6.2.1 程序 74

6.2.2 符號 74

6.2.3 語法約定 75

6.3 匯編到二進制的翻譯 76

6.3.1 處理指令 76

6.3.2 處理符號 76

6.4 實現 77

6.4.1 實現一個基本的匯編器 77

6.4.2 完成匯編器 79

6.5 實驗 79

6.6 總結與討論 81

第二分 軟件

II.1 Jack編程初探 85

II.2 程序的編譯 87

第7章 虛擬機Ⅰ:處理 89

7.1 虛擬機範式 90

7.2 棧機器 91

7.2.1 入棧和出棧 91

7.2.2 棧上的算術運算 92

7.2.3 虛擬內存段 94

7.3 虛擬機規範:第一分 94

7.4 實現 95

7.4.1 Hack平臺上的標準虛擬機

映射:第一分 96

7.4.2 虛擬機模擬器 98

7.4.3 有關虛擬機實現的設計建議 99

7.5 實驗 101

7.6 總結與討論 102

第8章 虛擬機Ⅱ:控制 105

8.1 高級魔法 105

8.2 分支 106

8.3 函數 108

8.4 虛擬機規範:第二分 113

8.4.1 分支命令 113

8.4.2 函數命令 113

8.4.3 虛擬機程序 113

8.5 實現 114

8.5.1 函數調用和返回 114

8.5.2 Hack平臺上的標準虛擬機

映射:第二分 115

8.5.3 有關虛擬機實現的設計建議 117

8.6 實驗 118

8.7 總結與討論 120

第9章 高級語言 122

9.1 例子 122

9.2 Jack語言規範 126

9.2.1 語法元素 126

9.2.2 程序結構 127

9.2.3 數據類型 128

9.2.4 變量 130

9.2.5 語句 130

9.2.6 表達式 130

9.2.7 子例程調用 131

9.2.8 對象的創建與 132

9.3 編寫Jack應用程序 132

9.4 實驗 133

9.5 總結與討論 134

第10章 編譯器Ⅰ:語法分析 136

10.1 背景 137

10.1.1 詞法分析 137

10.1.2 語法規則 138

10.1.3 語法解析 139

10.1.4 解析器 141

10.2 規範 142

10.2.1 Jack語言的語法 143

10.2.2 Jack語言的語法分析器 144

10.3 實現 144

10.3.1 Jack分詞器 145

10.3.2 編譯引擎 145

10.3.3 Jack分析器 147

10.4 實驗 147

10.4.1 分詞器 148

10.4.2 編譯引擎 149

10.5 總結與討論 150

第11章 編譯器Ⅱ:代碼生成 151

11.1 代碼生成 152

11.1.1 變量的編譯 152

11.1.2 表達式的編譯 155

11.1.3 字符串的編譯 157

11.1.4 語句的編譯 157

11.1.5 對象的編譯 159

11.1.6 數組的編譯 165

11.2 規範 166

11.3 實現 166

11.3.1 虛擬機上的標準映射 167

11.3.2 實現指南 167

11.3.3 軟件架構 170

11.4 實驗 172

11.4.1 實施段 172

11.4.2 測試程序集 173

11.5 總結與討論 174

第12章 作系統 176

12.1 背景 177

12.1.1 數學運算 177

12.1.2 字符串 180

12.1.3 內存管理 181

12.1.4 圖形化輸出 183

12.1.5 字符的輸出 185

12.1.6 鍵盤輸入 186

12.2 Jack作系統規範 187

12.3 實現 187

12.4 實驗 192

12.4.1 測試計劃 192

12.4.2 完整測試 194

12.5 總結與討論 195

第三分 進一步討論

第13章 探索更多樂趣 198

13.1 硬件的實現 198

13.2 硬件的改進 199

13.3 高級語言 199

13.4 化 199

13.5 通信 199

附錄

附錄A 布爾函數綜合 202

附錄B 硬件描述語言 206

附錄C 測試描述語言 217

附錄D Hack芯片集合 227

附錄E Hack中的字符集 228

附錄F Jack作系統的API 229