注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)生活時(shí)尚育兒/成長(zhǎng)家庭教育Delphi源代碼分析

Delphi源代碼分析

Delphi源代碼分析

定 價(jià):¥40.00

作 者: 周愛(ài)民著
出版社: 電子工業(yè)出版社
叢編項(xiàng): Borland In-Depth Series\Borland大系
標(biāo) 簽: Delphi

ISBN: 9787121003035 出版時(shí)間: 2004-09-01 包裝: 平裝
開(kāi)本: 24cm 頁(yè)數(shù): 350 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)通過(guò)對(duì)Delphi內(nèi)核(RTL)源代碼進(jìn)行分析,深入闡述了Delphi內(nèi)核(RTL)的原理及其實(shí)現(xiàn)。全書(shū)從Nico Bendlin編寫(xiě)的著名最小化內(nèi)核示例程序MiniDExe講起,基于MiniDExe分析Delphi在編譯器一級(jí)的技術(shù)內(nèi)幕,帶領(lǐng)讀者一窺Delphi的核心。隨后作者基于這個(gè)內(nèi)核逐層地包裝代碼,將Delphi的各種功能的具體實(shí)現(xiàn)一一展現(xiàn),通過(guò)列出關(guān)鍵性代碼并進(jìn)行系統(tǒng)性分析的方式,全面分析對(duì)象結(jié)構(gòu)、VCL和COM等在源代碼中的實(shí)現(xiàn)。全書(shū)內(nèi)容詳實(shí),闡述精辟、深入,主要議題包括:Delphi的編譯器在Windows、Delphi RTL和用戶代碼之間的交互;Delphi RTL內(nèi)核代碼的完整實(shí)現(xiàn);與Delphi內(nèi)核相關(guān)的操作系統(tǒng)機(jī)制;初始(入口)代碼、模塊、內(nèi)存、線程、資源、異常處理機(jī)制等。本書(shū)是一本不可多得的高端技術(shù)圖書(shū),適合中、高級(jí)Delphi開(kāi)發(fā)人員研讀。

作者簡(jiǎn)介

  周愛(ài)民,1999-2000年為AV95的三個(gè)核心開(kāi)發(fā)人員之一,順利完成了該核心層代碼編寫(xiě)。2000-2002年完成極光網(wǎng)絡(luò)數(shù)據(jù)倉(cāng)庫(kù)心中心系統(tǒng),榮獲河南省高新技術(shù)產(chǎn)品二等獎(jiǎng)。2003年被美國(guó)Borland公司授予“Borland Delphi產(chǎn)品專家“稱號(hào),同時(shí)授予”論壇特別貢獻(xiàn)獎(jiǎng)“。為惟一同時(shí)被授兩個(gè)將項(xiàng)人人員。2003年11月,受邀參加Borland公司成立20周年舉辦的“Borland首屆開(kāi)發(fā)者大會(huì)“,發(fā)表題為“利用Delphi實(shí)現(xiàn)在Micphi 實(shí)現(xiàn)在Microsoft.NET Framework下的開(kāi)發(fā)“演講。

圖書(shū)目錄

第一部分  DELPHI內(nèi)核深入剖析(I)  1
第1章  最小化DELPHI內(nèi)核  3
1.1  MiniDExe如何實(shí)現(xiàn)內(nèi)核最小化  3
1.1.1  MiniDExe中的System.pas單元  4
1.1.2  MiniDExe中的SysInit.pas單元  5
1.1.3  MiniDExe中的項(xiàng)目文件MiniDExe.dpr  6
1.2  一些其他的內(nèi)核優(yōu)化  6
1.3  為什么要研究最小化內(nèi)核  7
第2章  基本數(shù)據(jù)類型的實(shí)現(xiàn)  9
2.1  基本數(shù)據(jù)類型  9
2.2  變量與常量  11
2.2.1  全局變量與局部變量  11
2.2.2  動(dòng)態(tài)分配的內(nèi)存  12
2.2.3  換一個(gè)方式來(lái)理解  13
2.2.4  常量  14
2.3  數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)  16
2.3.1  簡(jiǎn)單類型  16
2.3.2  字符串  16
2.3.3  構(gòu)造類型  26
2.3.4  指針類型  28
2.3.5  過(guò)程類型  28
2.4  數(shù)據(jù)結(jié)構(gòu)相關(guān)的例程  29
2.4.1  標(biāo)準(zhǔn)Pascal的內(nèi)置例程  30
2.4.2  字符串操作例程  31
2.5  變量的類型檢測(cè)與強(qiáng)制轉(zhuǎn)換  47
2.6  引用-計(jì)數(shù)-寫(xiě)復(fù)制與類型信息  48
2.6.1  引用計(jì)數(shù)與增加引用  48
2.6.2  “增加引用”何時(shí)發(fā)生  49
2.6.3  增加引用的操作是依賴類型信息來(lái)實(shí)現(xiàn)的  51
2.6.4  寫(xiě)復(fù)制與值參數(shù)的備份  53
第3章  BASM(BORLAND匯編語(yǔ)言)精要  55
3.1  BASM概念簡(jiǎn)要  55
3.2  表達(dá)式的類別與類型  56
3.3  數(shù)據(jù)定義和數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換  57
3.4  例程入口參數(shù)及調(diào)用約定  61
3.5  例程和API的調(diào)用與流程控制  62
3.6  完全匯編例程與內(nèi)嵌匯編例程  65
3.7  匯編例程中的返回值約定  66
3.8  其他  67
第4章  初始化與結(jié)束化過(guò)程  71
4.1  變量的初始化與結(jié)束化  71
4.1.1  初始化的必要性  72
4.1.2  如何初始化  73
4.1.3  如何結(jié)束化  74
4.2  例程的初始化與結(jié)束化  76
4.3  單元初始化與結(jié)束化  77
4.4  模塊初始化與結(jié)束化  79
4.4.1  模塊入口代碼  79
4.4.2  編譯器決定的程序執(zhí)行流程  80
第5章  面向WINDOWS開(kāi)發(fā)的基本實(shí)現(xiàn)  83
5.1  Win32應(yīng)用程序:EXE  83
5.1.1  適應(yīng)Win32應(yīng)用程序的最簡(jiǎn)化內(nèi)核  83
5.1.2  初始化例程_InitExe()  85
5.1.3  內(nèi)部模塊表管理例程  86
5.1.4  .EXE啟動(dòng)例程_StartExe()  87
5.1.5  應(yīng)用程序的結(jié)束化控制  88
5.2  32位的DOS:控制臺(tái)應(yīng)用程序  91
5.2.1  控制臺(tái)應(yīng)用程序的模塊入口代碼  91
5.2.2  控制臺(tái)應(yīng)用程序的最小化實(shí)現(xiàn)  92
5.2.3  控制臺(tái)應(yīng)用程序的Delphi實(shí)現(xiàn)  93
5.2.4  文件操作例程與控制臺(tái)應(yīng)用程序  94
5.2.5  控制臺(tái)的開(kāi)啟與關(guān)閉  97
5.2.6  CRT單元與Input、Output的重載  98
5.3  動(dòng)態(tài)鏈接庫(kù):DLL  99
5.3.1  丟失的DllMain()  99
5.3.2  _InitLib()例程  101
5.3.3  _StartLib()例程  101
5.3.4  .DLL的結(jié)束化過(guò)程  102
5.3.5  DllProc與DllMain()的不同  105
5.3.6  動(dòng)態(tài)鏈接庫(kù)的內(nèi)核最小化  106
5.4  Delphi的動(dòng)態(tài)鏈接庫(kù):包  108
5.4.1  包的主要規(guī)則  108
5.4.2  Delphi中的包與普通DLL的區(qū)別  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  內(nèi)部例程_PackageLoad()與_PackageUnload()  116
5.4.9  包的內(nèi)核最小化  117
5.5  其他  118
5.5.1  初始化上下文中OuterContext域的使用  118
5.5.2  入口代碼中的堆棧使用深入分析(內(nèi)存現(xiàn)場(chǎng))  119
5.5.3  再論入口代碼  123
第6章  DELPHI的積木藝術(shù)(PE)  127
6.1  PE文件結(jié)構(gòu)概要  127
6.1.1  文件頭  129
6.1.2  節(jié)表  131
6.1.3  節(jié)  132
6.1.4  PE文件與內(nèi)存映射  134
6.1.5  有關(guān)相對(duì)虛地址的計(jì)算  138
6.2  Delphi的PE文件頭中一些重要的域  142
6.3  Delphi的PE文件中一些重要的節(jié)  144
6.3.1  線程局部存儲(chǔ)(.tls和.rdata)  144
6.3.2  資源節(jié)(.rsrc)  145
6.3.3  導(dǎo)入、導(dǎo)出表(.idata和.edata)  146
6.3.4  數(shù)據(jù)節(jié)與代碼節(jié)(DATA、BSS和CODE)  154
6.3.5  重定位節(jié)(.reloc)  157
6.4  3.5K的秘密  159
6.4.1  Delphi的PE文件頭部  159
6.4.2  Delphi的PE文件的節(jié)及其默認(rèn)對(duì)齊  160
6.4.3  還可能更小嗎  160
6.4.4  3.5K代碼的內(nèi)存映射  161
6.5  入口點(diǎn)  162

第二部分  DELPHI內(nèi)核深入剖析(II)  167
第7章  DELPHI的內(nèi)存管理器  169
7.1  Delphi的內(nèi)存管理器實(shí)現(xiàn)框架  169
7.2  內(nèi)存頁(yè)管理  171
7.3  堆  172
7.4  MemoryManager及相關(guān)例程  172
7.5  GetMem.inc中的重要例程  174
7.5.1  堆塊及其管理例程  175
7.5.2  虛地址空間(Address space)管理  178
7.5.3  已提交的內(nèi)存空間(Committed space)管理  179
7.5.4  用戶調(diào)用例程(actually calls)的實(shí)現(xiàn)  180
7.5.5  初始化、結(jié)束化與其他輔助例程  194
7.6  遍歷全部?jī)?nèi)存塊  195
7.7  共享內(nèi)存管理器  197
7.8  第三方內(nèi)存管理器  200
7.9  小結(jié)  201
第8章  錯(cuò)誤和異常  203
8.1  錯(cuò)誤  203
8.2  斷言  206
8.3  Windows與Delphi中的異常處理機(jī)制概要  209
8.4  編譯器對(duì)異常處理機(jī)制的實(shí)現(xiàn)  212
8.4.1  最小化內(nèi)核的啟示  212
8.4.2  從操作系統(tǒng)的角度來(lái)理解編譯器行為  216
8.4.3  try..finally/except..end語(yǔ)法關(guān)鍵字與內(nèi)部例程  219
8.5  基本(except型)異常處理  221
8.5.1 異常觸發(fā)(Raise)  221
8.5.2  多層(嵌套)的異常處理  222
8.5.3  異常展開(kāi)(Unwind)  223
8.5.4  異常響應(yīng)(Notify)  227
8.5.5  頂層異常處理  229
8.6  使用面向?qū)ο蠹夹g(shù)的異常類  233
8.6.1  異常列表、RaiseFrame與ExceptionRecord  233
8.6.2  未知異常映射:ExceptObjProc  235
8.6.3  不使用SysUtils.pas單元的應(yīng)用程序  236
8.6.4  _RaiseExcept()、_RaiseAgain()與_DoneExcept()例程  238
8.6.5  異常對(duì)象  241
8.6.6  異常類型檢測(cè)的依賴性問(wèn)題  247
第9章  多線程的實(shí)現(xiàn)及調(diào)度  250
9.1  操作系統(tǒng)的進(jìn)程與線程  251
9.1.1  線程的啟動(dòng)過(guò)程  252
9.1.2  主線程與用戶線程啟動(dòng)過(guò)程的比較  254
9.1.3  線程有哪些獨(dú)立元素  255
9.2  操作系統(tǒng)的線程調(diào)度概要  256
9.3  基本的多線程應(yīng)用  257
9.4  線程變量(線程局部存儲(chǔ))  260
9.4.1  線程局部存儲(chǔ)(TLS)的實(shí)質(zhì)  261
9.4.2  編譯器的準(zhǔn)備工作  262
9.4.3  靜態(tài)TLS:EXE模塊中的TLS  265
9.4.4  動(dòng)態(tài)TLS:DLL模塊中的TLS  266
9.5  再論FS段  268
9.6  線程類(TThread)  271
9.6.1  線程執(zhí)行體(Execute)  275
9.6.2  線程與主線程的同步(Synchronize)  277
9.6.3  控制臺(tái)應(yīng)用的多線程同步(第三方的WakeMainThread例程)  287
9.6.4  線程中止和結(jié)束(Terminate)  291
9.7  線程同步對(duì)象  297
9.7.1  線程同步方法  298
9.7.2  Delphi中的線程同步類  306
9.7.3  線程對(duì)象的WaitFor()方法  311
9.8  多線程環(huán)境下的內(nèi)存管理器  312
第10章  資源的管理和使用  315
10.1  資源字符串  315
10.1.1  隱含的調(diào)用:LoadResString()例程  315
10.1.2  _InitResStrings()例程  317
10.1.3  _InitResStringImports()例程  319
10.1.4  _InitImports()例程  320
10.2  Delphi編譯的PE文件的默認(rèn)資源  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在應(yīng)用開(kāi)發(fā)上的限制  329
11.1  開(kāi)發(fā)DOS保護(hù)模式程序  329
11.2  開(kāi)發(fā)Windows9x上的驅(qū)動(dòng)程序  335
11.2.1  Delphi編譯的.OBJ文件  335
11.2.2  第三方的鏈接器處理Delphi的.OBJ文件的問(wèn)題  336
11.2.3  在Delphi中編寫(xiě)VxD驅(qū)動(dòng)程序代碼  337
11.2.4  鏈接目標(biāo)文件并輸出VxD驅(qū)動(dòng)程序  338
11.3  開(kāi)發(fā)WinNT/2000上的驅(qū)動(dòng)程序  339
11.4  其他  342
術(shù)語(yǔ)表  343
參考書(shū)目  347

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)