016_《Delphi源代码分析》

简介: 《Delphi源代码分析》 Delphi 教程 系列书籍 (016) 《Delphi源代码分析》 网友(邦)整理 EMail: shuaihj@163.

《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

相关文章
|
SQL 数据库 开发工具
102_《Delphi5编程实例与技巧》
《Delphi5编程实例与技巧》 Delphi 教程 系列书籍 (102) 《Delphi5编程实例与技巧》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: 下载 作者: 王华等 丛书名: 软件开发技术丛书 出版社:机械工业出版社 ISBN:7111078012 上架时间:2000-7-1 出版日期:2000 年2月 页码:432 版次:1-1 内容简介 Delphi是由Inprise公司推出的面向对象的可视化软件开发工具。
1561 0
|
数据可视化 数据库 开发工具
048_《Delphi简明教程》
《Delphi简明教程》 Delphi 教程 系列书籍 (048) 《Delphi简明教程》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 郑 洪 编著 张 晋 审校 内容简介 Delphi 5 是由软件界的巨头人士、著名的Inprise 公司开发的新一代可视化程序开发工具,一直以来受到计算机编程爱好者和各机构专业认识的广泛青睐。
1119 0
|
API Windows 程序员
084_《Windows网络编程之Delphi篇》
《Windows网络编程之Delphi篇》 Delphi 教程 系列书籍 (084) 《Windows网络编程之Delphi篇》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 作者: 萧秋水 文娟 丛书名: 计算机编程系列丛书 出版社:清华大学出版社 ISBN:7900630945 上架时间:2001-2-27 出版日期:2001 年1月 页码:280 版次:1-1 内容简介 Internet技术无疑是当今计算机技术的最大热点。
2919 0
|
Web App开发 BI 数据库连接
099_《Delphi5专题开发指南》
《Delphi5专题开发指南》 Delphi 教程 系列书籍 (099) 《Delphi5专题开发指南》 网友(邦)整理 EMail: shuaihj@163.
1339 0
|
程序员 API 数据库
093_《Delphi6实用开发指南》
《Delphi6实用开发指南》 Delphi 教程 系列书籍 (093) 《Delphi6实用开发指南》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: 下载 作者: 张增强 谷会东 丛书名: 其他 出版社:电子工业出版社 ISBN:7900074023 上架时间:2001-11-27 出版日期:2001 年10月 页码:344 版次:1-1 内容简介 Delphi 6.0是Borland公司最新推出的新一代可视化开发工具,它具有功能强大、简便易用和代码执行速度快等优点。
1459 0
|
存储 API 数据库
104_《Delphi5开发人员指南》
《Delphi5开发人员指南》 Delphi 教程 系列书籍 (104) 《Delphi5开发人员指南》 网友(邦)整理 EMail: shuaihj@163.
1413 0
|
Windows
069_《Delphi7组件编写者指南》
《Delphi7组件编写者指南》 Delphi 教程 系列书籍 (069) 《Delphi7组件编写者指南》 网友(邦)整理 EMail: shuaihj@163.
1180 0
|
数据可视化 数据库 Windows
058_《突破Delphi7.0编程实例五十讲》
《突破Delphi7.0编程实例五十讲》 Delphi 教程 系列书籍 (058) 《突破Delphi7.0编程实例五十讲》 网友(邦)整理 EMail: shuaihj@163.
1333 0
|
Web App开发 程序员 数据库
019_《Delphi第三方控件使用大全Ⅱ》
《Delphi第三方控件使用大全Ⅱ》 Delphi 教程 系列书籍 (019) 《Delphi第三方控件使用大全Ⅱ》 网友(邦)整理 EMail: shuaihj@163.
2094 0
|
存储 容器
030_《Delphi COM深入编程》
《Delphi COM深入编程》 Delphi 教程 系列书籍 (030) 《Delphi COM深入编程》 网友(邦)整理 EMail: shuaihj@163.
1349 0