这部分主要学习了i386系统编程时的知识。在对i386进行系统编程的时候,其特点主要表现在Register和Instruction上。
System Register
对于系统编程,i386提供下面几类System Register:
- EFLAGS Register
- Memory-Management Registers
- Control Registers
- Debug Registers
- Test Registers
Memory-Management Registers
段描述符表- GDTR: Global Descriptor Table Register
- LDTR: Local Descriptor Table Register
中断描述符表
- IDTR: Interrupt Descriptor Table Register
任务表
- TR: Task Register
Control Register
cr{0, 2, 3}是80386的Control Register,他们是可以通过MOV指令进行修改的。
cr0:设置System全局的属性,有下面几个现在比较重要
- PE: set processor to execute in protected mode
- PG: 使用Page Table去转换linear address到physical address
- TS: processor set TS 在每次task切换的时候(Chapter 11)
cr2:PG is set, cr2 控制Page Faults,Page fault linear address
cr3:PG is set, cr3 指向Page Table的位置
System Instructions
Verification of pointer parameters——获取一些权限,读写(Protection)
Address descriptor tables——访问段描述符寄存器的值(Memory management)
Multitasking——访问任务寄存器的值(Multitasking)
进程交互和多进程的设置的处理
Input and Output——读口写口的操作
Interrupt Control——中断的开关和IDT的访问
...