会员   密码 您忘记密码了吗?
1,580,249 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 編程卓越之道(卷1):深入理解計算機(第2版)
編程卓越之道(卷1):深入理解計算機(第2版)
上一张
下一张
prev next

編程卓越之道(卷1):深入理解計算機(第2版)

作者: (美)RANDALL HYDE
出版社: 電子工業出版社
出版日期: 2022-12-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT900.00
市场价格: RM161.80
本店售价: RM144.00
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

卓越的代碼需要利用現代編程語言的先進特性來實現軟體功能。但軟體最終都要運行在計算機上,無論它是採用哪種編程語言編寫的。因此,卓越的軟體代碼也要充分地利用計算機中的各種資源,將計算機的性能發揮到極致。現代編程語言將這些知識隱藏了起來,容易被我們忽視。

因此,《編程卓越之道》系列的第一卷《深入理解計算機》將重點放在軟體執行背後的計算機底層上,深入淺出地介紹了計算機體系結構的方方面面,幫助我們理解如何才能寫出在計算機上高效運行的代碼。本書具體內容包括:數位、字串及複合資料結構在計算機中的表示形式,以及如何在記憶體層次結構中訪問這些資料;基本的二進位運算、位元運算、布林邏輯,以及如何設計完成運算的中央處理器指令集;輸入/輸出、大型存放區等豐富多彩的外設,以及把這些外設和計算機相連進行通信的各種匯流排技術。

本書適合軟/硬體開發人員及系統程式師、移動及嵌入式設備開發者、體系結構設計人員,以及高校計算機相關專業師生。
 


作者介紹

Randall Hyde

著有《匯編語言藝術》和《編程卓越之道》第一卷、第二卷、第三卷(均由 No Starch 出版社出版),以及Using 6502 Assembly Language和P-Source(均由 Datamost 出版社出版),合著有Microsoft Macro Assembler 6.0 Bible(由 The Waite Group 出版社出版)。過去40年,Hyde 作為嵌入式軟/硬體工程師,為核反應爐、交通控制系統及其他消費電子設備開發過儀錶工具。他還在加州州立理工大學波莫納分校和加州大學河濱分校教授計算機科學這門課。


目錄

1 編寫卓越代碼須知 1
1.1 《編程卓越之道》系列 1
1.2 本書涵蓋的主題 2
1.3 閱讀本書的前提 4
1.4 卓越代碼的特徵 5
1.5 本書要求的環境 6
1.6 額外建議 7
1.7 更多資訊 7

2 數字表示 8
2.1 什麼是數字 8
2.2 計數系統 9
2.2.1 十進位位元值計數系統 10
2.2.2 底數(基數) 11
2.2.3 二進位計數系統 12
2.2.4 十六進位計數系統 15
2.2.5 八進制計數系統 17
2.3 數字/字串轉換 18
2.4 內部數字表示形式 20
2.4.1 位 20
2.4.2 位串 21
2.5 有符號和無符號數 24
2.6 二進位數的屬性 26
2.7 符號擴展、零擴展和收縮 27
2.8 飽和操作 31
2.9 二進位編碼的十進位表示 32
2.10 定點表示形式 33
2.11 比例數字格式 35
2.12 有理數表示形式 37
2.13 更多資訊 38

3 二進位算數運算和位元運算 39
3.1 二進位和十六進位數字的算數運算 39
3.1.1 二進位加法 40
3.1.2 二進位減法 41
3.1.3 二進位乘法 42
3.1.4 二進位除法 43
3.2 位元的邏輯運算 45
3.3 二進位數值和位元串的邏輯運算 47
3.4 有用的位運算 48
3.4.1 使用AND運算判斷位串中的一位 49
3.4.2 使用AND運算判斷多個位為零或非零 49
3.4.3 比較二進位字元串中的多個位 50
3.4.4 使用AND運算創建模n計數器 51
3.5 移位和旋轉 52
3.6 位欄位和打包數據 55
3.7 數據的打包和解包 60
3.8 更多資訊 65

4 浮點表示形式 66
4.1 浮點運算簡介 66
4.2 IEEE 浮點格式 72
4.2.1 單精確度浮點格式 72
4.2.2 雙精度浮點格式 74
4.2.3 擴展精度浮點格式 75
4.2.4 四精度浮點格式 76
4.3 規約形式與非規約形式 76
4.4 舍入 77
4.5 特殊的浮點值 79
4.6 浮點數異常 80
4.7 浮點運算 81
4.7.1 浮點表示形式 82
4.7.2 浮點數的加減法 82
4.7.3 浮點數的乘除法 93
4.8 更多資訊 102

5 字元表示形式 103
5.1 字元數據 103
5.1.1 ASCII字元集 104
5.1.2 EBCDIC字元集 107
5.1.3 雙位元組字元集 108
5.1.4 Unicode字元集 109
5.1.5 Unicode碼位 110
5.1.6 Unicode編碼平面 111
5.1.7 代用碼位 111
5.1.8 字形、字元和字素簇 112
5.1.9 Unicode規範和規範等價性 115
5.1.10 Unicode編碼 116
5.1.11 Unicode組合字元 118
5.2 字串 120
5.2.1 字串格式 120
5.2.2 靜態字串、偽動態字串和動態字串 127
5.2.3 字串的引用計數 129
5.2.4 Delphi字串 130
5.2.5 自訂字串格式 130
5.3 字元集數據類型 130
5.3.1 字元集的冪集表示形式 131
5.3.2 字元集的列表表示形式 132
5.4 設計自訂字元集 133
5.4.1 設計高效的字元集 134
5.4.2 數字字元的編碼分組 135
5.4.3 字母字元分組 135
5.4.4 比較字母字元 138
5.4.5 其他字元分組 140
5.5 更多資訊 143

6 記憶體結構和訪問 144
6.1 基本系統元件 144
6.1.1 系統匯流排 145
6.2 記憶體的物理結構 148
6.2.1 8位元數據匯流排 151
6.2.2 16位元數據匯流排 152
6.2.3 32位元數據匯流排 155
6.2.4 64位元數據匯流排 156
6.2.5 非80x86處理器對小單位記憶體的訪問 156
6.3 大端序與小端序結構 157
6.4 系統時鐘 163
6.4.1 記憶體訪問和系統時鐘 165
6.4.2 等候狀態 166
6.4.3 緩存 168
6.5 CPU的記憶體訪問模式 172
6.5.1 直接記憶體定址模式 172
6.5.2 間接定址模式 173
6.5.3 變址定址模式 174
6.5.4 比例變址定址模式 175
6.6 更多資訊 175

7 複合數據類型與記憶體物件 176
7.1 指針類型 176
7.1.1 指針的實現 178
7.1.2 指標與動態記憶體分配 179
7.1.3 指針操作與指針運算 179
7.2 數組 184
7.2.1 數組聲明 185
7.2.2 記憶體中的數組表示形式 188
7.2.3 訪問數組元素 190
7.2.4 多維數組 190
7.3 記錄/結構體 200
7.3.1 Pascal/Delphi記錄 201
7.3.2 C/C++記錄 202
7.3.3 HLA記錄 203
7.3.4 Swift記錄(元組) 203
7.3.5 記錄的記憶體存儲 204
7.4 判別聯合 207
7.4.1 C/C++聯合 208
7.4.2 Pascal/Delphi聯合 208
7.4.3 Swift聯合 209
7.4.4 HLA聯合 211
7.4.5 聯合的記憶體存儲 211
7.4.6 聯合的其他用途 213
7.5 類 214
7.5.1 繼承 216
7.5.2 類構造函數 221
7.5.3 多態 224
7.5.4 抽象方法和抽象基類 225
7.6 C++類 229
7.6.1 C++中的抽象成員函數和類 230
7.6.2 C++的多重繼承 231
7.7 Java類 233
7.8 Swift類 234
7.9 協定與介面 235
7.10 泛型和範本 239
7.11 更多資訊 241

8 布林邏輯與數字設計 242
8.1 布林代數 243
8.1.1 布林運算子 243
8.1.2 布林假設 243
8.1.3 布林運算子優先順序 246
8.2 布林函數與真值表 246
8.3 函數編號 248
8.4 布林運算式的代數運算 250
8.5 規範形式 250
8.5.1 極小項和規範形式與真值表 252
8.5.2 使用代數方法得到極小項和規範形式 254
8.5.3 極大項積規範形式 255
8.6 布林函數簡化 256
8.7 這和電腦有什麼關係 264
8.7.1 電路與布林函數 265
8.7.2 組合電路 267
8.7.3 時序與時鐘邏輯 274
8.8 更多資訊 278

9 CPU 體系結構 280
9.1 CPU設計基礎 280
9.2 指令的解碼與執行:隨機邏輯與微碼 283
9.3 指令執行詳解 284
9.3.1 mov指令 285
9.3.2 add指令 286
9.3.3 jnz指令 288
9.3.4 loop指令 289
9.4 RISC還是CISC:通過執行更多更快的指令來提高性能 290
9.5 提高處理速度的關鍵:並行 291
9.5.1 功能單元 294
9.5.2 預取佇列 296
9.5.3 影響預取佇列性能的情況 299
9.5.4 同時執行多條指令的流水線 299
9.5.5 指令緩存:提供多條記憶體訪問通路 304
9.5.6 流水線冒險 306
9.5.7 超標量運算:並存執行指令 308
9.5.8 亂序執行 310
9.5.9 寄存器重命名 310
9.5.10 甚長指令字體系結構 312
9.5.11 並行處理 312
9.5.12 多處理 313
9.6 更多資訊 315

10 指令集體系結構 316
10.1 指令集設計的重要性 317
10.2 指令設計的基本目標 318
10.2.1 操作碼的長度選擇 320
10.2.2 規劃未來 322
10.2.3 選擇指令 322
10.2.4 分配指令操作碼 323
10.3 假想處理器Y86 324
10.3.1 Y86的限制 324
10.3.2 Y86指令 325
10.3.3 Y86的定址模式 327
10.3.4 Y86指令編碼 327
10.3.5 Y86指令編碼示例 330
10.3.6 擴展Y86指令集 335
10.4 80x86 指令編碼 336
10.4.1 指令操作碼的編碼 339
10.4.2 add指令編碼的例子 346
10.4.3 x86的立即(常量)操作數編碼 351
10.4.4 8位、16位和32位操作數的編碼 352
10.4.5 64位操作數編碼 353
10.4.6 指令的替代編碼 353
10.5 指令集設計對程式師的意義 354
10.6 更多資訊 354

11 記憶體體系結構與組織 355
11.1 記憶體層次結構 355
11.2 記憶體層次結構的工作原理 359
11.3 記憶體子系統的性能差距 360
11.4 緩存體系結構 362
11.4.1 直接映射緩存 364
11.4.2 全相聯緩存 365
11.4.3 n路組相聯緩存 365
11.4.4 緩存行置換策略 367
11.4.5 緩存寫入策略 368
11.4.6 緩存使用與軟體 369
11.5 NUMA與外設 370
11.6 虛擬記憶體、記憶體保護與分頁 370
11.7 編寫理解記憶體層次結構的軟體 375
11.8 運行時的記憶體結構 376
11.8.1 靜態物件與動態物件,綁定與生命期 378
11.8.2 程式碼片段、唯讀數據段與常量段 379
11.8.3 靜態變數段 380
11.8.4 存儲變數段 380
11.8.5 棧 381
11.8.6 堆與動態記憶體分配 381
11.9 更多資訊 388

12 輸入與輸出 389
12.1 連接CPU與外界 389
12.2 埠和系統連接的其他方式 393
12.3 輸入/輸出機制 394
12.3.1 記憶體映射輸入/輸出 395
12.3.2 I/O映射輸入/輸出 396
12.3.3 直接記憶體存取 396
12.4 輸入/輸出速度等級 397
12.5 系統匯流排與數據傳輸速率 398
12.5.1 PCI匯流排的性能 400
12.5.2 ISA匯流排的性能 401
12.5.3 AGP匯流排 401
12.6 緩衝 402
12.7 握手 403
12.8 I/O埠超時 404
12.9 中斷與輪詢式I/O 405
12.10 保護模式操作與設備驅動程式 406
12.10.1 設備驅動模型 407
12.10.2 與設備驅動程式通信 408
12.11 更多資訊 409

13 電腦週邊匯流排 410
13.1 小型電腦系統介面 410
13.1.1 限制 411
13.1.2 改進 412
13.1.3 SCSI協議 413
13.1.4 SCSI的優點 415
13.2 IDE/ATA介面 416
13.2.1 SATA介面 417
13.2.2 光纖通道 418
13.3 通用序列匯流排 418
13.3.1 USB設計 418
13.3.2 USB性能 420
13.3.3 USB傳輸的類型 421
13.3.4 USB-C 423
13.3.5 USB設備驅動程式 424
13.4 更多資訊 425

14 大型存放區設備與檔案系統 426
14.1 磁碟機 426
14.1.1 軟碟機 427
14.1.2 硬碟驅動器 427
14.1.3 RAID系統 433
14.1.4 光碟機 435
14.1.5 CD、DVD與藍光驅動器 436
14.2 磁帶驅動器 438
14.3 快閃記憶體 439
14.4 RAM盤 441
14.5 固態硬碟 442
14.6 混合硬碟 443
14.7 大型存放區設備上的檔案系統 443
14.7.1 順序檔案系統 444
14.7.2 高效的文件分配策略 445
14.8 編寫操作大型存放區設備數據的軟體 454
14.8.1 檔訪問的性能 454
14.8.2 同步與非同步I/O 456
14.8.3 I/O類型的影響 457
14.8.4 記憶體映射檔 457
14.9 更多資訊 459

15 豐富多彩的輸入/輸出設備 460
15.1 探索特定PC上的外設 460
15.1.1 鍵盤 461
15.1.2 標準PC並口 462
15.1.3 串口 464
15.2 滑鼠、觸控板及其他定點設備 465
15.3 操縱杆與遊戲控制器 466
15.4 音效卡 467
15.4.1 音訊介面外設如何產生聲音 468
15.4.2 音訊與MIDI檔案格式 470
15.4.3 音訊設備編程 471
15.5 更多資訊 472

後記:運用底層語言思想,編寫高階語言代碼 473
附錄B 相關內容 334
附錄C 人物清單 337
附錄D 致謝