亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

016_《Delphi源代碼分析》

系統 1593 0

《Delphi源代碼分析》

Delphi 教程 系列書籍 (016) Delphi 源代碼分析》 網友(邦)整理 EMail: shuaihj@163.com

下載地址:

Part1

Part2

Delphi源代碼分析

  • 作者: 周愛民 [作譯者介紹]
  • 出版社:電子工業出版社
  • ISBN:7121003031
  • 上架時間:2004-10-13
  • 出版日期:2004 年9月
  • 開本:16開
  • 頁碼:350
  • 版次:1-1

內容簡介

本書通過對Delphi內核(RTL)源代碼進行分析,深入闡述了Delphi內核(RTL)的原理及其實現。全書從Nico Bendlin編寫的著名最小化內核示例程序MiniDExe講起,基于MiniDExe分析Delphi在編譯器一級的技術內幕,帶領讀者一窺Delphi的核心。隨后作者基于這個內核逐層地包裝代碼,將Delphi的各種功能的具體實現一一展現,通過列出關鍵性代碼并進行系統性分析的方式,全面分析對象結構、VCL和COM等在源代碼中的實現。全書內容詳實,闡述精辟、深入,主要議題包括:Delphi的編譯器在Windows、Delphi RTL和用戶代碼之間的交互;Delphi RTL內核代碼的完整實現;與Delphi內核相關的操作系統機制;初始(入口)代碼、模塊、內存、線程、資源、異常處理機制等。

本書是一本不可多得的高端技術圖書,適合中、高級Delphi開發人員研讀。

目錄

序 i

前言 I

第一部分 Delphi內核深入剖析(I) 1

第1章 最小化Delphi內核 3

1.1 MiniDExe如何實現內核最小化 3

1.1.1 MiniDExe中的System.pas單元 4

1.1.2 MiniDExe中的SysInit.pas單元 5

1.1.3 MiniDExe中的項目文件MiniDExe.dpr 6

1.2 一些其他的內核優化 6

1.3 為什么要研究最小化內核 7

第2章 基本數據類型的實現 9

2.1 基本數據類型 9

2.2 變量與常量 11

2.2.1 全局變量與局部變量 11

2.2.2 動態分配的內存 12

2.2.3 換一個方式來理解 13

2.2.4 常量 14

2.3 數據結構的實現 16

2.3.1 簡單類型 16

2.3.2 字符串 16

2.3.3 構造類型 26

2.3.4 指針類型 28

2.3.5 過程類型 28

2.4 數據結構相關的例程 29

2.4.1 標準Pascal的內置例程 30

2.4.2 字符串操作例程 31

2.5 變量的類型檢測與強制轉換 47

2.6 引用-計數-寫復制與類型信息 48

2.6.1 引用計數與增加引用 48

2.6.2 "增加引用"何時發生 49

2.6.3 增加引用的操作是依賴類型信息來實現的 51

2.6.4 寫復制與值參數的備份 53

第3章 BASM(Borland匯編語言)精要 55

3.1 BASM概念簡要 55

3.2 表達式的類別與類型 56

3.3 數據定義和數據類型強制轉換 57

3.4 例程入口參數及調用約定 61

3.5 例程和API的調用與流程控制 62

3.6 完全匯編例程與內嵌匯編例程 65

3.7 匯編例程中的返回值約定 66

3.8 其他 67

第4章 初始化與結束化過程 71

4.1 變量的初始化與結束化 71

4.1.1 初始化的必要性 72

4.1.2 如何初始化 73

4.1.3 如何結束化 74

4.2 例程的初始化與結束化 76

4.3 單元初始化與結束化 77

4.4 模塊初始化與結束化 79

4.4.1 模塊入口代碼 79

4.4.2 編譯器決定的程序執行流程 80

第5章 面向Windows開發的基本實現 83

5.1 Win32應用程序:EXE 83

5.1.1 適應Win32應用程序的最簡化內核 83

5.1.2 初始化例程_InitExe() 85

5.1.3 內部模塊表管理例程 86

5.1.4 .EXE啟動例程_StartExe() 87

5.1.5 應用程序的結束化控制 88

5.2 32位的DOS:控制臺應用程序 91

5.2.1 控制臺應用程序的模塊入口代碼 91

5.2.2 控制臺應用程序的最小化實現 92

5.2.3 控制臺應用程序的Delphi實現 93

5.2.4 文件操作例程與控制臺應用程序 94

5.2.5 控制臺的開啟與關閉 97

5.2.6 CRT單元與Input、Output的重載 98

5.3 動態鏈接庫:DLL 99

5.3.1 丟失的DllMain() 99

5.3.2 _InitLib()例程 101

5.3.3 _StartLib()例程 101

5.3.4 .DLL的結束化過程 102

5.3.5 DllProc與DllMain()的不同 105

5.3.6 動態鏈接庫的內核最小化 106

5.4 Delphi的動態鏈接庫:包 108

5.4.1 包的主要規則 108

5.4.2 Delphi中的包與普通DLL的區別 110

5.4.3 包的DllMain() 111

5.4.4 包的載入例程LoadPackage() 112

5.4.5 真正的初始化例程InitializePackage() 112

5.4.6 包的卸載例程UnloadPackage() 115

5.4.7 包的基本輸出例程 115

5.4.8 內部例程_PackageLoad()與_PackageUnload() 116

5.4.9 包的內核最小化 117

5.5 其他 118

5.5.1 初始化上下文中OuterContext域的使用 118

5.5.2 入口代碼中的堆棧使用深入分析(內存現場) 119

5.5.3 再論入口代碼 123

第6章 Delphi的積木藝術(PE) 127

6.1 PE文件結構概要 127

6.1.1 文件頭 129

6.1.2 節表 131

6.1.3 節 132

6.1.4 PE文件與內存映射 134

6.1.5 有關相對虛地址的計算 138

6.2 Delphi的PE文件頭中一些重要的域 142

6.3 Delphi的PE文件中一些重要的節 144

6.3.1 線程局部存儲(.tls和.rdata) 144

6.3.2 資源節(.rsrc) 145

6.3.3 導入、導出表(.idata和.edata) 146

6.3.4 數據節與代碼節(DATA、BSS和CODE) 154

6.3.5 重定位節(.reloc) 157

6.4 3.5K的秘密 159

6.4.1 Delphi的PE文件頭部 159

6.4.2 Delphi的PE文件的節及其默認對齊 160

6.4.3 還可能更小嗎 160

6.4.4 3.5K代碼的內存映射 161

6.5 入口點 162

第二部分 Delphi內核深入剖析(II) 167

第7章 Delphi的內存管理器 169

7.1 Delphi的內存管理器實現框架 169

7.2 內存頁管理 171

7.3 堆 172

7.4 MemoryManager及相關例程 172

7.5 GetMem.inc中的重要例程 174

7.5.1 堆塊及其管理例程 175

7.5.2 虛地址空間(Address space)管理 178

7.5.3 已提交的內存空間(Committed space)管理 179

7.5.4 用戶調用例程(actually calls)的實現 180

7.5.5 初始化、結束化與其他輔助例程 194

7.6 遍歷全部內存塊 195

7.7 共享內存管理器 197

7.8 第三方內存管理器 200

7.9 小結 201

第8章 錯誤和異常 203

8.1 錯誤 203

8.2 斷言 206

8.3 Windows與Delphi中的異常處理機制概要 209

8.4 編譯器對異常處理機制的實現 212

8.4.1 最小化內核的啟示 212

8.4.2 從操作系統的角度來理解編譯器行為 216

8.4.3 try..finally/except..end語法關鍵字與內部例程 219

8.5 基本(except型)異常處理 221

8.5.1 異常觸發(Raise) 221

8.5.2 多層(嵌套)的異常處理 222

8.5.3 異常展開(Unwind) 223

8.5.4 異常響應(Notify) 227

8.5.5 頂層異常處理 229

8.6 使用面向對象技術的異常類 233

8.6.1 異常列表、RaiseFrame與ExceptionRecord 233

8.6.2 未知異常映射:ExceptObjProc 235

8.6.3 不使用SysUtils.pas單元的應用程序 236

8.6.4 _RaiseExcept()、_RaiseAgain()與_DoneExcept()例程 238

8.6.5 異常對象 241

8.6.6 異常類型檢測的依賴性問題 247

第9章 多線程的實現及調度 251

9.1 操作系統的進程與線程 252

9.1.1 線程的啟動過程 253

9.1.2 主線程與用戶線程啟動過程的比較 255

9.1.3 線程有哪些獨立元素 256

9.2 操作系統的線程調度概要 257

9.3 基本的多線程應用 258

9.4 線程變量(線程局部存儲) 261

9.4.1 線程局部存儲(TLS)的實質 262

9.4.2 編譯器的準備工作 263

9.4.3 靜態TLS:EXE模塊中的TLS 265

9.4.4 動態TLS:DLL模塊中的TLS 266

9.5 再論FS段 268

9.6 線程類(TThread) 272

9.6.1 線程執行體(Execute) 275

9.6.2 線程與主線程的同步(Synchronize) 277

9.6.3 控制臺應用的多線程同步(第三方的WakeMainThread例程) 287

9.6.4 線程中止和結束(Terminate) 292

9.7 線程同步對象 297

9.7.1 線程同步方法 298

9.7.2 Delphi中的線程同步類 306

9.7.3 線程對象的WaitFor()方法 311

9.8 多線程環境下的內存管理器 312

第10章 資源的管理和使用 315

10.1 資源字符串 315

10.1.1 隱含的調用:LoadResString()例程 315

10.1.2 _InitResStrings()例程 317

10.1.3 _InitResStringImports()例程 319

10.1.4 _InitImports()例程 320

10.2 Delphi編譯的PE文件的默認資源 322

10.2.1 PACKAGEINFO資源 323

10.2.2 PACKAGEOPTIONS資源 324

10.2.3 DVCLAL資源 326

10.2.4 DESCRIPTION資源 327

10.3 其他 327

第11章 突破Delphi在應用開發上的限制 329

11.1 開發DOS保護模式程序 329

11.2 開發Windows9x上的驅動程序 335

11.2.1 Delphi編譯的.OBJ文件 335

11.2.2 第三方的鏈接器處理Delphi的.OBJ文件的問題 336

11.2.3 在Delphi中編寫VxD驅動程序代碼 337

11.2.4 鏈接目標文件并輸出VxD驅動程序 338

11.3 開發WinNT/2000上的驅動程序 339

11.4 其他 342

術語表 343

參考書目 347

016_《Delphi源代碼分析》


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99热久久这里只有精品6国产网 | 女性特黄一级毛片 | 青青草99热这里都是精品 | 99热热久久这里只有精品8 | 国产视频一区在线观看 | 99热这里只有精品3 99热这里只有精品4 | 99国产福利视频区 | 欧美一级毛片图 | 国产成人国产在线观看入口 | 国产一级一片免费播放i | 四虎影在永久地址在线观看 | 亚洲精品久久成人福利 | 天天操天天干天天操 | 日韩欧美高清 | 欧美亚洲动漫 | 日本高清一 | 久久精品国产久金国产思思 | 五月综合激情视频在线观看 | 一区二区三区 日韩 | 69美女福利视频在线观看 | 精品国产香蕉 | 亚洲香蕉中文网 | 四虎影视院| 啊用力嗯快国产在线观看 | 亚洲欧美成人永久第一网站 | 视频黄在线观看 | 99re5在线精品视频热线 | 中文字幕高清免费不卡视频 | 色噜噜狠狠一区二区三区 | 精品亚洲一区二区在线播放 | 亚洲操综合| 国产高清精品在线 | x8x8国产日韩欧美 | 亚洲 日本 欧美 中文幕 | 九九视频在线观看视频 | 狠狠亚洲婷婷综合色香五 | 亚洲欧美日韩国产精品影院 | 在线精品国精品国产不卡 | 激情宗合网 | 日韩欧美毛片免费看播放 | 色综合天天综合网国产成人 |