当前位置:首页 > 工业技术
奔腾TM系列用户手册  第3卷  Pentium 处理器结构与程序设计
奔腾TM系列用户手册  第3卷  Pentium 处理器结构与程序设计

奔腾TM系列用户手册 第3卷 Pentium 处理器结构与程序设计PDF电子书下载

工业技术

  • 电子书积分:20 积分如何计算积分?
  • 作 者:张纪罗,张知奋等译
  • 出 版 社:上海科学普及出版社;电子工业出版社
  • 出版年份:1996
  • ISBN:7542709631
  • 页数:741 页
图书介绍:暂缺《奔腾系列用户手册(第三卷 Pentium处理器结构与程序设计)》简介
《奔腾TM系列用户手册 第3卷 Pentium 处理器结构与程序设计》目录

1.1 怎样使用本手册 1

第一章 概述 1

1.1.1 第一部分——应用和数值程序设计 2

1.1.2 第二部分——系统程序设计 2

1.1.3 第三部分——兼容性 3

1.1.4 第四部分——优化 4

1.1.5 第五部分——指令集 4

1.1.6 附录 4

1.2 有关参考文献 4

1.3 标记法的约定 5

1.3.1 位和字节的次序 5

1.3.2 未定义伍和软件兼容性 6

1.3.3 指令操作数 6

1.3.6 异常 7

1.3.4 十六进制数 7

1.3.5 分段编址 7

第二章 Intel Pentium?处理器系列的简介 9

第一部分 应用和数值程序设计 11

第三章 基本的程序设计模型 11

3.1 存贮器的组织 11

3.1.1 不分段或“平坦”模型 12

3.1.2 分段模型 13

3.2 数据类型 14

3.2 寄存器 17

3.3.1 通用寄存器 17

3.3.2 段寄存器 18

3.3.3 堆栈的实现 20

3.3.4 标志寄存器 22

3.3.5 指令指针 23

3.4 指令格式 23

3.5 操作数的选择 25

3.5.1 立即操作数 25

3.5.2 寄存器操作数 27

3.5.3 存贮器操作数 27

3.6 中断和异常 30

第四章 应用程序设计 32

4.1 数据传送指令 32

4.1.1 通用数据传送指令 32

4.1.2 栈操作指令 33

4.1.3 类型转换指令 35

4.2 二进制算术指令 36

4.2.1 加法指令和减法指令 37

4.2.2 比较指令和改变符号指令 38

4.2.3 乘法指令 38

4.2.4 除法指令 39

4.3 十进制算术指令 40

4.3.1 紧缩BCD调整指令 40

4.3.2 非紧缩BCD调整指令 40

4.4 逻辑指令 41

4.4.1 布尔运算指令 41

4.4.2 位测试和修改指令 41

4.4.3 位扫描指令 42

4.4.4 移位和环移指令 42

4.4.5 按条件字节设置指令 50

4.5.1 无条件转移指令 51

4.4.6 测试指令 51

4.5 控制转移指令 51

4.5.2 条件转移指令 52

4.5.3 软件中断 54

4.6 串操作 55

4.6.1 重复前缀 56

4.6.2 变址和方向标志控制 56

4.6.3 串操作指令 57

4.7 块结构语言用的指令 57

4.8 标志控制指令 61

4.8.1 进位和方向标志控制指令 62

4.8.2 标志传送指令 63

4.10 段寄存器指令 65

4.9 数值指令 65

4.10.1 段寄存器传送指令 66

4.10.2 远控制转移指令 66

4.10.3 数据指针指令 66

4.11 杂项指令 67

4.11.1 地址计算指令 67

4.11.2 空操作指令 68

4.11.3 转换指令 68

4.11.4 字节交换指令 68

4.11.5 交换并相加指令 70

4.11.6 比较并交换指令 70

4.11.7 CPUID指令 70

5.3 CPU标识和FPU检测代码实例 72

5.2 FPU检测 72

5.1 CPU标识 72

第五章 特征确定 72

第六章 数值应用 84

6.1 数值应用概述 84

6.1.1 历史 84

6.1.2 性能 85

6.1.3 使用方便 85

6.1.4 应用 86

6.1.5 程序设计接口 88

6.2 浮点部件的体系结构 89

6.2.1 数值寄存器 89

6.2.2 计算基础知识 98

6.3.1 源操作数和目标操作数 104

6.3 浮点指令集 104

6.3.2 数值传送指令 105

6.3.3 非超越函数指令 105

6.3.4 比较指令 107

6.3.5 超越函数 108

6.3.6 常数指令 109

6.3.7 控制指令 110

6.4 数值应用 111

6.4.1 高级语言 111

第七章 专用计算环境 124

7.1 专用数值 125

7.1.1 非规格化实数 129

7.1.2 零 131

7.1.3 无穷数 134

7.1.4 NaN(非数) 136

7.1.6 数据类型的编码 138

7.1.5 不定数 138

7.1.7 数值异常 139

7.1.8 处理数值异常 139

7.1.9 无效操作 141

7.1.13 不精确(精度) 141

7.1.10 除零 142

7.1.11 非规格化操作数 143

7.1.12 数值上溢及下溢 144

7.1.14 异常处理优先级 147

7.1.15 标准下溢/上溢异常处理程序 147

第八章 数值应用程序设计举例 148

8.1 条件转移举例 148

8.2 异常处理举例 151

8.3 浮点数到ASCII的转换举例 154

8.3.1 功能划分 165

8.3.2 异常情况 166

8.3.3 特殊指令 166

8.3.4 操作说明 166

8.3.5 换算数值 167

8.3.6 输出格式 168

第二部分 系统程序设计 178

第九章 实地址方式系统体系结构 178

9.1 地址变换 178

9.2 寄存器和指令 179

9.3 中断和异常处理 179

9.4 实地址方式的异常 180

10.1 系统寄存器 182

第十章 保护方式系统体系结构概述 182

10.1.2 系统标志 183

10.1.2 存贮器管理寄存器 184

10.1.3 控制寄存器 185

10.1.4 调试寄存器 189

10.2 系统指令 189

第十一章 保护方式的存贮器管理 192

11.1 选择分段模型 193

11.1.1 平面模型 193

11.1.2 带保护的平面模型 194

11.1.3 多段模型 195

11.2 段转换 196

11.2.1 段寄存器 198

11.2.2 段选择符 199

11.1.3 段描述符 200

11.2.4 段描述符表 204

11.2.5 描述符表基地址寄存器 204

11.3 页转换 205

11.3.1 分页选择项 206

11.3.2 线性地址 206

11.3.3 页表 207

11.3.4 页表项 207

11.3.5 翻译后援缓冲器 209

11.4 段和页转换的组合 210

11.4.1 平面模型 210

11.4.2 跨越若干页的段 210

11.4.3 跨越若干段的页 211

11.4.4 不对齐的页和段的边界 211

11.4.6 每一段的页表 212

11.4.5 对齐的段和页的边界 212

第十二章 保护 213

12.1 段级保护 213

12.2 段描述符和保护 214

12.1.1 类型检查 215

12.2.2 段限检查 216

12.2.3 特权级 217

12.3 访问数据的限制 218

12.3.1 访问代码段中的数据 219

12.4 控制转移的限制 220

12.5 门描述符 221

12.5.1 堆栈切换 224

12.5.2 从过程返回 226

12.6.1 特权指令 227

12.6 为操作系统保留的指令 227

12.6.2 敏感指令 228

12.7 指针有效性指令 228

12.7.1 描述特有效性 229

12.7.2 指针完整性和RPL 230

12.8 页级保护 230

12.8.1 保存保护参数的页表项 231

12.8.2 两级页表的组合保护 232

12.8.3 对页保护的超越 232

12.9 页和段保护的组合 233

第十三章 保护方式的多任务处理 234

13.1 任务状态段 234

13.2 TSS描述符 235

13.3 任务寄存器 237

13.4 任务门描述符 238

13.5 任务切换 239

13.6 任务链 242

13.6.1 忙位防止发生循环 243

13.6.2 修改任务的链接 244

13.7 任务地址空间 244

13.7.1 任务的线性空间到物理空间的的映像 244

13.7.2 任务的逻辑地址空间 245

第十四章 保护方式的异常和中断 247

14.1 异常和中断向量 247

14.2 指令重启动 248

14.3 使能和禁止中断 249

14.3.1 NMI屏蔽后继的NMI 249

14.3.2 IF屏蔽INTR 249

14.3.3 RF屏蔽调试故障 250

14.3.4 对SS寄存器的MOV或POP操作屏蔽某些异常和中断 251

14.4 同时发生多个异常和中断时的优先权 251

14.5 中断描述符表 252

14.6 IDT描述符 253

14.7 中断任务和中断过程 253

14.7.1 中断过程 253

14.7.2 中断任务 257

14.8 出错代码 258

14.9 异常条件 258

14.9.1 中断0——除法错误 259

14.9.2 中断1——调试异常 259

14.9.3 中断3——断点 259

14.9.6 中断6——无效操作码 260

14.9.7 中断7——设备不可用 260

14.9.5 中断5——界限检查 260

14.9.8 中断8——双重故障 261

14.9.9 中断9——(Intel保留,不要用) 262

14.9.10 中断10——无效TSS 262

14.9.11 中断11——段不存在 263

14.9.12 中断12——堆栈异常 264

14.9.13 中断13——一般保护 264

14.9.14 中断14——页故障 265

14.9.15 中断16——浮点错 267

14.9.16 中断17——对齐检查 269

14.9.17 中断18——机器检查 270

14.10 异常摘要 270

14.11 出错代码汇总 271

第十五章 输入/输出 272

15.1 I/O寻址 272

15.1.1 I/0地址空间 272

15.1.2 存贮器映像的I/O 273

15.2 I/0指令 274

15.2.1 寄存器I/O指令 274

15.2.2 块I/O指令 275

15.3 保护方式I/O 275

第三部分 兼容性 276

15.3.2 I/O允许位映象 276

第二十一章 混合16位和32位代码 276

15.3.1 I/O特权级 276

15.4 I/O的次序 278

15.3.3 分页和高速缓存 278

第十六章 初始化和方式转换 280

16.1 处理器初始化 280

16.1.1 复位后的处理器状态 280

16.2 FPU初始化 283

16.1.2 执行的首条指令 283

16.2.1 配置数值计算环境 284

16.2.2 FPU软件仿真 286

16.3 高速缓存使能 286

16.4 实地址方式下的软件初始化 287

16.4.1 系统表 287

16.4.2 NMI中断 288

16.5 保护方式下的系统初始化 288

16.5.1 系统表 288

16.5.2 中断 288

16.5.3 分页 288

16.5.4 任务 289

16.6 方式转换 290

16.5.5 TLB、BTB和高速缓存测试 290

16.6.2 转回实地址方式 290

16.6.1 转换到保护方式 290

16.7 初始化和方式转换实例 291

16.7.1 本实例的目标 291

16.7.2 复位后的存贮器布局 291

16.7.3 算法 292

14.9.4 中断4——溢出 293

16.7.4 工具的使用 294

16.7.5 STARTUPASM清单 295

16.7.6 MAMASM源代码 302

16.7.7 支持文件 305

第十七章 调试 307

17.1 调试支持 307

17.2 调试寄存器 308

17.2.1 调试地址寄存器(DR0—DR3) 309

17.2.2 调试控制寄存器(DR7) 309

17.2.4 调试寄存器DR4和DR5 310

17.2.3 调试状态寄存器(DR6) 310

17.2.5 断点字段识别 310

17.3 调试异常 311

17.3.1 中断1——调试异常 312

17.3.2 中断3——断点指令 314

第十八章 高速缓存、流水线和缓冲 315

18.1 内部指令和数据高速缓存 315

18.1.1 数据高速缓存 316

18.1.2 数据高速缓存更新策略 316

18.1.3 指令高速缓存 317

18.2 内部高速缓存的操作 317

18.2.1 高速缓存控制位 317

18.2.2 高速缓存管理指令 318

18.2.3 自修改的代码 319

18.3 页面级高速缓存管理 319

18.3.2 PWT位 320

18.4 地址转换高速缓存 320

18.5 高速缓存替换算法 320

18.3.1 PCD位 320

18.6 执行流水线和配对 321

18.7 写缓冲器 321

18.8 串行化指令 321

第十九章 多处理 323

19.1 锁定的总线周期 323

19.1.1 LOCK前缀和LOCKˉ#信号 324

19.1.2 自动锁定 324

19.2 存贮器访问排序 325

19.3 Pentium处理器(73590、815100)的集成的AHC 325

19.3.1 中断控制机制 327

19.3.2 APIC总线和APIC间通信协议 342

19.3.3 APIC中的出错处理 347

19.3.4 定时器 350

19.3.5 APIC有效/无效编程组合 352

19.3.6 软件可见的APIC和82489DX间的差异 353

19.3.7 双处理自举交换信号协议序列及实例 354

第二十章 电源管理 358

20.1 Pentium处理器(51060、56766) 358

20.1.1 系统管理方式体系结构简介 358

20.1.2 术语 358

20.1.3 Pentium处理器系统中断的处理 359

20.1.4 系统管理方式编程模型 363

20.1.5 SMM特性 366

20.1.6 Pentium处理器的SMM软件 366

20.1.1 系统管理方式体系结构 370

20.2.2 Pentium处理器(73590、815100)的电源管理与Pentium处理器(51060、56766)的差异 370

20.2 Pentium处理器(73590、815100)的电源管理 370

20.2.3 通过ADIC的系统管理中断 371

20.2.4 I/0指令重启动 371

20.2.5 系统管理方式版本标识符 374

20.2.6 SMM一双处理的考虑 375

21.1 使用16位和32位环境 377

21.2 混合16位和32位操作 377

21.4 在混合尺寸的代码段之间转移控制 378

21.3 在混合尺寸的代码段之间共享数据 378

21.4.1 代码段指针的尺寸 379

21.4.2 用于控制转移的栈管理 381

21.4 3 中断控制的转移 381

21.4.4 参数转换 381

21.4.5 接口过程 381

第二十二章 虚拟8086方式 383

22.1 执行8086 CPU代码 383

22.1.1 寄存器和指令 383

22.1.2 地址转换 384

22.2 虚拟8086任务的结构 385

22.3 进入和离开虚拟8086方式 386

22.2.2 虚拟8086任务内的保护 386

22.2.2 虚拟8086任务的分页 386

22.3.1 通过任务切换转移 388

22.3.2 通过自陷门和中断门转贮 388

22.4 敏感指令 390

22.5 虚拟中断支持 390

22.6 仿真8086操作系统调用 390

22.7 虚拟I/O 391

22.7.1 I/0映射的I/0 391

22.7.2 存贮器映射的I/0 392

22.7.3 特殊I/O缓冲器 392

22.8 和8086 CPU的区别 392

22.9 和Intel286 CPU的区别 395

22.9.1 特权级 395

22.10 和Intel386及Intel486 CPU的区别 396

22.9.2 总线锁定 396

第二十三章 兼容性 397

23.1 保留位 397

23.2 整数部件 397

23.2.1 新功能和方式 398

23.2.2 串行化指令 398

23.2.3 检测新功能的存在 398

23.2.4 未定义操作码 399

23.2.5 时钟周期数 399

23.2.6 初始化和复位 399

23.2.7 新指令 403

23.2.8 过时指令 404

23.2.9 标志 404

23.2.10 控制寄存器 405

23.2.11 调试寄存器 408

23.2.12 测试寄存器 409

23.2.13 型号特定寄存器 409

23.2.14 异常 409

23.2.15 描述符的类型和内容 411

23.2.16 段描述符装入方面的改变 412

23.2.17 任务切换和任务状态段 412

23.2.18 分页 414

23.2.19 栈操作 415

23.2.20 混合16位和32位段 417

23.2.21 段和地址环绕 417

23.2.22 写缓冲器和存贮器排序 418

23.2.23 总线锁定 419

23.2.24 总线保持 419

23.2.25 远行Intel286 CPU任务的两种途径 419

23.3.1 控制寄存器位 420

23.3 浮点部件 420

23.3.2 数据类型 422

23.3.3 异常 423

23.3.4 指令 427

23.3.5 超越函数指令 429

23.3.6 过时的指令 429

第四部分 优化 431

第二十四章 优化 431

24.1 寻址方式和寄存器用法 431

24.2 对齐 433

24.2.1 代码对齐 433

24.2.2 数据对齐 433

24.3 前缀操作码 433

24.5 整数指令选择 434

24.4 操作数和寄存器用法 434

第五部分 指令集 437

第二十五章 指令集 437

25.1 操作数尺寸和地址尺寸属性 437

25.1.1 缺省段属性 437

25.1.2 操作数尺寸和地址尺寸指令前缀 438

25.1.3 堆栈的地址尺寸属性 438

25.2 指令格式 438

25.2.1 modR/M和SIB字节 440

25.2.2 如何阅读指令集 444

附录A 操作码映象 674

A.1 缩写符号的说明 674

A.2 表示寻址方法的代码 674

A.4 寄存器编码 675

A.3 操作数类型的代码 675

A.5 操作码查找的例子 676

A 5.1 一字节的操作码整数指令 676

A 5.2 两字节的操作码整数指令 676

A 5.3 转义操作码 677

附录B 标志速查表 688

B.1 代码的符号说明 688

附录c 状态标志摘要 692

C.1 状态标志功能 692

C.2 代码的符号说明 692

附录D 条件代码 694

D.1 条件的定义 694

附录E 数值异常摘要 696

F.1 整数指令格式和时序 698

附录F 指令格式和时序 698

F.2 I/0指令格式和时序 718

F.3 浮点指令格式和时序 719

F.3.1 格式 719

F.3.2 时钟数 720

F.3.3 注释 720

F.3.4 配对 720

附录G 关于超越函数的报告 725

G.1 概述 725

G.2 准确度、单调性和速度的摘要 726

G.2.1 准确度 726

G.2.2 单调性 726

G.2.3 速度 727

G.3 验证摘要 727

G.4 散布图 728

附录H 高级特性 741

相关图书
作者其它书籍
返回顶部