《代碼揭秘》是2009年電子工業出版社出版的圖書,作者是左飛。
基本介紹
- 書名:代碼揭秘
- 作者:左飛
- ISBN:9787121093104
- 頁數:432頁
- 定價:56.00元
- 出版社:電子工業出版社
- 出版時間:2009-8-1
- 開本:16開
內容簡介,圖書目錄,
內容簡介
本書從程式設計角度出發,以C/C++為描述語言,以VisualC++為形式工具,將隱藏在代碼背後的關於計算機組成原理、計算機作業系統等方面的機制和知識娓娓道來,不僅讓讀者知其然,更要讓讀者知其所以然。並讓這些知識再反作用於編程實踐,從而幫助讀者寫出更適合機器最佳化的高質量代碼。
揭開代碼背後鮮為人知的秘密,具體說來,全書主要討論了包括計算機底層編碼、記憶體與指針、計算機指令與代碼系統、函式調用的機制、多級存儲系統、執行緒與進程的概念以及代碼最佳化等多個方面的話題。
本書既可作為大專院校相關專業師生的教學參考書,也可供計算機及其相關領域的工程技術人員查閱之用,對於普通計算機愛好者,本書也不失為幫助他們理解計算機底層機制的一本深入淺出的計算機讀物。
圖書目錄
第1章 緒論 1
1.1 計算機系統初探 2
1.1.1 換個角度看計算機 2
1.1.2 CPU很好很強大 4
1.2 計算機語言與編譯技術 ¬8
1.2.1 如何讓機器理解你 8
1.2.2 編譯技術與開發環境 14
1.2.3 程式開發流程 20
1.3 C語言神話 22
1.3.1 C語言的歷史 22
1.3.2 簡單說說C語言的特點 23
1.4 奇蹟的延續 25
1.4.1 C++的產生與發展 25
1.4.2 C++與面向對象思想 27
1.5 本章小結 31
第2章 揭開數據表示的面紗 32
2.1 進制系統 33
2.1.1 最簡單的計數方式 33
2.1.2 計算機里只有黑白 34
2.1.3 壓縮表示的二進制 36
2.2 位與位操作 38
2.2.1 計算機存儲的單位 38
2.2.2 位操作和位段 39
2.3 計算機中的數值 48
2.3.1 一種最簡單的數 48
2.3.2 現實世界需要負數 49
2.3.3 只有整數還不夠 51
2.4 讓計算機學會寫字 56
2.4.1 ASCII碼 57
2.4.2 漢字編碼 59
2.4.3 更強大的編碼 60
2.5 C語言基本數據類型 62
2.5.1 整型 63
2.5.2 字元型 66
2.5.3 注意浮點數陷阱 67
2.6 本章小結 71
第3章 變數與地址 72
3.1 程式都在記憶體中 73
3.2 很多初學者都怕指針 77
3.3 睜大眼睛看記憶體 81
3.4 數組與指針是近親 84
3.5 再談指針 93
3.6 本章小結 97
第4章 動態記憶體管理 98
4.1 malloc和free 99
4.2 sizeof並不複雜 101
4.3 記憶體操作函式 105
4.3.1 memset 105
4.3.2 memcpy和memmove 107
4.4 new和delete 109
4.5 記憶體錯誤面面觀 113
4.5.1 最怕記憶體泄漏 113
4.5.2 小心重複釋放 115
4.5.3 指針是個壞東西 117
4.5.4 超量寫記憶體 118
4.6 使用Visual C++檢查記憶體泄漏 120
4.7 本章小結 124
第5章 代碼與指令系統 125
5.1 還原代碼的本來面目 126
5.1.1 記憶體中的代碼 126
5.1.2 指向函式的指針 131
5.1.3 CPU的存儲器 136
5.1.4 暫存器變數 143
5.1.5 暫存器組舉例 145
5.2 指令——簡單or複雜 149
5.2.1 指令格式 149
5.2.2 操作類型 154
5.2.3 運算元類型 155
5.3 如何找到地址 156
5.3.1 下一步該做什麼 156
5.3.2 計算機知道自己需要什麼 165
5.4 本章小結 172
第6章 函式與函式調用 173
6.1 函式與參數 174
6.1.1 C/C++中的函式 174
6.1.2 參數傳遞 174
6.1.3 作用域 180
6.2 函式的遞歸調用 184
6.2.1 到處都是遞歸 184
6.2.2 小心使用遞歸 188
6.2.3 遞歸與非遞歸 194
6.2.4 內、外部變數分配原理 198
6.3 記憶體的使用 200
6.3.1 活動記錄與棧 200
6.3.2 靜態分配 203
6.3.3 有靜就有動 205
6.4 程式在記憶體中的模樣 217
6.5 本章小結 219
第7章 多級存儲系統 221
7.1 存儲系統及層級結構 222
7.1.1 存儲器分類 222
7.1.2 存儲器的層級結構 225
7.1.3 訪問的局部性原理 227
7.1.4 再談存儲器的層級 231
7.2 高速快取 235
7.2.1 快取設計策略 235
7.2.2 多級快取原理 245
7.2.3 實際編碼指導 250
7.3 虛擬記憶體 258
7.3.1 何為虛擬記憶體 259
7.3.2 虛擬地址 262
7.3.3 頁面請求與磁碟緩衝 269
7.3.4 工作集合與系統顛簸 274
7.3.5 虛擬記憶體與性能影響 276
7.4 本章小結 278
第8章 作業系統互動 279
8.1 多任務 280
8.1.1 串列與並行 280
8.1.2 多任務的實現 282
8.1.3 並發程式設計 283
8.2 進程 284
8.2.1 進程的概念 284
8.2.2 進程的狀態 285
8.2.3 進程控制塊 288
8.3 Win32進程編程 289
8.3.1 創建進程 289
8.3.2 環境變數 299
8.4 執行緒 301
8.4.1 執行緒的概念 301
8.4.2 多執行緒 302
8.4.3 超執行緒 303
8.4.4 執行緒池 304
8.5 調度 305
8.5.1 處理器的調度 305
8.5.2 調度算法準則 306
8.5.3 常見的調度算法 308
8.6 Win32執行緒編程 313
8.6.1 創建和退出執行緒 313
8.6.2 掛起和恢複線程 317
8.6.3 遠程執行緒的注入 320
8.7 本章小結 329
第9章 瓶頸與最佳化 330
9.1 最佳化還是不最佳化 331
9.2 測量與分析的內容 333
9.3 測量與分析的方法 334
9.3.1 使用計時器 334
9.3.2 使用Profile 341
9.3.3 使用性能監視器 349
9.4 基本規律 350
9.4.1 二八法則 350
9.4.2 安達爾定律 351
9.5 程式最佳化路線 354
9.5.1 最佳化實踐的經典案例 354
9.5.2 最佳化案例的啟示 355
9.6 編譯器不是萬能的 357
9.7 實際最佳化建議 360
9.7.1 循環條件中的低效 361
9.7.2 注意字元串的操作 363
9.7.3 權衡函式調用需求 364
9.7.4 轉換指針形式代碼 366
9.7.5 檢查存儲器的訪問 367
9.7.6 使用循環展開技術 372
9.7.7 查表替換複雜運算 375
9.7.8 耗時計算移出循環 377
9.8 本章小結 378
附錄A 淺談編程能力的培養與提高 379
附錄B 程式人生 397
參考文獻 414