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个部件。分段部件和分页部件。分段机制把一个逻辑地址转换成线性地址,分页机制把线性地址转化成物理地址。