计算机组成及汇编语言原理
作者 : (美) Patrick Juola 著
译者 : 吴为民 艾丽华 张大伟 译
丛书名 : 计算机科学丛书
出版日期 : 2009-11-06
ISBN : 978-7-111-27785-9
定价 : 39.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 248
开本 : 16
原书名 : Principles of Computer Organization and Assembly Language:Using the Java Virtual Machine
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

与许多以8088为基础介绍计算机组成与结构的教材不同,本书以Java虚拟机为基础介绍计算机组织和系统结构的一般原理, 涉及数字逻辑和系统、数据表示、计算机组织与系统结构等核心内容,前半部分(第1~5章)涵盖了计算机组织和系统结构的一般原理,以及汇编语言编程的艺术,后半部分(第6~10章)关注于各种不同CPU在系统结构上的特殊细节,包括奔腾、8088、Power系统结构以及作为典型嵌入式系统控制芯片例子的Atmel AVR。
  本书全面反映了IEEE和ACM对本科生掌握标准计算机体系结构及组成的知识点要求,适用范围广,可作为高等院校计算机及相关专业计算机组成课程的教材。

图书特色

计算机组成及汇编语言原理
Principles of Computer Organization and Assembly Language
Using the Java Virtual Machine
(美) Patrick Juola 迪尤肯大学 著 吴为民 艾丽华 张大伟 译

本书以创新的视角介绍了计算机组成原理,主要以Java虚拟机为例,因为Java虚拟机是一个极为便利、时新、可移植以及几乎到处可得到的平台。
本书主张读者在Java虚拟机的范围内彻底理解计算机组成的核心原理,然后将这些原理拓展到其他四个最主要的平台:Intel 8088、Pentium 4、Power体系结构及Atmel AVR微控制器。使读者能快速掌握实际环境中计算机体系结构原理,提高实践和应用能力。

本书主要内容
计算、表示以及虚拟机的角色。
算术表达式:符号表示、存储程序计算机及运算。
采用领先的开源Java汇编器jasmin进行汇编语言编程。
从if语句和循环到子例程的控制结构。
真实的计算机体系结构:优化CPU、存储器及外设。
8088、Pentium及Power:比较其组成、体系结构及汇编语言。
Pentium和Power体系结构的性能问题,包括流水线。
微控制器:组成、体系结构、接口及程序设计。
高级Java虚拟机编程:复杂和派生类型、类、继承、类操作、I/O等。
附录涵盖了数字逻辑、Java虚拟机指令集、操作代码及类文件格式。

作者简介
Patrick Juola
科罗拉多大学计算机科学博士,现为迪尤肯大学数学与计算机科学系副教授。他的研究兴趣包括自然语言处理、语言心理学及计算机安全。他曾在牛津大学做博士后,在卡内基-梅隆大学的CERT/CC做访问科学家,在PGP公司做专职科学家。

图书前言

本书内容
  这是一本关于Java虚拟机(Java Virtual Machine,JVM)组织和系统结构的书。JVM是处于Java语言核心的软件,并出现在大多数计算机、Web浏览器、PDA以及网络化附属设备中。本书还涵盖了计算机组织和系统结构的一般原理,并以其他流行(或不那么流行)的计算机为例加以说明。
  这不是一本关于编程语言Java的书,虽然具备Java语言或类Java语言(C、C++、Pascal、Algol等)的一些知识会有所帮助。本书是一本关于Java语言如何使事件发生以及计算如何产生的书。
  这本书的写作开始于一个现代技术的实验。当我开始任教于目前的大学时(1998年),计算机组织和系统结构课程用的主要是运行MS-DOS的8088,这个编程环境实质上与修这门课的二年级学生年龄相当。(遗憾的是,这种时间上的迟滞相当普遍。当我在本科修同样的课程时,所学系统结构的相应计算机只比我“年轻”2年。)根本问题是现代奔腾4芯片不是特别好的教学用系统结构。它加入了有20年历史的8088的所有功能,包括其局限,并提供了复杂的变通方法。由于这个复杂性问题,就难以在不详细引用早已过时的芯片集的情况下解释清楚奔腾4的工作原理。教科书主要讲解的是较简单的8088,然后作为扩展和后续思考来描述实际要使用的计算机。这就好比在福特A型上学习汽车力学,后来只讨论如催化式排气净化器、自动驾驶、基于钥匙的点火系统等重要概念。计算机系统结构课程不应被迫成为计算历史的课程。
  与此不同的是,我想采用一种易于理解的系统结构来教这门课,该系统结构结合了现代原理且本身对学生有用。由于每个运行Web浏览器的计算机都结合了JVM的一个副本作为软件,因此几乎每个当今的计算机都已经有了兼容的JVM供其使用。
  因而这本书涵盖了计算机组织和系统结构的核心方面:数字逻辑和系统、数据表示以及计算机组织/系统结构。本书还描述了一种特定系统结构JVM的汇编级语言,并且介绍了其他常见的系统结构(如英特尔奔腾4和Power PC)作为支持例子但不作为重点。正如IEEE计算机学会和美国计算机协会所推荐的,本书尤其适合作为计算机系统结构和组织的标准二年级课程。
组织
  本书包含两个部分。前半部分(第1~5章)涵盖了计算机组织和系统结构的一般原理,以及汇编语言编程的艺术/科学,并采用了JVM作为例子来阐明这些原理如何起作用(在数字计算机中如何表示数?加载器做哪些事情?格式转换涉及哪些事情?),以及JVM汇编语言编程中一些必要的细节,包括对操作代码的详细讨论(操作代码i2c要做哪些事情,它是如何改变堆栈的?运行汇编器的命令是什么)。本书的后半部分(第6~10章)关注于各种不同CPU在系统结构上的特殊细节,包括奔腾、它的老亲戚8088、Power系统结构,以及作为典型嵌入式系统控制芯片例子的Atmel AVR。
读者
  这个框架将使得本书被广大读者和众多课程所使用,这是我的希望和信念。本书应能成功地服务于以软件为中心的计算机产业。对于那些主要感兴趣于将编程语言作为基础来学习抽象的计算机科学的人来说,JVM对计算的基本操作提供了一个简单、易于理解的介绍。作为编译器理论、编程语言或操作系统课程的基础,JVM是一个便利和可移植的平台和目标系统结构,比任何单芯片或操作系统有更广的可用性。作为进一步学习(特定平台的)各种计算机的基础,JVM提供了一个有用的解释性教学系统结构,该系统结构不仅可向目前的奔腾,而且可向在未来可能取代或支持奔腾的其他系统结构,实现平滑的、有原则的过渡。对于有兴趣学习计算机如何工作的学生来说,本书将提供有关大量不同平台的信息,以增强使用实际计算机和系统结构的能力。
  如上所述,本书主要是作为本科二年级的单学期课程的教科书。前四章给出了理解计算机组织、系统结构以及汇编语言编程所需的核心材料。假设读者已经有了高级命令性语言的一些知识,并且熟悉高中代数(不是微积分)。在此基础上,教授(和学生)在选择主题方面有某种程度的灵活性,这取决于环境和具体问题。对于Intel/Windows工作组,关于8088和奔腾的章节就是有用和相关的,而对于有老式苹果机或基于Motorola微处理器实验室的学校,关于Power系统结构的章节更为相关。讲述Atmel AVR的一章可为嵌入式系统或微计算机实验室工作奠定基础,而高级的JVM课题将是打算以JVM系统结构为基础实现基于JVM的系统或编写系统软件(编译器、解释器等等)的学生之兴趣所在。进度快的课程甚至可能会涵盖本书所有的主题。书中还提供了附录供参考,因为我们相信,好的教科书应该在课程结束后仍是有用的。
致谢
  没有Duquesne大学的学生,尤其是在计算机组织和汇编语言课程中参加我的实验的学生们,就不会有这本书。还要感谢我所在的系、学院以及大学所提供的帮助,尤其是来自Philip H.和Betty L. Wimmer家庭基金会的基金支持。我还要感谢我的读者,尤其是Pittsburgh大学的Erik Lindsley对早期草稿的宝贵意见。
  没有出版商,本书永远不会与读者见面。因此我还要感谢Tracey Dunkelberger和Kate Hargett两位编辑,并通过他们向Prentice Hall出版集团致谢。我要向所有的审阅人致以谢意:Western Illinois大学的Mike Litman、Texas Tech大学的Noe Lopez Benitez、Arkansas Tech大学的Larry Morell、加州州立大学(Channel Islands)的Peter Smith、路易斯安娜州立大学(Shreveport)的John Sigle、以及密苏里大学(Columbia)的Harry Tyrer。同样,没有软件也不会有这本书。除了显然要感谢Sun公司发明Java的那些人以外,我特别地想要感谢jasmin的作者Jon Meyer,感谢他编写的软件以及他提供的有益支持。
  最后,我还要感谢我的妻子Jodi,她为大多数示意图绘制了最初草图。更重要的是,在本书的长期写作过程中,她一直在努力容忍我,并且仍然愿意与我生活在一起。

上架指导

计算机组成

封底文字

封底文字同影印版(影印版书号978-7-111-23917-8)

译者简介

吴为民 艾丽华 张大伟 译:暂无简介

译者序

当前,对于计算机组成与系统结构类的本科课程,在教学上的主要困难之一是难以选择一个合适的教学用体系结构。能清楚体现计算机组成和体系结构原理的芯片早已过时;而对于先进的奔腾机,这些基本原理则淹没于复杂的实现方法和策略中。
本书作者意识到了目前计算机组织和系统结构在教学选材上的困难,并采取JVM作为教学体系结构。这是从新的角度进行的有益尝试。JVM非常简单、易于理解,因而可能会成为系统结构教学的最佳用机之一。但JVM毕竟与真实计算机存在物理差别,为表明这种差别,作者也有针对性地介绍了其他几种典型的体系结构。
  本书的特点是内容广泛且有一定深度,从最基本的电子器件、二进制表示和计算,到jasmin汇编语言程序设计,再到现实世界中存在的计算机系统结构,最后到JVM高级编程课题,几乎涵盖了所有相关的主题。并且,在每个章节都提供了习题,以巩固知识。
  本书适合于作为大学二、三年级相关课程的教材或教学参考书。学生们通过一学期的学习,就能基本掌握计算机组成的基本原理及汇编语言编程。当然,如果学生们已经掌握了计算机的最基础知识,再学习本书则效果更好。
  本书由三位老师合作翻译。吴为民翻译了第1、2、3、4、10章以及附录A、C、D、E,艾丽华翻译了第5、6、7、8、9章,张大伟翻译了附录B。由于本书的翻译工作是在繁忙的教学、科研工作之余完成的,难免有疏漏之处,欢迎各位读者给予批评指正。
译者
2009年10月

图书目录

出版者的话
译者序
前言
第一部分  假想计算机
第1章 计算和表示 1
1.1 计算 1
1.1.1 电子设备 1
1.1.2 算法机 1
1.1.3 功能部件 2
1.2 数字和数值表示 6
1.2.1 数字表示和位 6
1.2.2 布尔逻辑 8
1.2.3 字节和字 9
1.2.4 表示 10
1.3 虚拟机 19
1.3.1 什么是虚拟机 19
1.3.2 可移植性问题 21
1.3.3 超越限制 21
1.3.4 易于升级 21
1.3.5 安全问题 22
1.3.6 劣势 22
1.4 JVM编程 23
1.4.1 Java:JVM不是什么 23
1.4.2 样例程序的转换 24
1.4.3 高级语言和低级语言 25
1.4.4 JVM所看到的样例程序 26
1.5 本章回顾 28
1.6 习题 28
1.7 编程习题 29
第2章 算术表达式 30
2.1 符号表示 30
2.1.1 指令集 30
2.1.2 操作、操作数及顺序 30
2.1.3 基于堆栈的计算器 31
2.2 存储程序计算机 32
2.2.1 取指-执行周期 32
2.2.2 CISC计算机与RISC计算机 34
2.3 JVM上的算术运算 35
2.3.1 一般评述 35
2.3.2 一个算术指令集示例 36
2.3.3 堆栈操作 39
2.3.4 汇编语言和机器码 40
2.3.5 非法操作 41
2.4 一个样例程序 41
2.4.1 一个有注解的例子 41
2.4.2 最终的JVM代码 43
2.5 JVM计算指令总结 44
2.6 本章回顾 44
2.7 习题 45
2.8 编程习题 45
第3章 用jasmin进行汇编语言编程 46
3.1 Java编程系统 46
3.2 使用汇编器 47
3.2.1 汇编器 47
3.2.2 运行一个程序 47
3.2.3 显示到控制台还是显示到窗口 48
3.2.4 使用System.out和System.in 49
3.3 汇编语言语句类型 51
3.3.1 指令和注释 51
3.3.2 汇编指令 52
3.3.3 资源汇编指令 52
3.4 例子:随机数生成 53
3.4.1 生成伪随机数 53
3.4.2 在JVM上实现 53
3.4.3 另一种实现 55
3.4.4 与Java类交互 56
3.5 本章回顾 57
3.6 习题 57
3.7 编程习题 58
第4章 控制结构 60
4.1 他们教给你的都是错误的 60
4.1.1 再谈取指-执行 60
4.1.2 转移指令和标号 60
4.1.3 结构化编程:转移一下注意力 61
4.1.4 高级控制结构及其等效结构 62
4.2 goto的类型 63
4.2.1 无条件转移 63
4.2.2 条件转移 63
4.2.3 比较操作 64
4.2.4 组合操作 65
4.3 建立控制结构 65
4.3.1 if语句 65
4.3.2 循环 66
4.3.3 转移指令的细节 67
4.4 示例:Syracuse数 68
4.4.1 问题定义 68
4.4.2 设计 69
4.4.3 解答与实现 70
4.5 表跳转 71
4.6 子例程 74
4.6.1 基本指令 74
4.6.2 子例程示例 75
4.7 例子:p的蒙特卡洛估计 78
4.7.1 问题定义 78
4.7.2 设计 79
4.7.3 解答与实现 80
4.8 本章回顾 82
4.9 习题 82
4.10 编程习题 83
第二部分 真实计算机
第5章 通用体系结构问题:实际计算机 85
5.1 虚拟机的限制 85
5.2 CPU优化 85
5.2.1 建造一个更好的捕鼠夹 85
5.2.2 多处理 86
5.2.3 指令集优化 86
5.2.4 流水化 86
5.2.5 超标量体系结构 88
5.3 存储器优化 89
5.3.1 cache存储器 89
5.3.2 存储管理 90
5.3.3 直接地址转换 90
5.3.4 页式地址转换 90
5.4 外设优化 92
5.4.1 忙-等待问题 92
5.4.2 中断处理 92
5.4.3 与外设的通信:利用总线 93
5.5 本章回顾 93
5.6 习题 93
第6章 Intel 8088 93
6.1 背景 95
6.2 组织和体系结构 95
6.2.1 中央处理单元 95
6.2.2 取指-执行周期 97
6.2.3 存储器 97
6.2.4 设备和外设 98
6.3 汇编语言 98
6.3.1 操作和寻址 98
6.3.2 算术指令集 100
6.3.3 浮点运算 101
6.3.4 判定和控制结构 102
6.3.5 高级操作 104
6.4 存储器组织和使用 105
6.4.1 地址和变量 105
6.4.2 字节交换 106
6.4.3 数组和串 106
6.4.4 串原语 108
6.4.5 局部变量和信息隐藏 110
6.4.6 系统栈 110
6.4.7 栈帧 111
6.5 再论锥形山 113
6.6 接口问题 114
6.7 本章回顾 115
6.8 习题 116
第7章 Power体系结构 117
7.1 背景 117
7.2 组织和体系结构 118
7.2.1 中央处理单元 118
7.2.2 存储器 119
7.2.3 设备和外设 119
7.3 汇编语言 120
7.3.1 算术运算 120
7.3.2 浮点操作 121
7.3.3 比较和条件标志 121
7.3.4 数据移动 122
7.3.5 转移 123
7.4 再论锥形山 123
7.5 存储器组织和使用 124
7.6 性能问题 125
7.7 本章回顾 126
7.8 习题 127
第8章 Intel Pentium 128
8.1 背景 128
8.2 组织和体系结构 128
8.2.1 中央处理单元 128
8.2.2 存储器 129
8.2.3 设备和外设 129
8.3 汇编语言 130
8.3.1 操作和寻址 130
8.3.2 高级操作 130
8.3.3 指令格式 131
8.4 存储器组织和使用 131
8.5 性能问题 132
8.5.1 流水化 132
8.5.2 并行操作 133
8.5.3 超标量体系结构 133
8.6 再论RISC与CISC 134
8.7 本章回顾 134
8.8 习题 135
第9章 微控制器:Atmel AVR 136
9.1 背景 136
9.2 组织和体系结构 136
9.2.1 中央处理单元 136
9.2.2 存储器 137
9.2.3 设备和外设 140
9.3 汇编语言 141
9.4 存储器组织和使用 142
9.5 接口问题 143
9.5.1 与外部设备的接口 143
9.5.2 与定时器的接口 144
9.6 设计一个AVR程序 145
9.7 本章回顾 146
9.8 习题 146
第10章 JVM高级编程问题 147
10.1 复杂和派生类型 147
10.1.1 对派生类型的需求 147
10.1.2 派生类型的一个例子:数组 147
10.1.3 记录:没有方法的类 153
10.2 类和继承 154
10.2.1 定义类 154
10.2.2 一个简单的类:String 155
10.2.3 实现String 156
10.3 类的操作和方法 157
10.3.1 类操作介绍 157
10.3.2 域操作 157
10.3.3 方法 159
10.3.4 类的分类 162
10.4 对象 163
10.4.1 作为类的实例创建对象 163
10.4.2 销毁对象 164
10.4.3 类型对象 166
10.5 类文件和.class文件结构 166
10.5.1 类文件 166
10.5.2 启动类 167
10.6 类层次汇编指令 168
10.7 注释示例:再讨论Hello,World 169
10.8 输入和输出:一个解释 170
10.8.1 问题描述 170
10.8.2 两个系统比较 170
10.8.3 示例:在JVM中从键盘读入 173
10.8.4 解答 173
10.9 示例:通过递归求阶乘 174
10.9.1 问题描述 174
10.9.2 设计 174
10.9.3 解答 175
10.10 本章回顾 176
10.11 习题 176
10.12 编程习题 177
附录A 数字逻辑 178
附录B JVM指令集 185
附录C 按序号排列的操作代码 220
附录D 类文件格式 224
附录E ASCII表 228
词汇表 229

教学资源推荐
作者: 【美】肯尼斯·E.肯德尔(Kenneth E. Kendall) 朱莉·E.肯德尔(Julie E. Kendall)著
作者: (加)Simon Haykin 著
作者: 尤克 常敏慧
作者: [美]约翰·E.霍普克罗夫特(John E. Hopcroft)拉杰夫·莫特瓦尼(Rajeev Motwani)杰弗里·D.乌尔曼(Jeffrey D. Ullman) 著
参考读物推荐
作者: 保蕾蕾 唐新怀 周憬宇 邹恒明 编著