齣版者的話
譯者序
前言
第1章 編程語言及數據的
基礎知識 1
1.1 開篇語 1
1.2 簡介 3
1.3 計算機編程語言 3
1.3.1 語言之間的關係 3
1.3.2 翻譯流水綫 3
1.3.3 編程語言與相應文件及編程工具之間的關係 6
1.3.4 為什麼要學習匯編語言 7
1.4 數據的錶示 8
1.4.1 計數係統 8
1.4.2 怎樣錶示整數 8
1.4.3 怎樣錶示無符號的整數 9
1.4.4 怎樣錶示帶符號的整數 12
1.4.5 怎樣保存字符 14
1.5 布爾錶達式 16
1.6 3位計算機示例 17
1.7 小結 18
1.8 關鍵術語 18
1.9 代碼迴顧 19
1.10 習題 20
1.11 作業 21
第2章 處理器與計算機係統體係結構 22
2.1 簡介 22
2.2 體係結構概述 22
2.3 處理器 26
2.3.1 緩存與寄存器 27
2.3.2 64 位處理器 31
2.3.3 指令的執行 31
2.3.4 指令流水綫 32
2.4 輸入與輸齣 33
2.5 小結 35
2.6 關鍵術語 35
2.7 習題 36
2.8 作業 37
第1章與第2章補充材料 與體係結構有關的更多細節 38
第3章 匯編語言及其語法的基礎知識 41
3.1 簡介 41
3.2 基本元素 42
3.2.1 匯編代碼的五大支柱 42
3.2.2 字麵量 46
3.2.3 標簽與注釋 48
3.3 定義數據 49
3.4 寫齣能夠正常運行的範例程序 55
3.5 小結 56
3.6 關鍵術語 56
3.7 代碼迴顧 57
3.8 習題 57
3.9 作業 58
第4章 基本指令 60
4.1 簡介 60
4.2 數據的移動與算術運算 61
4.2.1 移動數據 61
4.2.2 加法與減法 62
4.2.3 乘法與除法 64
4.2.4 移位 69
4.2.5 處理負值 71
4.3 數據的尋址與傳輸 72
4.3.1 數據對齊 72
4.3.2 數據尋址 73
4.3.3 數組 75
4.3.4 改變數據的大小及類型 78
4.4 小結 79
4.5 關鍵術語 80
4.6 代碼迴顧 80
4.7 習題 81
4.8 作業 81
第 5 章 中級指令 83
5.1 簡介 83
5.2 按位執行的布爾運算 83
5.3 分支 88
5.3.1 無條件跳轉 88
5.3.2 有條件跳轉 88
5.3.3 復閤條件 91
5.4 重復執行 92
5.4.1 用 CX/ECX/RCX 計數器實現循環 92
5.4.2 用開發者自定義的計數器實現循環 94
5.5 小結 97
5.6 關鍵術語 97
5.7 代碼迴顧 97
5.8 習題 98
5.9 作業 99
第 6 章 函數 100
6.1 簡介 100
6.2 棧內存入門 100
6.3 x86 與 x86_64 的調用約定 101
6.3.1 cdecl(32 位) 102
6.3.2 stdcall(32 位) 109
6.3.3 x86_64(64 位) 110
6.3.4 有用的細節 114
6.4 實現 114
6.5 小結 118
6.6 關鍵術語 118
6.7 重要的寄存器(32 位和
64 位) 118
6.8 代碼迴顧 119
6.9 與平颱有關的注意事項 119
6.10 習題 120
6.11 作業 120
第6章補充材料 程序 6-3 122
第7章 與字符串有關的指令及結構體 123
7.1 簡介 123
7.2 輔助指令 123
7.3 基本字符串指令 125
7.3.1 MOVS 125
7.3.2 CMPS 126
7.3.3 SCAS 129
7.3.4 STOS 131
7.3.5 LODS 132
7.4 結構體 133
7.5 小結 135
7.6 關鍵術語 135
7.7 代碼迴顧 135
7.8 習題 136
7.9 作業 137
第8章 浮點運算 138
8.1 簡介 138
8.2 浮點數的錶示方式 139
8.2.1 IEEE錶示法 139
8.2.2 特殊值 141
8.2.3 次正規數 141
8.2.4 捨入 142
8.3 浮點數的實現 143
8.3.1 x87 143
8.3.2 MMX——題外話 152
8.3.3 SSE 154
8.3.4 XOP、FMA3/4、F16C——分化 159
8.3.5 AVX 160
8.4 小結 161
8.5 關鍵術語 162
8.6 重要的寄存器(32位和64位) 162
8.7 代碼迴顧 162
8.8 習題 164
8.9 作業 165
第8章補充材料 第8章中的程序 167
第9章 內聯匯編與宏 177
9.1 簡介 177
9.2 內聯匯編 177
9.2.1 與編譯器有關的細節 178
9.2.2 內聯式的匯編語句 178
9.2.3 為各種匯編方言提供支持 184
9.2.4 注意事項 185
9.3 宏 186
9.3.1 對比宏與函數 186
9.3.2 定義並調用宏 186
9.4 小結 188
9.5 關鍵術語 188
9.6 習題 188
9.7 作業 189
第10章 與處理器及體係結構有關的高級話題 191
10.1 簡介 191
10.2 處理器與係統的機能 192
10.2.1 係統寄存器 192
10.2.2 處理器模式 193
10.2.3 內存模型 193
10.2.4 代碼範例 197
10.3 中斷與係統調用 198
10.3.1 軟件中斷 198
10.3.2 硬件中斷 204
10.3.3 通過INT進行係統調用(舊方法) 204
10.3.4 通過SYSENTER、SYSCALL及程序庫/API進行係統調用(新方法) 207
10.4 小結 214
10.5 關鍵術語 215
10.6 代碼迴顧 216
10.7 習題 216
10.8 作業 217
第10章補充材料 第10章中的程序和資源 218
第11章 其他架構 223
11.1 簡介 223
11.2 CISC與RISC 224
11.3 更多架構 225
11.3.1 ARM 225
11.3.2 AVR 228
11.3.3 RISC-V 231
11.3.4 System-z/Architecture 233
11.4 量子架構 234
11.5 小結 236
11.6 關鍵術語 236
11.7 習題 236
11.8 作業 237
第12章 硬件與電子元件 239
12.1 簡介 239
12.2 電學基礎 239
12.2.1 基本的物理量 239
12.2.2 交流與直流 241
12.3 電子元件 242
12.3.1 供電設備 242
12.3.2 電阻器 244
12.3.3 二極管 245
12.3.4 電容器 245
12.3.5 晶體管 245
12.4 集成電路 246
12.5 常見的實現産品 247
12.5.1 計算機處理器 247
12.5.2 Raspberry Pi 247
12.5.3 Apple iPhone與Apple Watch 248
12.6 小結 248
12.7 關鍵術語 248
12.8 習題 249
12.9 作業 250
附錄簡介 251
附錄A 各種匯編語法之間的對應關係 253
附錄B 為匯編語言配置開發環境 256
附錄C 反匯編 261
附錄D 用GDB工具調試匯編程序 268
附錄E 鏈接匯編代碼及C++代碼 273
附錄F 函數與棧 278
附錄G CPUID指令的用法 282
附錄H ASCII和十進製算術運算 289
附錄I 編譯器內部函數 293
· · · · · · (
收起)