更新时间:2019-03-01 11:50:41
封面
版权信息
序
前言
第一篇 x86基础
第1章 数与数据类型
1.1 数
1.2 数据类型
第2章 x86/x64编程基础
2.1 选择编译器
2.2 机器语言
2.3 Hello world
2.4 16位编程、32位编程,以及64位编程
2.5 编程基础
2.6 编辑与编译、运行
第3章 编写本书的实验例子
3.1 实验的运行环境
3.2 生成空白的映像文件
3.3 设置Bochs配置文件
3.4 源代码的基本结构
3.5 编译源代码
3.6 映像文件内的组织
3.7 使用merge工具
3.8 使用U盘启动真实机器
3.9 编写boot代码
3.10 总结
第4章 处理器的身份
4.1 测试是否支持CPUID指令
4.2 CPUID指令的术语及表达
4.3 基本信息与扩展信息
4.4 处理器的型号(family,model与stepping)
4.5 最大的物理地址和线性地址
4.6 处理器扩展状态信息
4.7 处理器的特性
4.8 处理器的Cache与TLB信息
4.9 MONITOR/MWAIT信息
4.10 处理器的long mode
第5章 了解Flags
5.1 Eflags中的状态标志位
5.2 IOPL标志位
5.3 TF标志与RF标志
5.4 NT标志
5.5 AC标志
5.6 VM标志
5.7 eflags寄存器的其他事项
第6章 处理器的控制寄存器
6.1 CR8
6.2 CR3
6.3 CR0
6.4 CR4
6.5 EFER扩展功能寄存器
第7章 MSR
7.1 MSR的使用
7.2 MTRR
7.3 MSR中对特殊指令的支持
7.4 提供processor feature管理
7.5 其他未列出来的MSR
7.6 关于MSR一些后续说明
第二篇 处理器的工作模式
第8章 实地址模式
8.1 真实的地址
8.2 real mode的编址
8.3 real mode的状态
8.4 段基址的计算
8.5 第1条执行的指令
8.6 实模式下的执行环境
8.7 实模式下的IVT
8.8 突破64K段限
8.9 A20地址线
第9章 SMM系统管理模式探索
9.1 进入SMM
9.2 SMM的运行环境
9.3 SMM里的中断
9.4 SMI的Back-to-Back响应
9.5 SMM里开启保护模式
9.6 SMM的版本
9.7 I/O指令的重启及Halt重启
9.8 SMM的退出
9.9 SMBASE的重定位
9.10 SMI处理程序的初始化
9.11 SMM的安全
9.12 测试SMI处理程序
第10章 x86/x64保护模式体系(上)
10.1 x86/x64的权限
10.2 保护模式下的环境
10.3 物理地址的产生
10.4 段式管理机制
10.5 段式管理的数据结构
10.6 开启保护模式
第11章 x86/x64保护模式体系(下)
11.1 物理页面
11.2 paging机制下使用的资源
11.3 32位paging模式(non-PAE模式)
11.4 PAE paging模式
11.5 IA-32e paging模式
11.6 TLB与Cache
11.7 page的内存cache类型
11.8 页的保护措施
第12章 Long-mode
12.1 x64体系的设计原则