Delphi源代码分析
基本信息
推荐阅读
内容简介回到顶部↑
本书通过对Delphi内核(RTL)源代码进行分析,深入阐述了Delphi内核(RTL)的原理及其实现。全书从Nico Bendlin编写的著名最小化内核示例程序MiniDExe讲起,基于MiniDExe分析Delphi在编译器一级的技术内幕,带领读者一窥Delphi的核心。随后作者基于这个内核逐层地包装代码,将Delphi的各种功能的具体实现一一展现,通过列出关键性代码并进行系统性分析的方式,全面分析对象结构、VCL和COM等在源代码中的实现。全书内容详实,阐述精辟、深入,主要议题包括:Delphi的编译器在Windows、Delphi RTL和用户代码之间的交互;Delphi RTL内核代码的完整实现;与Delphi内核相关的操作系统机制;初始(入口)代码、模块、内存、线程、资源、异常处理机制等。
本书是一本不可多得的高端技术图书,适合中、高级Delphi开发人员研读。
本书是一本不可多得的高端技术图书,适合中、高级Delphi开发人员研读。
作译者回到顶部↑
本书提供作译者介绍
周爱民(Aimingoo):Delphibbs(大富翁论坛)资深成员
◆1999-2000年为AV95的三个核心开发人员之一,顺利完成了该核心层代码编写。
◆2000-2002年完成极光网络数据仓库中心系统,荣获河南省高新技术产品二等奖。
◆2003年被美国Borland公司授予“BorlandDelphi产品专家”称号,同时授予“论坛特别贡献奖”,为惟一同时被授两个奖项的人员。
◆2003年11月,受邀参加Borland公司成立20周年举办的“Borland首届开发者大会”,发表题为“利用Delphi实现在Microsoft,NET Framework下的开发”的演.. << 查看详细
◆1999-2000年为AV95的三个核心开发人员之一,顺利完成了该核心层代码编写。
◆2000-2002年完成极光网络数据仓库中心系统,荣获河南省高新技术产品二等奖。
◆2003年被美国Borland公司授予“BorlandDelphi产品专家”称号,同时授予“论坛特别贡献奖”,为惟一同时被授两个奖项的人员。
◆2003年11月,受邀参加Borland公司成立20周年举办的“Borland首届开发者大会”,发表题为“利用Delphi实现在Microsoft,NET Framework下的开发”的演.. << 查看详细
目录回到顶部↑
序 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
前言 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
前言回到顶部↑
关于本书
在用Delphi1.0时,我便开始阅读Delphi的源代码了。大约是在五年前,我曾试图做一个名为"Delphi源代码深入分析"的网站,后来终于放弃了这个计划。而自此,写现在这样一本书的想法便积蓄至今。
真正激发我做这样一件事的,是Nico Bendlin写的MiniDExe。这是我所见过的用Delphi写的最小版本的可执行程序,它使我得以一窥Delphi的核心。于是,我开始基于MiniDExe分析Delphi在编译器一级上的真相。随后,我分析了对象结构、VCL和COM等在源代码中的实现。至此,本书的基本知识框架组织完成。
本书的知识结构
本书以内核的原理及其实现为主,主要讲述:
Delphi的编译器在Windows、Delphi RTL和用户代码之间的交互;
Delphi RTL内核代码的完整实现;
与Delphi内核相关的操作系统机制;
初始(入口)代码、模块、内存、线程、资源、异常处理机制等。
所有在本书中使用到的术语、参考资料等将以附录的形式列出。
本书基于Delphi 7.0所提供的源程序分析。
什么是"内核"
通常意义上的开发工具"内核",指的是RTL(RunTime Library)。在Delphi中,RTL是指源码的$(Source)\RTL目录中的全部代码。但以纯粹的RTL的概念来理解的话,事实上它应当是指System.pas和SysInit.pas中的全部代码(包括GetMem.inc)--这甚至不包括SysUtils.pas这个单元。
在本书中所讨论的内核,基本上是指$(Source)\RTL\Sys目录中的代码。此外,还包括:
$(Source)\RTL\Win:Windows.pas的部分代码。
$(Source)\RTL\Common:Classes.pas和SyncObjs.pas中的部分代码。
如何阅读这本书
写这本书的过程中,我几乎无时不在问自己"Delphi如何实现这个"或者"Delphi如何实现那个"。所以这本书在很大程度上都是在描述"Delphi如何做到",而不是"用Delphi如何做"。因此,我建议你以技术探索的角度来读这本书。你不要指望在本书中发现太多能直接在工程中使用的技术与技巧。
本书虽然是立足于Delphi源代码分析,但书中并不会大段地给出Delphi产品中的源码。因为Borland并没有这样的授权。通常情况下,我会列出关键性的代码,并进行系统的分析。因此,如果需要,读者可能必须自行对照源码中的.pas文件来阅读一些章节。
本书不包含内核源码的哪些内容
在用Delphi1.0时,我便开始阅读Delphi的源代码了。大约是在五年前,我曾试图做一个名为"Delphi源代码深入分析"的网站,后来终于放弃了这个计划。而自此,写现在这样一本书的想法便积蓄至今。
真正激发我做这样一件事的,是Nico Bendlin写的MiniDExe。这是我所见过的用Delphi写的最小版本的可执行程序,它使我得以一窥Delphi的核心。于是,我开始基于MiniDExe分析Delphi在编译器一级上的真相。随后,我分析了对象结构、VCL和COM等在源代码中的实现。至此,本书的基本知识框架组织完成。
本书的知识结构
本书以内核的原理及其实现为主,主要讲述:
Delphi的编译器在Windows、Delphi RTL和用户代码之间的交互;
Delphi RTL内核代码的完整实现;
与Delphi内核相关的操作系统机制;
初始(入口)代码、模块、内存、线程、资源、异常处理机制等。
所有在本书中使用到的术语、参考资料等将以附录的形式列出。
本书基于Delphi 7.0所提供的源程序分析。
什么是"内核"
通常意义上的开发工具"内核",指的是RTL(RunTime Library)。在Delphi中,RTL是指源码的$(Source)\RTL目录中的全部代码。但以纯粹的RTL的概念来理解的话,事实上它应当是指System.pas和SysInit.pas中的全部代码(包括GetMem.inc)--这甚至不包括SysUtils.pas这个单元。
在本书中所讨论的内核,基本上是指$(Source)\RTL\Sys目录中的代码。此外,还包括:
$(Source)\RTL\Win:Windows.pas的部分代码。
$(Source)\RTL\Common:Classes.pas和SyncObjs.pas中的部分代码。
如何阅读这本书
写这本书的过程中,我几乎无时不在问自己"Delphi如何实现这个"或者"Delphi如何实现那个"。所以这本书在很大程度上都是在描述"Delphi如何做到",而不是"用Delphi如何做"。因此,我建议你以技术探索的角度来读这本书。你不要指望在本书中发现太多能直接在工程中使用的技术与技巧。
本书虽然是立足于Delphi源代码分析,但书中并不会大段地给出Delphi产品中的源码。因为Borland并没有这样的授权。通常情况下,我会列出关键性的代码,并进行系统的分析。因此,如果需要,读者可能必须自行对照源码中的.pas文件来阅读一些章节。
本书不包含内核源码的哪些内容
序言回到顶部↑
第一次和Aimingoo见面是2003年底Borland Conference 2003在北京举行之际,Aimingoo宏亮的声音,诚恳的态度立刻吸引了我的好感。在BorCon排练时Aimingoo努力不懈一直坚持到最后,我当时心中就想这位年轻人真是不错。到了BorCon结束之后,我和Aimingoo有更多机会可以聊天,让我了解了Aimingoo的专长领域,也很佩服Aimingoo这么年轻就拥有这么多的开发经验。
在知道Aimingoo要写有关Delphi Run Time Library的书时,心中又惊又喜。惊的是这可是一个浩大的工程,喜的则是Aimingoo愿意花时间写这方面的书籍,造福想要一窥究竟的Delphi使用者。当Aimingoo把他的书籍目录和初稿给我过目时我又不禁羡慕他的成果以及Aimingoo的书籍和拙作Inside VCL是如此的相辅相成,Aimingoo的书籍叙述了驱动Delphi应用程序的引擎动力,Inside VCL则说明了Delphi应用程序使用的系统架框。
Aimingoo请我为他的新书写序实在是我的荣幸,除了他丰富的知识和精湛的技术之外,Aimingoo做事的态度更令人敬佩。结合技术和努力的结晶,Aimingoo为广大的Delphi使用者写出了另一本Delphi领域的著作,对于想要深入了解Delphi执行时期运作细节的Delphi使用者而言,这是值得阅读和珍藏的一本好书。
最后我个人也要谢谢Aimingoo又为李维工作室产生了一本高质量的技术书籍,让李维工作室系列书籍更为丰富和充实。更希望Aimingoo能够继续写出好书,不断帮助我们这群Delphi使用者更上一层楼。
李维 2004/3
在知道Aimingoo要写有关Delphi Run Time Library的书时,心中又惊又喜。惊的是这可是一个浩大的工程,喜的则是Aimingoo愿意花时间写这方面的书籍,造福想要一窥究竟的Delphi使用者。当Aimingoo把他的书籍目录和初稿给我过目时我又不禁羡慕他的成果以及Aimingoo的书籍和拙作Inside VCL是如此的相辅相成,Aimingoo的书籍叙述了驱动Delphi应用程序的引擎动力,Inside VCL则说明了Delphi应用程序使用的系统架框。
Aimingoo请我为他的新书写序实在是我的荣幸,除了他丰富的知识和精湛的技术之外,Aimingoo做事的态度更令人敬佩。结合技术和努力的结晶,Aimingoo为广大的Delphi使用者写出了另一本Delphi领域的著作,对于想要深入了解Delphi执行时期运作细节的Delphi使用者而言,这是值得阅读和珍藏的一本好书。
最后我个人也要谢谢Aimingoo又为李维工作室产生了一本高质量的技术书籍,让李维工作室系列书籍更为丰富和充实。更希望Aimingoo能够继续写出好书,不断帮助我们这群Delphi使用者更上一层楼。
李维 2004/3








点击看大图







加载中...