計算之道 捲I:電腦組成與高級語言
黃俊 張仲文
相關主題
商品描述
本書是一本深入探討電腦科學與技術的圖書,旨在幫助讀者更好地理解電腦內部的工作原理,並探索從內存到線程等核心知識。本書適用於對電腦科學和底層技術感興趣的讀者,無論是學習電腦基礎知識還是進一步擴展技術視野,都能從本書中獲益良多。在這本書中,作者以清晰、易懂的語言詳細介紹電腦內存的結構和工作原理。讀者將瞭解內存的層次結構、存儲器管理、緩存和內存映射等關鍵概念,從而更好地理解電腦是如何存儲和訪問數據的。此外,本書還深入討論了線程和並發編程。讀者將學習多線程編程的基本概念和技術,並瞭解線程同步、互斥鎖、信號量等並發控制機制。通過實例和案例研究,讀者將能夠編寫高效、可靠的多線程應用程序。無論您是學生、工程師還是對電腦科學與技術感興趣的讀者,本書都將成為您不可或缺的參考資料。
作者簡介
黃俊,專註於研究Java語言,專註於研究Hotspot,專註於研究Linux內核,專註於研究C語言與匯編語言,專註於研究架構設計,專註於研究多線程並發處理,專註於研究高效學習方式,曾就職於美團、阿裡,前新東方業務架構師。
目錄大綱
目錄
第 1 章 電腦的組成 1
1.1 一顆電腦種子 1
1.2 百花齊放 2
1.2.1 馮·諾依曼架構 3
1.2.2 哈佛架構 4
1.3 e 進制 5
1.3.1 進制 5
1.3.2 二進制 6
1.3.3 三進制 6
1.3.4 e 進制 7
1.3.5 其他進制 8
1.4 邏輯門與運算單元 10
1.4.1 NMOS 與 PMOS 10
1.4.2 非門(NOT) 10
1.4.3 與門(AND) 11
1.4.4 與非門(NAND) 11
1.4.5 或門(OR) 11
1.4.6 解復用器(de-multiplexer,DEMUX) 12
1.4.7 復用器(multiplexer,MUX) 13
1.4.8 異或門(XOR) 14
1.4.9 多位組合電路 15
1.4.10 半加器(Half Adder) 17
1.4.11 全加器(Full Adder) 18
1.4.12 十六位負數判斷(IsNeg) 18
1.4.13 十六位加法器(Adder16) 18
1.4.14 算術邏輯單元(ALU) 19
1.5 D 觸發器與存儲單元 20
1.5.1 RS 觸發器 20
1.5.2 D 觸發器 21
1.5.3 bit——一位存儲器 22
1.5.4 十六位寄存器 22
1.5.5 高位寄存器內存組合 23
1.5.6 小結 24
1.6 振盪器與計時器 25
1.7 CPU 的組成 26
1.7.1 PC 計數器 26
1.7.2 寄存器 27
1.7.3 功能定義 27
1.7.4 CPU 實現 30
1.8 電腦的組成 32
1.8.1 內存 32
1.8.2 其他設備 33
1.8.3 電腦實現 34
1.9 網絡服務的組成 35
1.9.1 單體網絡服務 35
1.9.2 分佈式服務 36
1.10 小結 37
第 2 章 匯編語言 39
2.1 指令集體系結構(ISA) 39
2.2 CISC 40
2.3 RISC 40
2.4 Intel 指令集 41
2.4.1 指令前綴 42
2.4.2 操作碼 43
2.4.3 ModR/M與SIB 44
2.4.4 位移與立即數 45
2.5 通用匯編指令 45
2.5.1 MOV、ADD、SUB 45
2.5.2 MLU、DIV、SHL、SHR 45
2.5.3 PUSH、POP 46
2.5.4 JMP、JXX 47
2.6 匯編的內存結構 47
2.6.1 位寬 47
2.6.2 步長 47
2.7 匯編 器 48
2.7.1 簡單匯編 48
2.7.2 匯編器 49
2.8 小結 54
第 3 章 如何設計一門語言 55
3.1 語言的目標 55
3.2 類型系統 55
3.3 抽象操作 56
3.3.1 匯編拓展 56
3.3.2 寄存器拓展 57
3.4 內存抽象 57
3.4.1 數組 58
3.4.2 結構體 58
3.5 進程內存結構 58
3.5.1 堆 59
3.5.2 棧 59
3.5.3 數據段 60
3.5.4 代碼段 60
3.5.5 應用程序二進制接口 61
3.6 小結 61
第 4 章 編譯器 63
4.1 編譯原理 63
4.1.1 詞法分析 64
4.1.2 語法分析 76
4.1.3 語義分析 115
4.2 GCC 編譯器源碼 131
4.3 其他編譯器 152
4.4 小結 152
第 5 章 Intel 與匯編 154
5.1 Intel 歷史 154
5.2 Intel 編碼語法 156
5.3 基礎寄存器 157
5.3.1 通用寄存器 157
5.3.2 段寄存器 159
5.3.3 狀態寄存器 161
5.3.4 指令指針寄存器 161
5.4 Intel 內存分段 163
5.5 Intel 內存分頁 168
5.6 保護模式 170
5.6.1 數據段的訪問與檢查 172
5.6.2 代碼段的訪問與檢查 173
5.6.3 調用門 176
5.6.4 中斷與異常 179
5.6.5 任務管理 187
5.7 其他 190
5.7.1 多核處理器 190
5.7.2 APIC 192
5.8 Intel 指令原理 193
5.8.1 PUSH 指令 193
5.8.2 MOV 指令 194
5.8.3 ADD、MUL、DIV、SUB 指令 195
5.8.4 LIDT/LGDT 196
5.9 小結 197
第 6 章 C 語言 198
6.1 C 標準歷史(維基百科) 198
6.1.1 基於 B 語言的第一個 C 版本 199
6.1.2 結構體和 UNIX 內核重寫 199
6.1.3 K&R C 199
6.1.4 ANSI C 和 ISO C 200
6.1.5 C99 201
6.1.6 C11 202
6.1.7 小結 202
6.2 宏定義 202
6.3 變量與常量 203
6.4 函數 206
6.5 數組與指針 209
6.6 結構體 214
6.6.1 位操作 216
6.6.2 其他 218
6.6.3 返回值 219
6.7 可變量組 222
6.8 其他特性 224
6.8.1 浮點型運算 224
6.8.2 聯合體和枚舉 225
6.8.3 標準庫 227
6.8.4 extern/volatile 227
6.8.5 內聯匯編 228
6.9 C 語言的編譯 230
6.10 GAS 232
6.11 小結 234
第 7 章 ELF 與鏈接器 236
7.1 ELF 236
7.1.1 ELF 頭結構 238
7.1.2 節的結構 239
7.1.3 字符串表 240
7.1.4 符號表 241
7.1.5 重定位表 242
7.1.6 程序加載 245
7.1.7 程序頭結構 246
7.1.8 程序解釋器 248
7.1.9 小結 257
7.2 動態鏈接器 257
7.2.1 Bash 執行流程 258
7.2.2 fork()原理 260
7.2.3 execve()原理 265
7.2.4 glibc 動態鏈接原理 281
7.3 庫打樁 318
7.4 內存分配 319
7.4.1 glibc 320
7.4.2 內核 338
7.4.3 內核信號機制 360
7.5 小結 368