80386的各种寄存器一览

 

80386的各种寄存器一览

分类: linux内核基础   85人阅读  评论(0)  收藏  举报


注:本分类下文章大多整理自《深入分析linux内核源代码》一书,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。

此书已经开源,阅读地址 http://www.kerneltravel.net


1、通用寄存器(32位)

  EAX:一般用作累加器
  EBX:一般用作基址寄存器(Base)
  ECX:一般用来计数(Count)
  EDX:一般用来存放数据(Data)
  ESP:一般用作堆栈指针(Stack Pointer)
  EBP:一般用作基址指针(Base Pointer)
  ESI:一般用作源变址(Source Index)
  EDI:一般用作目标变址(Destinatin Index)

2、段寄存器(16位)

  CS:代码段寄存器
  DS:数据段寄存器
  SS:堆栈段寄存器
  ES、FS 及GS:附加数据段寄存器

这些段寄 存器中存放的不再是某个段的基地址,而是某个 段的选择符(Selector 。因为16 位的寄存 器无法存放32 位的段基地址,段基地址只好存放在 段的描述符(Descriptor) 中。


3、标志和控制寄存器(32位)

标志寄存器  EFLAGS
指令指针  EIP
机器状态字  CR0
Intel  预留  CR1
页故障地址  CR2
页目录地址  CR3

指令指针寄存器(EIP)中存放下一条将要执行指令的偏移量(offset ),这个偏移量 是相对于目前正在运行的代码段寄存器(CS)而言的。偏移量加上当前代码段的基地址,就 形成了下一条指令的地址。







4、系统地址寄存器

  全局描述符表寄存器GDTR(Global Descriptor Table Register ),是48 位寄存器, 用来保存全局描述符表(GDT)的32 位基地址和GDT 的大小(16位)。

  中断描述符表寄存器IDTR(Interrupt Descriptor Table Register),是48 位寄存 器,用来保存中断描述符表(IDT)的32 位基地址和IDT 的大小(16位)。

  局部描述符表寄存器LDTR(Local Descriptor Table Register ),是16 位寄存器, 保存局部描述符表LDT 段的选择符。

  任务状态寄存器TR(Task State Register)是16 位寄存器,用于保存任务状态段 TSS 段的16 位选择符。



5、调试寄存器和测试寄存器(32位)


80386 有两个32 位的测试寄存器TR6 和TR7。 TR6 是 测试命令寄存器,其内存放测试控制命令。TR7 是数据寄存器,其内保存转换旁路缓冲器测 试的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值