打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CPU中有哪些主要寄存器,简述这些寄存器的功能?



https://m.zjurl.cn/answer/6766457846939779336/?app=news_article&app_id=13&share_ansid=6766457846939779336


不同架构的CPU寄存器是不一样的,即使是同一架构,不同型号的CPU也有差别。这里以80386的CPU为例,寄存器分为6类。其中可供应用程序员使用的为通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)、段寄存器(CS、DS、SS、ES、FS、GS)和标志和控制寄存器(EIP、EFLAGS)。各寄存器介绍如下:

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位)

6、测试寄存器

TR6:测试命令寄存器,其内存放测试控制命令。

TR7:数据寄存器,其内保存转换旁路缓冲器测试的数据。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
总结一下linux中的分段机制
x86 CPU中逻辑地址到物理地址映射过程
计算机内存地址转换与分段
32位cpu寻址小结
《自己动手写操作系统》第三章第一节是《认识保护模式》
操作系统:CPU工作模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服