IA-32體系結構 暫存器
IA-32 體系,就是常說的x86,i386體系結構,是英特爾的32位架構。
從80386開始使用IA-32的32位體系,至今仍然在使用。
IA-32 架構提供了10個32位和6個16位的暫存器,分為三類:
1、通用暫存器
2、控制暫存器
3、段暫存器
通用暫存器分為資料暫存器、指標和索引暫存器。
通用暫存器包括:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
前四個是資料暫存器
接著的兩個是索引暫存器,和字串處理指令相關。
最後的兩個是指標暫存器,主要用來維護棧。
ESP指向棧頂,EBP指向棧底
控制暫存器:EIP、EFLAGS
EIP 跟蹤下一條要執行的指令,也稱為程式暫存器。
段暫存器6個:CS、ES、DS、FS、GS、SS。
CS:程式碼段起始地址暫存器
DS:資料段起始地址暫存器
SS(ES):擴充套件段暫存器
系統暫存器
(1)EFLAGS暫存器:控制任務和模式的切換、中斷處理、指令跟蹤和訪問許可權。
(2)控制暫存器:CR0、CR1、CR3、CR4、包含用來控制系統級別操作的資料和資訊
(3)除錯暫存器
(4)GDTR、LDTR、IDTR暫存器(記憶體管理相關暫存器)
(5)任務暫存器
(6)型號相關暫存器
記憶體管理暫存器
GDTR:儲存GDT的基址(GDT第一個位元組的地址)和表限(表的大小)
LDTR:包括 16位的段選擇碼、基址(LDT段的起始地址)、段限(段的大小)和LDT描述符
IDTR:IDT的基址和大小
IP暫存器:存放偏移量
CR0:最高位PG,表示分頁機制0未開啟 1開啟
CR2:發生缺頁異常的虛擬地址
CR3:頁目錄的起始地址
CR4:PAE位 實體地址擴充套件 0 未開啟 1開啟
參考書目《Linux_Memory_Address_Mapping》