出版者的話
譯者序
前言
第1章 編程語言及數(shù)據(jù)的
基礎知識 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 數(shù)據(jù)的表示 8
1.4.1 計數(shù)系統(tǒng) 8
1.4.2 怎樣表示整數(shù) 8
1.4.3 怎樣表示無符號的整數(shù) 9
1.4.4 怎樣表示帶符號的整數(shù) 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 作業(yè) 21
第2章 處理器與計算機系統(tǒng)體系結構 22
2.1 簡介 22
2.2 體系結構概述 22
2.3 處理器 26
2.3.1 緩存與寄存器 27
2.3.2 64 位處理器 31
2.3.3 指令的執(zhí)行 31
2.3.4 指令流水線 32
2.4 輸入與輸出 33
2.5 小結 35
2.6 關鍵術語 35
2.7 習題 36
2.8 作業(yè) 37
第1章與第2章補充材料 與體系結構有關的更多細節(jié) 38
第3章 匯編語言及其語法的基礎知識 41
3.1 簡介 41
3.2 基本元素 42
3.2.1 匯編代碼的五大支柱 42
3.2.2 字面量 46
3.2.3 標簽與注釋 48
3.3 定義數(shù)據(jù) 49
3.4 寫出能夠正常運行的范例程序 55
3.5 小結 56
3.6 關鍵術語 56
3.7 代碼回顧 57
3.8 習題 57
3.9 作業(yè) 58
第4章 基本指令 60
4.1 簡介 60
4.2 數(shù)據(jù)的移動與算術運算 61
4.2.1 移動數(shù)據(jù) 61
4.2.2 加法與減法 62
4.2.3 乘法與除法 64
4.2.4 移位 69
4.2.5 處理負值 71
4.3 數(shù)據(jù)的尋址與傳輸 72
4.3.1 數(shù)據(jù)對齊 72
4.3.2 數(shù)據(jù)尋址 73
4.3.3 數(shù)組 75
4.3.4 改變數(shù)據(jù)的大小及類型 78
4.4 小結 79
4.5 關鍵術語 80
4.6 代碼回顧 80
4.7 習題 81
4.8 作業(yè) 81
第 5 章 中級指令 83
5.1 簡介 83
5.2 按位執(zhí)行的布爾運算 83
5.3 分支 88
5.3.1 無條件跳轉 88
5.3.2 有條件跳轉 88
5.3.3 復合條件 91
5.4 重復執(zhí)行 92
5.4.1 用 CX/ECX/RCX 計數(shù)器實現(xiàn)循環(huán) 92
5.4.2 用開發(fā)者自定義的計數(shù)器實現(xiàn)循環(huán) 94
5.5 小結 97
5.6 關鍵術語 97
5.7 代碼回顧 97
5.8 習題 98
5.9 作業(yè) 99
第 6 章 函數(shù) 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 有用的細節(jié) 114
6.4 實現(xiàn) 114
6.5 小結 118
6.6 關鍵術語 118
6.7 重要的寄存器(32 位和
64 位) 118
6.8 代碼回顧 119
6.9 與平臺有關的注意事項 119
6.10 習題 120
6.11 作業(yè) 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 作業(yè) 137
第8章 浮點運算 138
8.1 簡介 138
8.2 浮點數(shù)的表示方式 139
8.2.1 IEEE表示法 139
8.2.2 特殊值 141
8.2.3 次正規(guī)數(shù) 141
8.2.4 舍入 142
8.3 浮點數(shù)的實現(xiàn) 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 作業(yè) 165
第8章補充材料 第8章中的程序 167
第9章 內聯(lián)匯編與宏 177
9.1 簡介 177
9.2 內聯(lián)匯編 177
9.2.1 與編譯器有關的細節(jié) 178
9.2.2 內聯(lián)式的匯編語句 178
9.2.3 為各種匯編方言提供支持 184
9.2.4 注意事項 185
9.3 宏 186
9.3.1 對比宏與函數(shù) 186
9.3.2 定義并調用宏 186
9.4 小結 188
9.5 關鍵術語 188
9.6 習題 188
9.7 作業(yè) 189
第10章 與處理器及體系結構有關的高級話題 191
10.1 簡介 191
10.2 處理器與系統(tǒng)的機能 192
10.2.1 系統(tǒng)寄存器 192
10.2.2 處理器模式 193
10.2.3 內存模型 193
10.2.4 代碼范例 197
10.3 中斷與系統(tǒng)調用 198
10.3.1 軟件中斷 198
10.3.2 硬件中斷 204
10.3.3 通過INT進行系統(tǒng)調用(舊方法) 204
10.3.4 通過SYSENTER、SYSCALL及程序庫/API進行系統(tǒng)調用(新方法) 207
10.4 小結 214
10.5 關鍵術語 215
10.6 代碼回顧 216
10.7 習題 216
10.8 作業(yè) 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 習題