第1章 程序點滴 1
1.1 程序≠軟件 1
1.1.1 商業(yè)軟件門檻的形成 2
1.1.2 認清自己的發(fā)展 4
1.2 高手是怎樣練成的 5
1.2.1 高手成長的六個階段 5
1.2.2 初級程序員和高級程序員的區(qū)別 7
1.2.3 程序員是吃青春飯的嗎 9
1.3 正確的入門方法 11
1.3.1 規(guī)范的格式是入門的基礎 13
1.3.2 調試的重要性 17
1.4 開放性思維 18
1.4.1 動態(tài)庫的重要性 19
1.4.2 程序設計流程 20
1.4.3 保證程序可預測性 21
第2章 認識CPU 23
2.1 8位微處理器回顧 23
2.2 16位微處理器 24
2.2.1 組成結構 24
2.2.2 8086寄存器組成 25
2.2.3 內存的尋址 26
2.2.4 中斷處理 27
2.3 32位微處理器 29
2.3.1 寄存器組成 29
2.3.2 保護模式 32
2.3.3 80386的尋址方式 32
2.4 【實例】:在DOS實模式下讀取4GB內存代碼分析 36
2.4.1 程序的意義 37
2.4.2 程序代碼 37
2.4.3 程序原理 41
2.4.4 程序中的一些解釋 42
第3章 Windows運行機理 44
3.1 內核分析 44
3.1.1 運行機理 44
3.1.2 LE文件的格式 53
3.1.3 VxD的設計實現 59
3.1.4 【實例】:CPU降溫程序代碼分析 65
3.2 消息的運行方式 82
3.2.1 認識消息 82
3.2.2 Windows系統中消息的運作方式 84
3.2.3 消息處理過程實例 87
3.3 GDI的結構和組成 89
3.3.1 GDI的組成 89
3.3.2 GDI和DirectDraw的關系 91
3.4 線程的機制 93
3.4.1 線程的工作方式 93
3.4.2 線程與GDI的沖突:死機的主要原因 94
3.4.3 線程的內存泄漏的主要原因 96
3.4.4 進程管理 98
3.4.5 同步機制 100
3.5 PE結構分析 103
3.5.1 PE頭標 103
3.5.2 表節(jié) 113
3.5.3 PE文件引入 119
3.5.4 PE文件引出 125
3.5.5 PE文件資源 129
第4章 編程語言的運行機理 133
4.1 匯編的原理 133
4.1.1 指令系統 133
4.1.2 匯編與Win API的接口方法 141
4.1.3 【實例】:自定義程序的入口點 145
4.2 高級語言的原理 151
4.2.1 C/C++的原理 151
4.2.2 解釋語言的原理 165
4.2.3 【實例】:用C實現簡單的BASIC語言環(huán)境 165
4.3 C、C++的學習方式 187
4.3.1 從BASIC到C 187
4.3.2 C、匯編、API的關系 187
4.3.3 接口的建立方法 190
4.4 掛鉤技術 201
4.4.1 Windows上C的掛鉤 201
4.4.2 C++的掛鉤技術 213
第5章 代碼的規(guī)范和風格 220
5.1 環(huán)境的設置 220
5.1.1 集成環(huán)境的設置 220
5.1.2 TAB值的設置 221
5.1.3 編譯環(huán)境的設置 222
5.1.4 設置herosoft.dsm宏 224
5.2 變量定義的規(guī)范 227
5.2.1 變量的命名規(guī)則 227
5.2.2 變量定義的地方規(guī)定 228
5.2.3 變量的對齊規(guī)定 229
5.3 代碼對齊方式、分塊、換行的規(guī)范 230
5.4 快速的代碼整理方法 232
5.5 注釋的規(guī)范 233
5.6 頭文件的規(guī)范 236
5.7 建議采用的一些規(guī)則 236
5.8 可靈活運用的一些規(guī)則 238
5.9 標準化代碼示例 239
5.10 成對編碼規(guī)則 243
5.10.1 成對編碼的實現方法 243
5.10.2 成對編碼中的幾點問題 248
5.11 正確的成對編碼的工程編程方法 251
5.11.1 編碼前的工作 252
5.11.2 成對編碼的工程方法 255
5.11.3 兩個問題的解釋 260
第6章 分析方法 266
6.1 分析概要 266
6.1.1 分析案例一:軟件硬盤陣列 268
6.1.2 分析案例之二:游戲內存修改工具 274
6.2 接口的提煉 286
6.2.1 分離接口 286
6.2.2 參數分析 287
6.3 主干和分支 290
6.3.1 主干和分支分析舉例 291
6.3.2 程序檢驗 300
6.4 是否對象化 301
6.5 是否DLL化 307
6.5.1 DLL的建立和調用 307
6.5.2 DLL動態(tài)與靜態(tài)加載的比較 322
6.5.3 DLL中函數的定義 322
6.6 COM的結構 324
6.7 幾種軟件系統的體系結構分析 326
6.7.1 播放器的解碼組成分析 326
6.7.2 豪杰大眼睛的體系結構 330
6.7.3 Windows 9x體系結構 331
第7章 調試方法 333
7.1 調試要點 333
7.1.1 調試和編程同步 333
7.1.2 匯編代碼確認 334
7.1.3 Win32的Debug實現方法 342
7.2 基本調試實例分析 343
7.3 多線程應用的調試 350
7.4 非固定錯誤的調試 352
7.4.1 激活調試環(huán)境 352
7.4.2 正確區(qū)分錯誤的類型 356
7.4.3 常見的偶然錯誤 357
第8章 內核優(yōu)化 358
8.1 數據類型的認識 358
8.2 X86優(yōu)化編碼準則 359
8.2.1 通用的X86優(yōu)化技術 359
8.2.2 通用的AMD-K6處理器x86代碼優(yōu)化 361
8.2.3 AMD-K6處理器整數x86代碼優(yōu)化 364
8.3 MMX指令的優(yōu)化 368
8.3.1 MMX的寄存器介紹 368
8.3.2 MMX的工作原理 368
8.3.3 MMX的檢測 369
8.3.4 MMX指令的介紹 370
8.4 MMX的實例一:圖像的淡入淡出 394
8.4.1 目的 394
8.4.2 解決方法 394
8.4.3 分析 394
8.4.4 初步實現 395
8.4.5 MMX的優(yōu)化實現 401
8.5 MMX的實例二:MMX類的實現方法 407
8.5.1 實現方法分析 407
8.5.2 實現步驟 407
8.5.3 檢測過程 410
8.5.4 總結 416
【媒體評論】