《汇编语言与计算机体系结构 使用C++和Java》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:Anthony J. Dos Reis著;吕宏辉,马海军等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:730212003X
  • 页数:633 页
图书介绍:本书系统全面地介绍了汇编语言和计算机体系结构,以及C++和Java的实现原理,适合作为相关专业的大学教材。

目录 1

第1章 数制 1

1.1 简介 1

1.2 按位记数制 1

1.3 各数制的算术规则 4

1.4 数制转换 6

1.5 Horner法 9

1.6 有符号二进制数 10

1.6.1 符号—绝对值表示法 10

1.6.2 2的补码表示法 11

1.6.3 1的补码表示法 13

1.6.4 加n表示法 14

1.7 用2的补码加法计算减法 14

1.8 2的补码和无符号数的范围 15

1.9 扩展2的补码和无符号数 16

1.10 溢出 17

1.10.1 有符号数溢出 17

1.10.2 无符号数溢出 18

1.11 分析2的补码数 20

1.12 加法器电路 21

1.13 门 23

1.14 用加法器执行减法 24

1.15 比较有符号数 26

1.16 比较无符号数 27

1.17 正数、负数和无符号数的一致对待 27

1.18 浮点数表示法 28

1.18.1 科学记数法 28

1.18.2 32位IEEE 754浮点数格式 29

1.18.3 下溢、溢出和特殊值 30

1.18.4 某些Java程序中的计算误差 30

1.19 小结 35

1.18.5 长格式 35

1.20 问题 36

第2章 机器语言 40

2.1 简介 40

2.2 计算机的组件 40

2.3 机器语言编程 44

2.4 在sim上运行机器语言程序 48

2.5 问题 52

第3章 H1汇编语言:第1部分 54

3.1 简介 54

3.2 汇编语言基础 55

3.3 注释汇编语言程序 58

3.4 使用标号 58

3.5 使用汇编器 61

3.6 低级语言与高级语言 65

3.7 汇编器工作原理 66

3.8 使用dup修饰符 67

3.9 操作数字段中的算术表达式 68

3.10 指定当前位置 70

3.11 字符串 71

3.12 org伪指令 74

3.13 end伪指令 75

3.14 指令的顺序执行 76

3.15 问题 78

第4章 H1汇编语言:第2部分 81

4.1 简介 81

4.2 描述指令的简写形式 81

4.3 直接指令 82

4.4 堆栈指令 83

4.5 立即指令 85

4.6 I/O指令 90

4.7 转移指令 96

4.8 间接指令 98

4.9 相对指令 102

4.10 变址 103

4.11 连接指令 105

4.12 终止指令 109

4.13 高级语言中指令的自动生成 109

4.14 调试 110

4.15 使用存储映像式I/O 115

4.16 equ伪指令 117

4.17 Java程序的潜在问题:大小端 118

4.18 问题 121

第5章 电子学和数字逻辑电路基础 125

5.1 简介 125

5.2 电子学基础 125

5.2.1 导体和绝缘体 125

5.2.2 一个简单电路 126

5.2.3 有效电压 127

5.2.4 电源 127

5.2.5 如何避免触电 128

5.2.6 晶体管 129

5.2.7 电容、电感和阻抗 131

5.3.1 门 133

5.3 组合逻辑电路 133

5.3.2 布尔函数 134

5.3.3 最小电路 135

5.3.4 使用布尔代数使电路最小化 136

5.3.5 摩根定律的图示法 137

5.3.6 使用卡诺图使电路最小化 138

5.3.7 多路复用器 141

5.3.8 解码器和编码器 142

5.3.9 半加器和全加器 143

5.3.10 一位移位器 144

5.3.11 乘法器阵列 145

5.3.12 算术逻辑单元 148

5.3.13 三态缓冲器 149

5.3.14 ROM 151

5.4 时序逻辑电路 153

5.4.1 SR触发器 153

5.4.2 时钟控制D触发器 155

5.4.3 时钟控制JK触发器 157

5.4.4 边沿检测 157

5.4.6 RAM 159

5.4.5 T触发器 159

5.4.7 二进制计数器 160

5.4.8 寄存器 161

5.4.9 时钟和序列发生器 163

5.5 集成电路 164

5.6 问题 165

第6章 H1和V1的微级 168

6.1 简介 168

6.2 H1的微级 168

6.2.1 H1的组织概述 168

6.2.2 微指令 170

6.2.3 存储器数据总线 171

6.2.4 存储器地址总线 172

6.2.5 寄存器库 172

6.2.6 指定微操作 175

6.2.7 驱动寄存器库的控制输入端 175

6.2.8 整合H1各部分 176

6.2.9 分支多路复用器 178

6.2.10 定时问题 180

6.2.11 微指令格式 181

6.2.12 序列发生器驱动的控制输入端 181

6.2.13 基本指令集的微代码 182

6.2.14 硬件/微代码权衡 187

6.3.1 如何使用!伪指令 189

6.3.2 创建配置文件 189

6.3 在sim上使用新的微代码 189

6.3.3 创建二进制微代码 191

6.3.4 用新指令集汇编 192

6.3.5 在微级上跟踪 193

6.3.6 加密微代码 198

6.3.7 编写并优化复杂的微代码 198

6.4 解释机器语言指令 200

6.5 硬接线控制 201

6.6.1 使用V1 202

6.6 垂直微编程 202

6.6.2 构成更短的微指令 203

6.6.3 汇编垂直微代码 205

6.7 问题 210

第7章 评估H1的指令集体系结构:第1部分 214

7.1 简介 214

7.2 哑编译器 214

7.3 全局变量 218

7.4 局部变量 221

7.5 变化的相对地址 229

7.6 参数和传值调用 230

7.7 返回值 235

7.8 需要相对指令的原因 236

7.9 确定动态局部变量和参数的地址 238

7.10 间接引用指针 241

7.11 问题 243

第8章 评估H1的指令集体系结构:第2部分 249

8.1 简介 249

8.2 引用调用 249

8.2.1 引用调用的实现 249

8.2.2 C++引用参数的概念视图 256

8.2.3 不间接引用C++引用参数的情况 257

8.2.4 传值调用与引用调用的比较 258

8.2.5 常数和表达式作为变元 259

8.3 函数重载和重命名 263

8.4 结构 267

8.5 Java中的指针 271

8.6 函数指针 272

8.7 数组 274

8.7.1 定义并访问数组 274

8.7.2 数组作为变元 278

8.7.3 Java中的数组 282

8.8 控制语句 283

8.9 有符号数和无符号数比较 285

8.10 多字加法 285

8.11 位级操作 286

8.12 递归 287

8.13 问题 293

第9章 高级汇编语言编程 301

9.1 简介 301

9.2 指向指针的指针 301

9.3 引用调用及其他地方存在的潜在错误 307

9.4 关系和布尔表达式 310

9.5 字符串 313

9.6 值结果调用 315

9.7 变长变元列表 321

9.8 问题 326

第10章 连接和加载 329

10.1 简介 329

10.2 浮动字段 330

10.3 显示标题和机器代码正文的程序 334

10.4 小s项 336

10.5 禁止重定位 337

10.6 分别汇编 338

10.7 乘法子例程 348

10.8 使用库 350

10.9 分别汇编的优点 357

10.10 启动代码 357

10.11 C++模块的分别编译 367

10.12 问题 371

第11章 用C++或Java实现汇编器和连接器 376

11.1 简介 376

11.2 编写汇编器 376

11.2.1 一个简单汇编器的规范 377

11.2.2 操作码表 378

11.2.3 符号表 380

11.2.4 使用二进制文件 382

11.2.5 读取输入文本文件并创建标题 385

11.2.6 汇编机器字 387

11.2.7 将机器正文写入输出文件 388

11.2.8 分析输入 388

11.2.9 Java程序的大小端问题 388

11.2.10 添加对public、extern和end伪指令的支持 389

11.3 编写连接器 390

11.3.1 一个简单连接器的规范 390

11.3.2 构建P、E、R和S表 391

11.3.3 重定位地址并解析外部引用 393

11.3.4 添加库支持 395

11.4 问题 396

第12章 最优指令集 397

12.1 简介 397

12.2 新增和改进的指令 398

12.2.1 mult、m、div和rem 399

12.2.2 addc和subc 400

12.2.3 scmp 401

12.2.4 ucmp 402

12.2.5 shll和shrl 403

12.2.6 shra 404

12.2.7 addy 405

12.2.8 or、xor、and和flip 407

12.2.9 cali 409

12.2.10 sect和dect 409

12.2.11 sodd 410

12.2.12 esba、reba、bpbp、pobp和pbp 411

12.2.13 cora 416

12.2.14 bcpy 417

12.3 链表——使用最优指令集示例 418

12.4.2 存储器存储字符串的效率不高 424

12.4 关于最优指令集的进展报告 424

12.4.1 主存储器的数量不足 424

12.4.3 缺少加和减的立即指令 425

12.4.4 缺少变址寄存器 425

12.4.5 累加器型寄存器太少 425

12.4.6 swap指令破坏sp寄存器 425

12.4.14 难以执行多字加法 426

12.4.13 难以执行有符号数和无符号数比较 426

12.4.12 aloc和dloc指令的局限性 426

12.4.11 难以调用地址已知的函数 426

12.4.10 缺少块复制指令 426

12.4.9 难以获得堆栈上变量的地址 426

12.4.8 sp寄存器作为栈顶指针和基址寄存器的双重用途 426

12.4.7 缺少乘法和除法指令 426

12.4.15 不支持位级操作 427

12.5 问题 427

第13章使用、评估并实现最优指令集和堆栈指令集 430

13.1 简介 430

13.2 H1上的乘法 430

13.3 二维数组 437

13.4.1 C++的结构、类和对象 441

13.4 汇编语言中的面向对象编程 441

13.4.2 继承 452

13.4.3 通过指针调用成员函数 457

13.4.4 虚函数和多态性 464

13.5 名调用 472

13.6 面向堆栈的体系结构 479

13.6.1 体系结构与组织 479

13.6.2 以栈顶代替ac寄存器 480

13.6.3 4位操作码的可用性 484

13.6.4 特殊的堆栈操作 485

13.6.5 更简单的编译 486

13.6.6 返回值 487

13.6.7 使用堆栈指令集示例 489

13.6.8 比较最优指令集和堆栈指令集 491

13.6.9 关于JVM的几点观察 492

13.7 编写最优和堆栈指令集的微代码 493

13.8 微编程的挑战 496

13.9 问题 497

第14章 存储系统 503

14.1 简介 503

14.2 地址的传送 503

14.4 直接存储器存取 505

14.3 多程序系统 505

14.5 分时系统 506

14.6 重定位寄存器 506

14.7 虚拟存储器 508

14.7.1 简单分页系统 509

14.7.2 关联存储器 512

14.7.3 中断 514

14.7.4 请求式分页 516

14.7.5 请求式分页的页面替换策略 518

14.7.6 页面大小的考虑 519

14.7.7 超级用户/用户模式 520

14.7.8 存储器保护 521

14.7.9 分页的分段 521

14.8 高速缓冲存储器 522

14.8.1 缓存的替换策略 523

14.8.2 写策略 523

14.8.3 存储器到缓存的映射方案 524

14.9 可共享的程序 526

14.10 问题 527

15.1 简介 530

15.2 CISC与RISC 530

第15章 某些现代体系结构 530

15.3 SPARC:RISC体系结构 532

15.3.1 重叠的寄存器窗口 532

15.3.2 保存和恢复指令 536

15.3.3 加载和存储指令 538

15.3.4 转移、call和jmpl指令 543

15.3.5 指令流水线 546

15.3.6 连接指令 552

15.3.7 寻址方式 553

15.3.8 一个简单的汇编语言程序 555

15.3.9 合成指令 557

15.3.10 编译器生成的代码 559

15.3.11 存储映像式I/O 565

15.4 Pentium:CISC体系结构 566

15.4.1 寄存器结构 566

15.4.2 汇编语言 567

15.4.3 编译器生成的代码 568

15.4.4 I/O指令 570

15.5 问题 571

第16章 Java虚拟机(JVM) 576

16.1 简介 576

16.2 JVM的结构 577

16.3 某些使用操作数堆栈的普通操作 578

16.4 方法的调用和返回 579

16.5 执行引擎的实现 581

16.6 明智之举:JVM使用堆栈体系结构 582

16.7 一个简单的例子 582

16.8 常数池 584

16.9 类文件格式 585

16.10 字节码的空间效率 589

16.11 控制语句 590

16.12 反汇编类文件 591

16.13 对象和数组 593

16.14 JVM:抽象机器 595

16.15 问题 595

附录A 指令集汇总(s.txt、b.txt、o.txt、k.txt) 598

附录B 微指令级汇总(mic.txt) 606

附录C 标准指令集的微代码(s.has) 609

附录D SPARC汇总(sparc.txt) 614

附录E java虚拟机字节码汇总(jvm.txt) 620

附录F ASCII汇总(ascii.txt) 625

附录G 数制汇总(number.txt) 627

附录H 了解C++对Java程序员的帮助 628