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