不同架構的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:資料暫存器,其內儲存轉換旁路緩衝器測試的資料。
不同架構的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:資料暫存器,其內儲存轉換旁路緩衝器測試的資料。