目录 1
第1章 系统引导和程序代码 1
1.1 系统运行 1
1.1.1 系统引导过程 1
1.1.2 程序加载步骤 3
1.1.3 指令执行流程 4
1.2 机器指令 5
1.2.1 机器指令结构 5
1.2.2 操作数寻址模式 7
1.3 地址映射 10
1.3.1 实地址模式 10
1.3.2 保护模式 11
1.3.3 虚拟8086模式 13
1.3.4 系统管理模式 13
1.4 数据编码 14
1.4.1 整数编码 14
1.4.2 实数编码 15
1.4.3 数据存储格式 15
1.5.1 存储器物理地址 16
1.5 存储器组织 16
1.5.2 存储器寻址 17
1.5.3 存储器分页映射 17
1.5.4 存储器管理模式 18
1.6 汇编程序 18
1.6.1 处理器与指令集简介 18
1.6.2 汇编指令格式 19
1.6.3 变量声明 20
1.6.4 汇编程序结构 20
1.6.5 控制转移 21
1.6.6 堆栈 22
1.7 中断 23
第2章 系统配置接口 25
2.1 系统结构 25
2.1.1 系统总线分层结构 26
2.1.2 系统配置端口 28
2.2 系统总线与地址空间 29
2.2.1 总线组成与总线周期 29
2.2.2 系统存储器地址空间和I/O地址空间 30
2.3.1 I/O中断控制器与IRQ通道 31
2.3 系统资源 31
2.2.3 流水线与并行机制 31
2.3.2 DMA控制器与DMA通道 33
2.4 PCI局部总线 34
2.4.1 PCI总线协议 34
2.4.2 PCI配置空间 36
2.4.3 PCI设备枚举协议 37
2.4.4 AGP局部总线 37
2.5.1 GMCH芯片集内置设备配置接口 39
2.5 设备PCI空间配置接口 39
2.5.2 ICH4芯片集内置设备配置接口 42
2.6 系统管理接口 47
2.6.1 系统控制接口 47
2.6.2 电源管理接口 48
2.6.3 系统管理总线接口 49
第3章 控制器编程接口 51
3.1 实时时钟和计时器 51
3.1.1 实时时钟 51
3.1.2 记时器 53
3.2.1 键盘扫描码 54
3.2 键盘鼠标控制器 54
3.2.2 鼠标数据包格式 55
3.2.3 键盘鼠标控制器接口 56
3.3 图形控制器 59
3.3.1 图形基础知识 59
3.3.2 图形控制器寄存器 61
3.3.3 图形控制器指令集 65
3.3.4 VGA/EVGA控制器 71
3.4 IDE控制器 76
3.4.1 ATA/ATAPI-5标准介绍 76
3.4.2 ATA设备寄存器 78
3.4.3 IDE总线主控接口 79
3.4.4 ATA设备命令集 79
3.5 AC'97控制器 84
3.5.1 AC'97连接标准介绍 84
3.5.2 调制解调器寄存器 86
3.5.3 音频编解码器寄存器 86
3.5.4 AC'97主控接口 88
3.6 USB控制器 89
3.6.1 USB总线协议介绍 89
3.6.2 USB设备配置 91
3.6.3 USB主控寄存器 92
3.6.4 USB总线事务调度 93
3.7 LAN控制器 98
3.7.1 网络简介 98
3.7.2 LAN控制器寄存器 99
3.7.3 LAN主控事务接口 102
第4章 IA-32处理器 105
4.1 基本寄存器与基本指令集 105
4.1.1 通用寄存器 105
4.1.2 段寄存器 106
4.1.3 指令指针寄存器 107
4.1.4 状态标志寄存器 108
4.1.5 控制寄存器 109
4.1.6 存储器管理寄存器 110
4.1.7 基本指令集 112
4.2 FPU寄存器与指令集 112
4.2.1 浮点寄存器栈 112
4.2.2 FPU标志寄存器 113
4.2.3 FPU控制寄存器 113
4.2.4 FPU状态寄存器 114
4.2.5 操作数指针、指令指针和操作码寄存器 115
4.2.6 FPU状态保存与复原 115
4.2.7 FPU指令集 115
4.3 MMX寄存器与MMX指令集 116
4.3.1 MMX寄存器 116
4.3.2 MMX指令集 117
4.3.3 MMX与FPU指令混用问题 117
4.4 XMM寄存器与SSE指令 118
4.4.1 XMM寄存器和MXCSR寄存器 118
4.4.2 SSE例外 119
4.4.3 SSE/SSE2指令集 120
4.5 IA-32e处理器 123
4.5.1 存储器寻址 124
4.5.2 寄存器 124
4.5.3 指令集 125
第5章 中断机制 126
5.1 中断类型 126
5.1.1 中断源 126
5.1.2 例外源及分类 126
5.2 中断向量 127
5.1.3 可屏蔽与不可屏蔽中断 127
5.2.1 中断入口 128
5.2.2 中断优先权 129
5.2.3 例外错误码 130
5.3 中断处理机制 130
5.3.1 中断描述符表 130
5.3.2 中断处理硬件机制 131
5.3.3 中断返回硬件机制 131
5.4 局部APIC控制器 132
5.3.4 IA-32e处理器中断机制 132
5.4.1 局部APIC介绍 133
5.4.2 局部APIC寄存器 134
5.4.3 局部向量表 136
5.4.4 发布中断命令 138
5.4.5 中断消息接收与提交 140
5.4.6 APIC总线优先权仲裁与总线消息格式 142
5.5 I/OAPIC控制器 143
第6章 高级语言程序实现 146
6.1 变量 146
6.1.1 变量空间 147
6.1.2 数据结构 148
6.1.3 类 150
6.2 赋值和算术运算 151
6.2.1 数据传递 151
6.2.2 整数运算 153
6.2.3 浮点数运算 153
6.2.4 算术表达式编译 155
6.3 控制转移 156
6.3.1 转移指令 157
6.3.2 堆栈切换 159
6.4.2 比较指令与条件执行指令 160
6.4 条件转移 160
6.4.1 条件编码与状态标记 160
6.4.3 逻辑表达式编译 161
6.5 函数 164
6.5.1 函数出口 165
6.5.2 调用协议 165
6.5.3 块结构 166
6.5.4 快速系统调用 168
6.6 可移植执行文件与通用目标文件格式 169
7.1.1 段描述符表 172
7.1 分段机制 172
第7章 存储器管理 172
7.1.2 段描述符数据结构 173
7.1.3 段选择符 174
7.1.4 段保护机制 175
7.1.5 IA-32e模式段描述符 175
7.2 分页机制 176
7.2.1 分页模式 176
7.2.2 页入口与线性地址译码 177
7.3.1 段限长检查 181
7.3.2 段类型检查 181
7.3 保护机制 181
7.2.3 地址译码后援缓冲器 181
7.3.3 段特权级检查 182
7.3.4 页保护机制 183
7.3.5 指针确认 183
7.3.6 特权指令 184
7.4 调用16位代码 185
7.5 高速缓冲机制 186
7.5.1 高速缓存结构 186
7.5.2 地址空间存储器类型分区 187
7.5.3 高速缓存控制 189
7.5.4 设置存储器类型 191
7.6 存储器一致性机制 192
7.6.1 存储器顺序规则 192
7.6.2 存储器顺序加强和削弱机制 193
7.6.3 原子操作 193
7.6.4 自修改代码同步问题 194
7.7 存储器管理模式 195
7.7.1 平面模式与分段模式 195
7.6.5 页入口修改同步问题 195
7.7.2 分页模式 196
7.7.3 线性地址空间管理示例 196
7.7.4 存储器空间管理与内存块表 199
7.8 存储器管理示例 200
7.8.1 存储器管理数据结构 200
7.8.2 页帧分配与回收 201
7.8.3 页故障处理程序 206
7.8.4 系统内核空间和全局堆 207
8.1.1 任务管理空间 210
8.1 任务空间 210
第8章 任务管理 210
8.1.2 程序运行空间 211
8.2 任务状态段 212
8.2.1 任务状态段结构 212
8.2.2 任务寄存器 213
8.2.3 任务门描述符 213
8.2.4 IA-32e模式任务状态段 214
8.3 任务切换 214
8.3.1 任务切换步骤 215
8.3.3 运行首个任务 217
8.3.2 任务链接 217
8.3.4 创建新任务 218
8.4 SIM状态保存 219
8.5 任务管理示例 221
8.5.1 任务管理数据结构 222
8.5.2 线程调度 223
8.5.3 定时线程与计时器 225
8.5.4 空闲线程 226
8.5.5 消息接收与焦点窗口 227
8.6 应用程序结构和消息处理函数 229
8.6.1 消息读取、识别与发布 230
第9章 外存管理和设备管理 232
9.1 存储介质空间结构 232
9.1.1 磁盘引导区 234
9.1.2 分区入口 234
9.2 常用文件系统 235
9.2.1 FAT文件系统 235
9.2.2 NTFS文件系统 236
9.2.3 系统引导区 237
9.3.1 块表入口 239
9.3 外存管理示例 239
9.3.2 文件入口 240
9.3.3 系统根目录 242
9.3.4 文件系统接口 242
9.4 文件接口示例 243
9.4.1 外存设备与端口设备 245
9.4.2 文件接口实现 245
9.4.3 设备接口 246
9.4.4 页帧加载 248
9.5.1 枚举与配置 250
9.5 设备管理 250
9.5.2 ACPI规范简介 252
9.5.3 资源管理 254
9.5.4 设备事件 255
第10章 处理器辅助功能 256
10.1 模式专用寄存器 256
10.2 处理器初始化与多处理器协议 258
10.2.1 处理器复位状态 259
10.2.2 多处理器协议 259
10.3 处理器识别 261
10.4 系统管理模式 262
10.4.1 SMRAM空间结构 263
10.4.2 系统管理中断处理入口 264
10.5 系统初始化 265
10.5.1 初始化硬件平台 265
10.5.2 初始化程序运行环境 265
10.6 升级微码块 269
10.6.1 微码块结构 269
10.6.2 微码块加载器 269
10.6.3 微码块嵌入接口 270
10.7.1 紧急关机温度开关 271
10.7 处理器温度监控 271
10.7.3 软件调节 272
10.8 调试机制 272
10.8.1 调试寄存器与调试例外 272
10.7.2 自动温控器 272
10.8.2 最后转移记录 274
10.8.3 调试信息存储 275
10.9 性能监控 276
10.9.1 P6系列处理器性能监控 276
10.9.2 奔腾?4处理器性能监控 279
10.10.1 错误报告栏 283
10.10 机器检查 283
10.10.2 MC错误编码 284
10.10.3 MC例外处理 285
第11章 安腾处理器 286
11.1 安腾处理器简介 286
11.2 安腾寄存器 287
11.2.1 通用寄存器 287
11.2.2 浮点寄存器 288
11.2.5 处理器状态寄存器 289
11.2.3 判断寄存器、转移寄存器和指令指针 289
11.2.4 当前帧标记寄存器 289
11.2.6 应用寄存器 290
11.2.7 控制寄存器 291
11.2.8 处理器标识寄存器 292
11.2.9 调试断点寄存器 292
11.2.10 性能监控寄存器 292
11.3 代码结构和指令集 293
11.3.1 机器代码结构与汇编指令格式 293
11.3.2 访存指令与读存指令提前机制 295
11.3.3 运算指令 297
11.3.4 比较指令与判断寄存器 300
11.4 转移指令与软件协议 301
11.4.1 循环指令与软件流水线 302
11.4.2 调用/返回指令与寄存器帧 303
11.4.3 寄存器保存协议 304
11.4.4 寄存器栈备份空间 305
11.4.5 存储器栈与参数传递协议 306
11.5 存储器管理 307
11.5.1 地址译码和页保护机制 307
11.5.2 页入口插入 308
11.5.3 程序空间结构 310
11.6 中断处理机制 312
11.6.1 中断类型与中断向量表 313
11.6.2 中断块和中断命令端口 314
11.6.3 中断和中断返回 315
11.6.4 中断处理程序 316
11.7 I/O端口 317
11.8 处理器抽象层 318
11.8.1 固件地址空间 318
11.8.2 安腾系统引导 319
11.8.3 硬件事件处理 320
11.8.4 处理器抽象层程序 320
附录A IA-32指令一览表 322
A.1 汇编指令操作数符号 322
A.2 机器指令操作数符号 322
A.3 IA-32指令集一览表 323
附录B 操作码映射表 356
附录C 英文缩写词 362
参考文献 364