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