x86的控制暫存器CR0,CR1,CR2,CR3

2022-09-18 18:06:08 字數 827 閱讀 9645

狀態和控制暫存器組除了eflags、eip ,還有四個32位的控制暫存器,它們是cr0,cr1,cr2和cr3。

這幾個暫存器中儲存全域性性和任務無關的機器狀態。

cr0中包含了6個預定義標誌,0位是保護允許位pe(protedted enable),用於啟動保護模式,如果pe位置1,則保護模式啟動,如果pe=0,則在實模式下執行。1位是監控協處理位mp(moniter coprocessor),它與第3位一起決定:當ts=1時操作碼wait是否產生乙個「協處理器不能使用」的出錯訊號。第3位是任務轉換位(task switch),當乙個任務轉換完成之後,自動將它置1。隨著ts=1,就不能使用協處理器。cr0的第2位是模擬協處理器位 em (emulate coprocessor),如果em=1,則不能使用協處理器,如果em=0,則允許使用協處理器。第4位是微處理器的擴充套件型別位et(processor extension type),其內儲存著處理器擴充套件型別的資訊,如果et=0,則標識系統使用的是287協處理器,如果 et=1,則表示系統使用的是387浮點協處理器。cr0的第31位是分頁允許位(paging enable),它表示晶元上的分頁部件是否允許工作。

cr1是未定義的控制暫存器,供將來的處理器使用。

cr2是頁故障線性位址暫存器,儲存最後一次出現頁故障的全32位線性位址。

cr3是頁目錄基址暫存器,儲存頁目錄表的實體地址,頁目錄表總是放在以4k位元組為單位的儲存器邊界上,因此,它的位址的低12位總為0,不起作用,即使寫上內容,也不會被理會。

這幾個暫存器是與分頁機制密切相關的,因此,在程序管理及虛擬記憶體管理中會涉及到這幾個暫存器,讀者要記住cr0、cr2及cr3這三個暫存器的內容

x86的暫存器

最近一段時間,在看組合語言方面的東西。看的大部分都是基於8086。而8086的晶元中是16位的資料線,16位的暫存器。看了大部分指令後也是16位的。所在在把程式移植到32位的處理器上的時候,就會發現有此不同。雖然處理器是32位的,但是它還是保留的ax,bx,cx,dx,bp暫存器還是16位。其定址方...

x86暫存器說明

32位cpu有2個32位通用暫存器esi和edi。其低16位對應先前cpu中的si和di,對低16位資料的訪問,不影響 高16位的資料。暫存器esi edi si和di稱為變址暫存器 index register 它們主要用於存放儲存單元在段內的偏移量,用它們可實現多種儲存器運算元的定址方式,為以不...

x86 暫存器資訊

下面的暫存器資訊適用於 x86 體系結構。暫存器說明 gs 交替資料段暫存器 fs 交替資料段暫存器 es 交替資料段暫存器 ds 資料段暫存器 edi 目標索引暫存器 esi 源索引暫存器 ebp 幀指標 esp 棧指標 ebx 通用暫存器 edx 通用暫存器 ecx 通用暫存器 eax 通用暫存...