https://m.zjurl.cn/answer/6766457846939779336/?app=news_article&app_id=13&share_ansid=6766457846939779336
不同架構的CPU寄存器是不一樣的,即使是同一架構,不同型號的CPU也有差別。這里以80386的CPU為例,寄存器分為6類(lèi)。其中可供應用程序員使用的為通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)、段寄存器(CS、DS、SS、ES、FS、GS)和標志和控制寄存器(EIP、EFLAGS)。各寄存器介紹如下:
1、通用寄存器(32位)
EAX:一般用作累加器
EBX:一般用作基址寄存器(Base)
ECX:一般用來(lái)計數(Count)
EDX:一般用來(lái)存放數據(Data)
ESP:一般用作堆棧指針(Stack Pointer)
EBP:一般用作基址指針(Base Pointer)
ESI:一般用作源變址(Source Index)
EDI:一般用作目標變址(Destinatin Index)
可以指定任何通用寄存器的內容作為操作數的地址,以及在形成地址的過(guò)程中作如加法或減法這樣簡(jiǎn)單的算術(shù)運算。但像串的運算和雙精度的乘法和除法操作這類(lèi)較復雜的操作,必須要從固定的寄存器中取一個(gè)或多個(gè)操作數。
2、段寄存器(16位)
CS:代碼段寄存器
DS:數據段寄存器
SS:堆棧段寄存器
ES、FS 及GS:附加數據段寄存器
這些段寄存器中存放的不再是某個(gè)段的基地址,而是某個(gè)段的選擇符(Selector)。因為16 位的寄存器無(wú)法存放32 位的段基地址,段基地址只好存放在段的描述符(Descriptor)中。
3、標志和控制寄存器(32位)
標志寄存器 EFLAGS
指令指針 EIP
機器狀態(tài)字 CR0
Intel 預留 CR1
頁(yè)故障地址 CR2
頁(yè)目錄地址 CR3
指令指針寄存器(EIP)中存放下一條將要執行指令的偏移量(offset ),這個(gè)偏移量是相對于目前正在運行的代碼段寄存器(CS)而言的。偏移量加上當前代碼段的基地址,就形成了下一條指令的地址。
4、系統地址寄存器
全局描述符表寄存器GDTR(Global Descriptor Table Register ),是48 位寄存器,用來(lái)保存全局描述符表(GDT)的32 位基地址和GDT 的大?。?6位)。
中斷描述符表寄存器IDTR(Interrupt Descriptor Table Register),是48 位寄存器,用來(lái)保存中斷描述符表(IDT)的32 位基地址和IDT 的大?。?6位)。
局部描述符表寄存器LDTR(Local Descriptor Table Register ),是16 位寄存器,保存局部描述符表LDT 段的選擇符。
任務(wù)狀態(tài)寄存器TR(Task State Register)是16 位寄存器,用于保存任務(wù)狀態(tài)段TSS 段的16 位選擇符。
5、調試寄存器和測試寄存器(32位)

6、測試寄存器
TR6:測試命令寄存器,其內存放測試控制命令。
TR7:數據寄存器,其內保存轉換旁路緩沖器測試的數據。
聯(lián)系客服