LINUX运行的硬件基础
1、 i386的寄存器
通用寄存器
i386有8个通用寄存器
EAX:一般用作累加器
EBX:一般用作基址寄存器(Base)
ECX:一般用来记数
EDX:一般用来存放数据
ESP:一般用作堆栈指针(STACK POINTER)
EBP:一般用作基址指针(BASE POINTER)
ESI:一般用作源变址(SOURCE INDEX)
EDI:一般用作目标变址(DESTINATION INDEX)
段寄存器
4个16位段寄存器:CS、DS、SS、ES,分别用作存放可执行代码的代码段、数据段、堆栈段和其他段的基地址。
状态和控制寄存器
由标志寄存器(EFLAGS)、指令指针(EIP)和4个控制寄存器组成。
3.1EIP中存放下一条将要执行指令的偏移量(OFFSET),这个偏移量加上当前代码段的基地址,就形成下一条指令的地址。
3.2EFLAGS存放有关处理器的控制标志。
第0位:进位标志
第2位:奇偶标志
第4位:辅助进位
第6位:零标志
第7位:符号标志
第8位:自陷标志
第9位:允许中断标志
第10位:定向标志
第11位:溢出标志
第12、13位(2位):I/O特权
第14位:嵌套方式
第16位:恢复方式
第17位:虚拟方式
寄存器中的第1、3、5、15、8~31位没有定义
4个控制寄存器是CR0、CR1、CR2、CR3
CR0的第0位:保护允许位PE(PROTECT ENABLE),第1位:监控协处理位MP(MONITER COPRPCESSOR),第2位:模拟协处理位EM(EMULATE COPROCESSOR),第3位:任务转换位(TASK SWITCH),第4位:微处理器的扩展类型位ET(PROCESSOR EXTENSION TYPE),第31位:分页允许位PG(PAGING ENABLE)
CR1:未定义
CR2:页故障线性地址寄存器
CR3:页目录基址寄存器,保存目录表的物理地址
系统地址寄存器
有4个系统地址寄存器,它保存操作系统要保护的信息和地址转化表信息
4.1 全局描述符表寄存器GDTR(GLOBAL DESCRIPTOR TABLE REGISTER),是48位寄存器,用来保护全局描述表(GDT)的32位基地址和16位GDT的界限。
4.2 中断描述符表寄存器IDTR(INTERRUPT DESCRIPTOR TABLE REGISTER),是48位寄存器,用来中断描述符表(IDT)的32位基地址和16位IDT的界限。
4.3局部描述表寄存器LDTR(LOCAL DESCRIPTOR TABLE REGISTER),是16位寄存器,保存局部描述表LDT段的选择符。
4.4任务状态寄存器TR(TASK STATE REGISTER)是16位寄存器,保存任务状态段TSS段的16位选择符。
5、8个32位调试寄存器(DR0~DR7)和2个32位测试寄存器(TR6~TR7)
内存地址
在使用80386时,必须区分以下3种不同的地址:逻辑地址、线性地址和物理地址
MMU是一种硬件电路,包含2个部件。分段部件和分页部件。分段机制把一个逻辑地址转换成线性地址,分页机制把线性地址转化成物理地址。