注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计C/C++及其相关虚拟机的设计与实现:C/C++

虚拟机的设计与实现:C/C++

虚拟机的设计与实现:C/C++

定 价:¥76.00

作 者: 美.布朗登著杨涛等译;杨涛译
出版社: 机械工业出版社
丛编项: 开发人员专业技术丛书
标 签: C++

ISBN: 9787111111115 出版时间: 2003-01-01 包装: 胶版纸
开本: 16 页数: 676 字数:  

内容简介

  本书的作者曾经是一位物理学家,所以在计算机领域有着坚实、严谨的理论基础,他从自己的实践出发,采用了数学中的SOP方法(命题—证明—示例),深入浅出地论述了本书的三大部分:概述、HEC虚拟机、HEC汇编语言,对虚拟机的设计目标、HEC虚拟机、HEC汇编器、HEC调试器、HEC中断、HEC汇编语言的使用方法依次进行了描述,对HEC虚拟机在Windows和UNIX上的实现进行了比较。本书是第一本对虚拟机及其全套开发工具做出完整细致介绍的工具书。它能帮助系统工程师摆脱对计算机硬件制造商的依赖,也适用于学习计算机工作原理的学生,是虚拟机方面不可多得的一本好书。

作者简介

  自从在1983年第一次接触到DOS的调试工具开始,Bill Blunden就一直沉迷于系统软件之中。他不满足于仅仅知道事物的表面现象,而是一门心思地去探求它们的本质。凭着初生牛犊的勇气,他开始尝试编写8259中断控制器程序,结果是把他自己的电脑弄得一团糟。直到获得计算物理(mathematical physics)学士学位和操作研究(operation research)硕士学位之后,Bill的才华才逐渐显露出来。在美丽的Cleveland市的一家保险公司里担任保险统计师期间,Bill平生第一次与一台工作异常的IBM大型机进行了面对面的“搏斗”——那台机器里有一个COBOL程序编写得不正确。虽然“战斗”十分“惨烈”,但Bill最终胜利了,而他的兴趣也由此从钻研数字转移到了软件研发方面。随着时间的推移,Bill逐渐成为美国中西部地区一位知名的ERP专家——他用Java语言开发了一个CASE工具,进行了大量的技术研究,并与Control Data Corporation(控制数据公司,CDC)的许多专家进行了切磋。Bill有权随意支配一台配备有4块处理器和2GB RAM的机器,这使他能够在自己的象牙塔里开展各种研究。因为拥有如此之多的内存,所以曾经有一个时期,Bill习惯于关掉操作系统的内存分页(paging)功能,让程序直接运行在SDRAM上。但他小侄子的出生使Bill不得不从中西部迁居到西部的硅谷。Bill现居住在经常发生停电和地震的硅谷地区,并逐渐从自己与COBOL当初的“战斗”中恢复过来。

图书目录

前言
作者简介
第一部分 概述
第1章 历史与目标 
1.1 历史回顾 
1.2 为什么要设计虚拟机 
1.3 贬值的财富 
1.4 微妙的平衡 
1.5 虚拟机反对派的观点 
1.6 展望未来 
1.7 经验和教训 
1.8 参考资料 
第2章 基本执行环境 
2.1 概述 
2.2 记号方法 
2.3 运行时系统与虚拟机 
2.4 内存管理 
2.4.1 机器级上的内存管理 
2.4.2 操作系统级上的内存管理 
2.4.3 应用程序级上的内存管理 
2.5 动态内存管理 
2.6 HEC虚拟机的内存管理 
2.7 机器设计 
2.8 HEC虚拟机的设计 
2.9 任务管理 
2.10 线程 
2.11 HEC虚拟机的任务管理 
2.12 输入/输出 
2.13 HEC虚拟机的输入/输出 
2.14 参考资料 
第二部分 HEC虚拟机
第3章 虚拟机的实现 
3.1 概述 
3.2 全局性元素 
3.2.1 common.c 
3.2.2 win32.c 
3.2.3 iset.c 
3.2.4 exenv.c 
3.2.5 error.c 
3.3 HEC虚拟机的命令行语法 
3.4 用来实现调试功能的代码 
3.5 处理配置选项 
3.6 设置环境 
3.7 字节码验证 
3.8 指令的执行 
3.8.1 load.c 
3.8.2 store.c 
3.8.3 pushpop.c 
3.8.4 move.c 
3.8.5 jump.c 
3.8.6 bitwise.c 
3.8.7 shift.c 
3.8.8 intmath.c 
3.8.9 fltmath.c 
3.8.10 dblmath.c 
3.8.11 interupt.c 
3.8.12 intwin32.c 
3.9 本章总结 
3.10 参考资料 
第4章 HEC调试器 
4.1 概述 
4.2 调试技术 
4.2.1 断点 
4.2.2 单步执行 
4.3 Intel平台上的调试技术 
4.4 Intel平台上的中断 
4.4.1 实模式下的内存寻址 
4.4.2 实模式下的寄存器 
4.4.3 实模式下的中断处理 
4.5 DOSdbg 
4.6 用来对付调试器的招数 
4.6.1 招数之一:破坏堆栈 
4.6.2 招数之二:增加线程 
4.6.3 招数之三:自修改程序 
4.6.4 招数之四:混合内存模型 
4.6.5 其他招数 
4.7 HEC文件格式 
4.7.1 文件头部分 
4.7.2 符号表 
4.7.3 字符串表 
4.7.4 字节码部分 
4.8 操作模式 
4.9 HEC调试器实现 
4.10 命令行的处理 
4.11 保存调试元数据 
4.12 处理调试命令 
4.12.1 ? - 帮助 
4.12.2 Q - 退出 
4.12.3 F - 可执行文件信息 
4.12.4 D start stop -转储内存 
4.12.5 S start stop string - 搜索字符串 
4.12.6 L string - 符号查询 
4.12.7 P - 函数显示 
4.12.8 RX- 显示寄存器内容(Ri、Rf、Rd) 
4.12.9 T - 单步执行 
4.13 未来设想 
4.13.1 更快的算法 
4.13.2 O(n)记号 
4.13.3 动态补丁 
4.13.4 动态断点 
4.13.5 会话日志 
4.13.6 程序频率计数 
4.13.7 符号化调试器 
4.14 试用HEC虚拟机 
4.15 参考资料 
第三部分 HEC汇编语言
第5章 汇编器的实现 
5.1 概述 
5.2 数据结构简述 
5.2.1 HSAM汇编器算法 
5.2.2 抽象数据类型 
5.2.3 抽象数据类型之一:向量 
5.2.4 可扩展数组 
5.2.5 抽象数据类型之二:数据树 
5.2.6 二元搜索树 
5.2.7 抽象数据类型之三:字典 
5.2.8 哈希表 
5.2.9 HASM数据结构小结 
5.3 命令行的使用方法 
5.4 HEC汇编器实现 
5.5 全局性元素 
5.6 命令行选项和命令行参数的处理 
5.7 第1遍—建立符号表 
5.7.1 概述 
5.7.2 LineScanner类 
5.7.3 LineTokenizer类 
5.7.4 Pass1类 
5.7.5 StringTable类 
5.7.6 SymbolTable类 
5.7.7 HashTable类 
5.8 第2遍—生成字节码和程序清单 
5.9 创建编译单位 
5.10 读取程序清单文件 
5.11 试用HSAM汇编语言 
5.12 参考资料 
第6章 虚拟机的中断 
6.1 概述 
6.2 INT 0—文件输入/输出 
6.3 INT 1—文件管理 
6.4 INT 2—进程管理 
6.5 INT 3—断点 
6.6 INT 4—时间和日期调用 
6.7 INT 5—处理命令行参数 
6.8 INT 6—内存诊断 
6.9 INT 7—动态内存分配 
6.10 INT 8—数学函数 
6.11 INT 9—与宿主代码的接口 
6.12 INT 10—进程间通信(IPC) 
6.12.1 IPC概述 
6.12.2 TCP/IP套接字 
6.12.3 TCP/IP地址 
6.12.4 实现 
6.13 参考资料 
第7章 HEC汇编语言 
7.1 构成汇编语言程序的元素 
7.1.1 指令 
7.1.2 伪指令 
7.1.3 注释 
7.2 函数和标号的定义 
7.3 立即数据的加载和移动 
7.4 直接内存寻址模式 
7.5 数据的加载和保存 
7.6 算术运算 
7.7 二进制位操作 
7.8 数据转换 
7.9 程序流控制 
7.9.1 跳转 
7.9.2 选择 
7.9.3 循环 
7.10 与堆栈有关的操作 
7.11 间接内存寻址模式 
7.12 全局变量存储的定义 
7.13 构造函数调用记录 
7.14 数据类型的映射 
7.15 程序元素的作用范围 
7.16 指令与伪指令小结 
7.17 参考资料 
第8章 高级论题 
8.1 HEC虚拟机与高级语言:编译器设计 
8.1.1 复杂性管理 
8.1.2 方法 
8.2 支持面向对象功能 
8.2.1 基本概念 
8.2.2 封装 
8.2.3 继承 
8.2.4 多态 
8.3 异常 
8.3.1 Java中的异常 
8.3.2 异常的实现方法 
8.3.3 异常的实现示例 
8.3.4 异常的滥用 
8.4 移植 
8.4.1 对Linux的观感 
8.4.2 linux.c文件 
8.4.3 intlinux.c文件 
8.5 建立HEC运行时系统 
8.6 建造你自己的运行时系统 
8.6.1 模仿与创造 
8.6.2 项目管理—关键路径 
8.6.3 运行时系统的关键路径 
8.6.4 操作系统的关键路径 
8.7 参考资料 
8.7.1 编译器理论 
8.7.2 密码学 
8.7.3 异常 
8.7.4 Java 
8.7.5 Linux 
附录

本目录推荐