編程卓越之道

《編程卓越之道》是2006年4月電子工業出版社出版的圖書,作者是(美)HydeR。

基本信息

內容簡介

書籍封面書籍封面

各位程式設計師一定希望自己編寫的代碼是能讓老闆讚賞、滿意的代碼;是能讓客戶樂意掏錢購買的代碼;是能讓使用者順利使用的代碼;是能讓同行欣賞讚譽的代碼;是能讓自己引以為豪的卓越代碼。

本書作者為希望能編寫出卓越代碼的人提供了自己積累的關於卓越編程的真知灼見。它彌補了計算機科學和工程課程中被忽略的一個部分——底層細節,而這正是構建卓越代碼的基石。具體內容包括:計算機數據表示法,二進制數學運算與位運算,記憶體組織與內存訪問,數據類型及其表示,布爾邏輯與數字設計,CPU體系結構,CPU指令集的體系結構,記憶體體系與記憶體組織,計算機系統如何與外界通信等。

目錄

1 編寫卓越代碼須知.

1.1 編程卓越之道系列 1

1.2 本卷內容 3

1.3 本卷所做的假設 5

1.4 卓越代碼的各項特徵 6

1.5 本卷涉及的環境 7

1.6 獲取更多信息 8

2 數值表示

2.1 什麼是數 10

2.2 計數系統(numbering system) 11

2.2.1 十進制位值計數系統 11

2.2.2 進制(基數) 12

2.2.3 二進制計數系統 13

2.2.4 十六進制計數系統 15

2.2.5 八進制(基數為8)計數系統 18

2.3 數/字元串轉換 19

2.4 數的內部表示 21

2.4.1 位(bits) 21

2.4.2 位串 22

2.5 有符號數與無符號數 24

.2.6 二進制數一些有用的特性 25

2.7 符號擴展,零擴展,以及縮減 27

2.8 飽和操作(saturation) 30

2.9 二進制編碼的十進制(bcd)表示法 31

2.10 定點表示法 33

2.11 比例數格式(scaled numeric formats) 35

2.12 有理數表示法 38

2.13 獲取更多信息 38

3 二進制算術與位運算

3.1 二進制數與十六進制數的算術運算 39

3.1.1 二進制加法 40

3.1.2 二進制減法 41

3.1.3 二進制乘法 42

3.1.4 二進制除法 43

3.2 位邏輯運算 46

3.3 二進制數和位串(bit string)的邏輯運算 47

3.4 有用的位運算 48

3.4.1 使用與運算檢測位串的各個位 48

3.4.2 使用與運算來檢測一組位是零/非零 49

3.4.3 比較一個位串中的一組位 49

3.4.4 使用邏輯與創建模-n計數器(modulo-n counters) 51

3.5 移位(shift)與循環移位(rotate) 52

3.6 位域與打包(packed)數據 55

3.7 打包與解包數據 60

3.8 獲取更多信息 64

4浮點表示法

4.1 浮點運算簡介 66

4.2 ieee浮點數格式 71

4.2.1 單精度浮點格式 72

4.2.2 雙精度浮點格式 74

4.2.3 擴展精度浮點格式 74

4.3 規格化(normalization)與反向規格化(denormalized)數 75

4.4 捨入(rounding) 77

4.5 特殊的浮點數 78

4.6 浮點異常 79

4.7 浮點運算 80

4.7.1 浮點表示 80

4.7.2 浮點加法與減法 81

4.7.3 浮點乘法與除法 92

4.8 獲取更多信息 100

5 字元表示法

5.1 字元數據 104

5.1.1 ascii字元集 104

5.1.2 ebcdic字元集 107

5.1.3 雙位元組字元集 108

5.1.4 unicode字元集 109

5.2 字元串 110

5.2.1 字元串格式 111

5.2.2 字元串類型:靜態,偽動態,以及動態字元串 116

5.2.3 字元串引用計數 117

5.2.4 delphi/kylix字元串 118

5.2.5 創建你自己的字元串格式 119

5.3 字元集合 119

5.3.1 字元集合的冪集表示法 120

5.3.2 字元集合的列表表示法 120

5.4設計你自己的字元集 121

5.4.1 設計一種高效的字元集 122

5.4.2 為數字分組字元碼 124

5.4.3 分組字母字元 124

5.4.4 比較字母字元 126

5.4.5 其他字元分組 128

5.5 獲取更多信息 131

6 記憶體組織與訪問

6.1 基本的系統組成部分 134

6.1.1 系統匯流排 134

6.1.2 地址匯流排 135

6.1.3 控制匯流排 136

6.2 記憶體物理組織 137

6.2.1 8 位地址匯流排 139

6.2.2 16位數據匯流排 140

6.2.3 32位數據匯流排 142

6.2.4 64位匯流排 143

6.2.5 在非80x86處理器上訪問小數據單位 143

6.3 大端組織與小端組織 144

6.4 系統時鐘 149

6.4.1 記憶體訪問與系統時鐘 151

6.4.2 等待狀態 152

6.4.3 高速快取記憶體 153

6.5 cpu記憶體訪問 157

6.5.1 直接記憶體定址模式 158

6.5.2 間接定址模式 158

6.5.3 變址定址模式 159

6.5.4 比例變址定址模式 160

6.6 獲取更多信息 160

7 複合數據類型與記憶體對象

7.1 指針類型 162

7.1.1 指針的實現 163

7.1.2 指針與動態記憶體分配 164

7.1.3 指針操作與指針運算 164

7.2 數組 169

7.2.1 數組聲明 169

7.2.2 數組在記憶體中的表示 172

7.2.3 訪問數組元素 173

7.2.4 多維數組 174

7.3 記錄/結構 181

7.3.1 pascal/delphi中的記錄 181

7.3.2 c/c++中的記錄 182

7.3.3 hla中的記錄 182

7.3.4 記錄的記憶體存儲 183

7.4 判別式聯合 185

7.4.1 c/c++中的聯合 186

7.4.2 pascal/delphi/kylix中的聯合 186

7.4.3 hla中的聯合 187

7.4.4 聯合的記憶體存儲 187

7.4.5 聯合的其他用途 188

7.5 獲取更多信息 189

8 布爾邏輯與數字設計

8.1 布爾代數 192

8.1.1 布爾運算符 192

8.1.2 布爾代數的公理 192

8.1.3 布爾運算符優先權 194

8.2 布爾函式與真值表 194

8.3 函式號 197

8.4 布爾表達式的代數運算 198

8.5 標準型 199

8.5.1最小項之和標準型與真值表 200

8.5.2 使用代數方法得到最小項之和標準型 202

8.5.3 最大項之積標準型 203

8.6 布爾函式化簡 204

8.7 但是,這些和計算機又有什麼關係呢? 212

8.7.1 電子線路與布爾函式的對應 213

8.7.2 組合電路 214

8.7.3 時序與鍾控邏輯(sequential and clocked logic) 220

8.8 獲取更多信息 224

9 cpu體系結構

9.1 cpu設計基礎 225

9.2指令解碼與執行:隨機邏輯與微碼 228

9.3 指令執行詳解 229

9.3.1 mov指令 230

9.3.2 add指令 232

9.3.3jnz指令 234

9.3.4 loop指令 234

9.4 並行——提高處理速度的關鍵 235

9.4.1 預取佇列 238

9.4.2 妨礙預取佇列性能的情況 242

9.4.3 流水線操作——重疊執行多條指令 243

9.4.4 指令高速快取——提供訪問記憶體的多條通路 247

9.4.5 流水線相關(pipeline hazards) 249

9.4.6 超標量運算——並行執行指令 251

9.4.7亂序執行(out-of-order execution) 253

9.4.8暫存器重命名253

9.4.9 甚長指令字(VLIW)體系結構 255

9.4.10 並行處理 255

9.4.11 多處理 257

9.5 獲取更多信息 258

10 指令集體系結構

10.1 指令集設計的重要性 260

10.2指令設計基本目標 261

10.2.1 選擇指令長度263

10.2.2 規劃未來 265

10.2.3 選擇指令 266

10.2.4 給指令指派操作碼 266

10.3 y86假想處理器 267

10.3.1 y86的限制 268

10.3.2 y86指令 268

10.3.3 y86的定址模式 270

10.3.4 y86指令編碼 271

10.3.5 y86指令編碼舉例 274

10.3.6 擴展y86指令集 278

10.4 80x86指令編碼 279

10.4.1 編碼指令操作碼 281

10.4.2 add指令編碼的例子 287

10.4.3 編碼立即運算元 291

10.4.4 8,16,與32位運算元編碼 292

10.4.5 指令的替代編碼(alternate encoding) 292

10.5 指令集設計對程式設計師的意義 293

10.6 獲取更多信息 293

11 記憶體體系結構與組織

11.1 記憶體層次結構 295

11.2 記憶體層次結構是如何工作的 298

11.3 記憶體子系統的相對性能 300

11.4 高速快取體系結構 302

11.4.1 直接映射高速快取 303

11.4.2 全相聯高速快取 304

11.4.3 n路組相聯高速快取 304

11.4.4高速快取方案與數據訪問類型的匹配 305

11.4.5 快取線替換策略 306

11.4.6 寫數據到記憶體中 307

11.4.7 高速快取使用與軟體 308

11.5 虛存,保護,以及頁面調度 309

11.6 顛簸 312

11.7 numa與外圍設備 313

11.8 編寫理解記憶體層次結構的軟體 314

11.9 運行時記憶體組織 316

11.9.1 靜態與動態對象,綁定,以及生命期 317

11.9.2 代碼,唯讀,以及常量段 319

11.9.3 靜態變數段 319..

11.9.4 未初始化存儲(bss)段 319

11.9.5 棧段 320

11.9.6 堆段與動態記憶體分配 321

11.10 獲取更多信息 328

12 輸入與輸出(i/o)

12.1 將cpu與外界相連 330

12.2 將連線埠連線到系統的其他方式 333

12.3 i/o機制 334

12.3.1 記憶體映射輸入輸出 334

12.3.2 輸入輸出與高速快取 335

12.3.3 i/o映射輸入/輸出 335

12.3.4直接記憶體訪問(dma) 336

12.4 輸入輸出速度等級 337

12.5 系統匯流排與數據傳輸率 338

12.5.1 pci匯流排的性能 339

12.5.2 isa匯流排的性能 340

12.5.3 agp匯流排 341

12.6 緩衝 341

12.7 握手 342

12.8 i/o連線埠的逾時 343

12.9 中斷與輪詢方式i/o 344

12.10 保護模式操作與設備驅動程式 345

12.10.1 設備驅動程式(device drivers) 346

12.10.2 與設備驅動程式以及“檔案”通信 347

12.11 深入研究各種pc外設 347

12.12 鍵盤 348

12.13 標準pc並口 349

12.14 串口 351

12.15 磁碟驅動器 352

12.15.1 軟碟驅動器 352

12.15.2 硬碟驅動器 352

12.15.3 raid系統 358

12.15.4 zip與其他光讀軟碟驅動器 359

12.15.5 光碟機(optical drive) 359

12.15.6 cd-rom,cd-r,cd-r/w,dvd,dvd-r,

dvd-ram與dvd-r/w驅動器 360

12.16 磁帶驅動器 362

12.17 快閃記憶體 363

12.18 ram盤與半導體盤 365

12.19 scsi設備與控制器 367

12.20 ide/ata接口 372

12.21 大容量存儲設備上的檔案系統 374

12.21.1 使用空閒空間點陣圖(bitmap)管理檔案 377

12.21.2 檔案分配表 378

12.21.3 塊表檔案組織 381

12.22 編寫處理大容量存儲設備上的數據的軟體 385

12.22.1 檔案訪問性能 386

12.22.2 同步與異步i/o 387

12.22.3 i/o類型的影響 388

12.22.4 記憶體映射檔案 389

12.23 通用串列匯流排(usb) 390

12.23.1 usb的設計 390

12.23.2 usb的性能 392

12.23.3 usb傳輸的類型 393

12.23.4 usb設備驅動程式 395

12.24 滑鼠,觸控板與其他指點設備 396

12.25 操縱桿與遊戲控制器 397

12.26 音效卡 399

12.26.1 音頻接口外設如何產生聲音 400

12.26.2 音頻與MIDI檔案格式401

12.26.3 編程處理音頻設備 403

12.27 獲取更多信息 403...

運用底層語言思想

編寫高級語言代碼

a ascii字元集

相關詞條

相關搜尋

熱門詞條

聯絡我們