X86暫存器簡述

2021-05-25 02:05:06 字數 2584 閱讀 5879

x86暫存器簡述

一、80386微處理器的內部組成和結構

以前的機子都是16位的,功能沒有多大變化,intel 386是真正的32位微處理器。

(1)通用暫存器

8個通用暫存器和8086通用暫存器相同,只是擴充套件到了32位,暫存器名字前加了乙個字元e,即:eax、ebx、ecx、edx、esi、edi、ebp、esp,仍然支援8位和16位操作,用法和8086系統相同。

(2)段暫存器

有6個16位段暫存器,比8086增加了兩個附加段暫存器fs、gs。在實模式下,段暫存器和8086用法相同;在保護模式下,段暫存器稱為段選擇器,它與描述符配合實現段定址。

(3)段描述符暫存器

64位段描述符暫存器對程式設計師是不可見的的。為了加快對記憶體中描述符表的查詢速度,在選擇符內容裝入時,段描述符同時裝入段描述符暫存器。這樣,只要段選擇符內容不變,就不需要到記憶體中查詢描述符表,從而加快了段位址定址的速度。

(4)狀態和控制暫存器

狀態和控制暫存器有標誌暫存器eflags、指令指標暫存器eip和4個控制暫存器cr0--cr3組成。

32位標誌暫存器中,除保留8086 cpu的6個條件標誌、3個控制標誌外,新增加了4個標誌,其含義分別如下:

iopl:兩位寬的特權級字段,支援保護方式。iopl指出要執行i/o指令的特權級。如果當前的特權級別數值小於等於iopl,則i/o指令可以執行,否則將發生乙個保護。

nt:巢狀任務控制位。nt=0時,iret執行一般的中斷返回,nt=1時,用乙個任務轉換代替一般的中斷返回。

rf:重啟動控制。rf=0除錯故障被接受,rf=1忽略除錯故障。成功的執行一條指令後,cpu將rf清0;接受到乙個非除錯故障訊號cpu將rf置1,則忽略該故障。

vm:虛擬8086方式位。該位為1時,處理器工作於虛擬8086方式;該位為0時,處理器工作於一般的保護方式。

控制暫存器主要用於控制選擇80386的操作環境(實方式、保護方式、分頁保護環境)、協處理器的使用控制以及作為線性位址的故障頁保護和頁目錄表的基址保護。

(5)系統位址暫存器

80386有4個系統位址暫存器,用來保護作業系統需要的保護資訊和位址轉換表資訊、定義目前正在執行任務的環境、位址空間和中斷向量空間,其名字和含義如下;

tr:16位任務狀態暫存器,用於儲存任務狀態段tss的16位選擇符。

ldtr:16位區域性描述符表暫存器,用於儲存區域性描述符表的選擇符。

(6)除錯暫存器

80386 cpu 芯 片內有8個除錯暫存器dr0--dr7,為了除錯提供了硬體支援。其中前4個為儲存4個線性斷點位址暫存器;後面兩個為備用暫存器;dr6為斷點狀態寄存 器,通過該暫存器的標誌可以檢測事故並進入事故處理程式或禁止進入事故處理程式;最後乙個是斷點控制暫存器,用來規定斷點欄位的長度、斷點訪問型別等。

(7)測試暫存器

80386有8個32位的測試暫存器tr0--tr7,其中前6個為系統保留,後面兩個用於控制對轉換後備緩衝器中ram和cam的測試。dr6是測試命令暫存器,最後乙個是測試資料暫存器,用來儲存測試結果的狀態。

2.位址轉換

80386提供了強有力的儲存器定址結構,可定址的物理空間為4gb,支援高達64mb的邏輯位址空間。

80386cpu的邏輯位址由兩部分組成;低32位為偏移位址,可指向4gb空間中的任何位址;高16位為選擇符,指向段描述符表的乙個表項(段描述符)。段描述符給出乙個段基位址,該段基址與偏移位址相加,產生線性位址。

3.處理器訊號

二、80486微處理器

486用動態匯流排調整支援8位、16位、32位匯流排寬度,並需要外部交換邏輯;而386只支援16位和32位匯流排寬度,不需要交換邏輯。

486有突發傳輸方式,可從外存傳輸四個32位字到片內cache,只需要5個時鐘週期,而386至少需要8個時鐘週期才能傳輸同樣數量的資料。

486增加了387數值協處理器指令組和暫存器組,在執行浮點指令時,i/o週期不執行。

486成組匯流排週期能在乙個時鐘週期內傳送32位資料,而386至少要兩個時鐘週期。

486 cpu乙個匯流排週期的中間另外的處理器需要站用匯流排,cpu可以浮空匯流排,當匯流排空閒後再重新開始其匯流排週期。

486使用1x時鐘,可以通重載入外設使用的半頻時鐘,簡化了系統。同時減少了cpu高速執行時的rf發射,簡化了時鐘發生電路。

還有很多其他的區別,這裡就不一一介紹了。

三、pentium處理器

pentium是386和486系列處理器的下一代,具有64位資料匯流排。 自2023年出現後,技術上分為兩大派,乙個是pentium pro,乙個是mmx pentium。兩者融合,誕生了pii。

pentium和486之間也有不少的區別

(1) pentium有64位資料匯流排,而486只支援32位資料匯流排。pentium比486有更多的位元組允許位和資料奇偶位,支援更大的資料匯流排。

(2) pentium具有同時驅動兩個匯流排週期的能力。

(3) pentium處理器乙個匯流排週期產生8位元組的寫操作,並且不使用plock引腳。它不改變位址的低位和突發時的位元組允許。

(4) pentium需要寫回和線填充執行突發週期,突發不能在中間停止。

(5) pentium不支援bs8和bs16管理動態匯流排調整,或使其在每個失重或pentium驅動位址無效。

還有很多其他的區別,也不說明了。

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 通用暫存...

x86的暫存器

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