X86系列CPU標準寄存器


title: X86系列CPU標準寄存器
tags: 計算機組成原理


  版權聲明:本文章參考了唐朔飛的《 計算機組成原理》未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


1 Intel CPU的發展里程碑

Created with Raphaël 2.2.04位40048位800816位808632位8038664位Pentium

:一般說來,CPU在同一時間內處理的一組二進制數稱爲一個計算機的“字”,而這組二進制數的位數就是“字長”。通常稱處理字長爲8位數據的CPU叫8位CPU,32位CPU就是在同一時間內處理字長爲32位的二進制數據。

  Intel CPU 系列,最初是 4 位微處理器 4004,然後到到 8 位微處理器的 8008,再到 8 位微處理器 8080,以及稍後的 16 位微處理器 8086,由 8086 開始,Intel 進入現在所謂的x86時代 。

  Intel 8086 爲 16 位 CPU ,地址總線爲20根,尋址能力爲220*1B=1MB。因爲在 8086 之前的 CPU 都是 8 位 CPU,這樣也就造成了很多的外設也只支持 8 位,因此 Intel 緊接着就推出了 8 位的 8088 CPU。如果是單從彙編語言的角度上來說,8086 和 8088 是沒有區別的,即8086上跑的程序可以不加修改的移植到8088,8088上跑的程序也可以不加修改的移植到8086上,當然,還是有些特殊的地方是不同的,而這些基本上在這裏可以忽略掉.

  在 8088 CPU 之後,Intel 又推出了 80186 ,80286 ,這兩款 CPU 均是 16 位 CPU 。簡單來說80186只是8086增加了一些指令, 但 80286 則不同,80286 的地址總線數目達到了 24 根,從而最大尋址能力爲 2242^{24}bit即 16MB,由於支持更多的物理內存尋址,因此 80286 便開始成爲了多任務,多用戶系統的核心。

  在80286之後,Intel 又推出了 80386 ,80386 爲 32 位微處理器,Intel 80x86 家族的 32 位微處理器始於 80386;同時 80386 也完全兼容先前的 8086/8088,80186,80286,並且 80386 全面支持 32 位數據類型和 32 位操作,80386 的數據總線根數和地址總線根數均達到了 32 根,從而可以最大物理尋址爲 232bit 即 4GB 。

  而之後的 80486 也是 32 位微處理器,而後又出來了 Pentium 和 Pentium Pro 等等第五代微處理器,這些處理器雖然也是32位微處理器,但是他們的數據總線和地址總線都有所擴展,比如 Pentium 的數據總線達到 64 位,而 Pentium Pro 的地址總線位數達到了 36 位 。

  詳細信息參考《CPU的發展歷史》

2 16位CPU標準寄存器

1

8086的可編程寄存器包括:

  • 通用寄存器
  • 數據寄存器(16位):AX 、BX、CX、 DX
  • 指針寄存器(16位):SP、BP
  • 變址寄存器(16位):SI、DI
  • 控制寄存器(16位):IP、FLAGS
  • 段寄存器(16位):CS、DS、ES、SS

2.1 通用寄存器

  通用寄存器包括數據寄存器、指針寄存器、變址寄存器。除完成規定的專門用途外,均可用於傳送和暫存數據,可以保存算術邏輯運算的操作和運算結果。通用寄存器的長度取決於機器字長。
  16位cpu通用寄存器共有8個:AX、BX、CX、DX、BP、SP、SI、DI。八個寄存器都可以作爲普通的數據寄存器使用。但有的有特殊的用途:AX爲累加器,CX爲計數器,BX,BP爲基址寄存器,SI,DI爲變址寄存器,BP還可以是基指針,SP爲堆棧指針。

2.1.1 數據寄存器

  由於之前的 CPU 爲 8 位 CPU,所以爲了兼容以前的 8 位程序,在 8086 CPU 中,每一個數據寄存器都可以當做兩個單獨的寄存器來使用,由此,每一個 16 位寄存器就可以當做 2 個獨立的 8 位寄存器來使用了 。
  16位CPU具有4個16位數據寄存器又可分割成8個獨立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每個寄存器都有自己的名稱,可獨立存取。

2.1.1.1 AX寄存器

  AX 寄存器也叫做累加寄存器,此外還具有的特殊用途是在使用 DIV 和 MUL 指令時使用。

2

3

2.1.1.2 BX寄存器

  BX 寄存器也叫基址寄存器,可以暫存一般的數據
  BX 主要還是用於其專屬功能:尋址(尋址物理內存地址)上,BX 寄存器中存放的數據一般是用來作爲偏移地址使用的。在 8086 CPU 中,CPU 是根據 <段地址:偏移地址> 來進行尋址操作的,而 BX 中存放的數據表示的是偏移地址的話,自然,便可以通過 <段地址:[BX]> 的方式來完成尋址操作了。

2.1.1.3 CX寄存器

  CX 寄存器也叫計數寄存器,可以暫存一般性的數據
  在位操作中,當移多位時,要用CL來指明移位的位數
  當在彙編指令中使用循環 LOOP 指令時,可以通過CX 來指定需要循環的次數,而 CPU 在每一次執行 LOOP 指令的時候,都會做兩件事:一件就是令 CX = CX – 1,即令 CX 計數器自動減去 1;還有一件就是判斷 CX 中的值,如果 CX 中的值爲 0 則會跳出循環,而繼續執行循環下面的指令,當然如果 CX 中的值不爲 0 ,則會繼續執行循環中所指定的指令 。

2.1.1.4 DX寄存器

  DX 寄存器也叫數據寄存器,可以暫存一般性的數據
  當在使用 DIV 指令進行除法運算時,如果除數爲 16 位時,被除數將會是 32 位,而被除數的高 16 位就是存放在 DX 中,而且執行完 DIV 指令後,本次除法運算所產生的餘數將會保存在 DX 中
  在執行 MUL 指令時,如果兩個相乘的數都是 16 位的話,那麼相乘後產生的結果顯然需要 32 位來保存,而這32 位的結果的高 16 位就是存放在 DX 寄存器中

2.1.2 指針寄存器

  寄存器BP和SP稱爲指針寄存器(Pointer Register),主要用於存放堆棧內存儲單元的偏移量,用它們可實現多種存儲器操作數的尋址方式,爲以不同的地址形式訪問存儲單元提供方便。指針寄存器不可分割成8位寄存器。作爲通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。

2.1.3 變址寄存器

  寄存器SI和DI稱爲變址寄存器(Index Register),它們主要用於存放存儲單元在段內的偏移量,用它們可實現多種存儲器操作數的尋址方式,爲以不同的地址形式訪問存儲單元提供方便。變址寄存器不可分割成8位寄存器。作爲通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。它們也可作一般的指針存儲器使用。在字符串操作指令的執行過程中,對它們有特定的要求,而且還具有特殊的功能。

2.2 段寄存器

  16位CPU的段寄存器是16位,是根據內存分段管理模式而設置的
  保護模式下邏輯地址由段寄存器的值(也就是段選擇符)和一個偏移量組合而成的。通過段選擇符可以找到段描述符,進而找到段基址,線性地址=段基址+偏移量。
  ES爲附加段寄存器。CS爲代碼段寄存器。SS爲堆棧段寄存器。DS爲數據段寄存器。

2.3 控制寄存器

2.3.1 指令指針寄存器

  指令指IP(Instruction Pointer)寄存器是存放下次將要執行的指令在代碼段的偏移量。在具有預取指令功能的系統中,下次要執行的指令通常已被預取到指令隊列中,除非發生轉移情況。所以,在理解它們的功能時,不考慮存在指令隊列的情況。邏輯地址=CS:IP

2.3.2 標誌寄存器(PSW)

4

5

  標誌寄存器在16位CPU中用於反映處理器的狀態和運算結果的某些特徵,其中只有9位有定義)這些標誌位分爲兩類:

  • 運算結果標誌位

  • 進位標誌CF(Carry Flag)——進位標誌CF主要用來反映運算是否產生進位或借位。如果運算結果的最高位產生了一個進位或借位,那麼,其值爲1,否則其值爲0。使用該標誌位的情況有:多字(字節)數的加減運算,無符號數的大小比較運算,移位操作,字(字節)之間移位,專門改變CF值的指令等。

  • 奇偶標誌PF(Parity Flag)——奇偶標誌PF用於反映運算結果中"1"的個數的奇偶性。如果“1”的個數爲偶數,則PF的值爲1,否則其值爲0。利用PF可進行奇偶校驗檢查,或產生奇偶校驗位。在數據傳送過程中,爲了提供傳送的可靠性,如果採用奇偶校驗的方法,就可使用該標誌位。

  • 輔助進位標誌AF(Auxiliary Carry Flag)——在發生下列情況時,輔助進位標誌AF的值被置爲1,否則其值爲0:

    • 在字操作時,發生低字節向高字節進位或借位時;
    • 在字節操作時,發生低4位向高4位進位或借位時。
  • 零標誌ZF(Zero Flag)——零標誌ZF用來反映運算結果是否爲0。如果運算結果爲0,則其值爲1,否則其值爲0。在判斷運算結果是否爲0時,可使用此標誌位。

  • 符號標誌SF(Sign Flag)——符號標誌SF用來反映運算結果的符號位,它與運算結果的最高位相同。在微機系統中,有符號數採用補碼錶示法,所以,SF也就反映運算結果的正負號。運算結果爲正數時,SF的值爲0,否則其值爲1。

  • 溢出標誌OF(Overflow Flag)——溢出標誌OF用於反映有符號數加減運算所得結果是否溢出。如果運算結果超過當前運算位數所能表示的範圍,則稱爲溢出,OF的值被置爲1,否則,OF的值被清爲0。

  • 狀態控制標誌位——狀態控制標誌位是用來控制CPU操作的,它們要通過專門的指令才能使之發生改變。

  • 追蹤標誌TF(Trap Flag)——當追蹤標誌TF被置爲1時,CPU進入單步執行方式,即每執行一條指令,產生一個單步中斷請求。這種方式主要用於程序的調試。指令系統中沒有專門的指令來改變標誌位TF的值,但程序員可用其它辦法來改變其值。

  • 中斷允許標誌IF(Interrupt-enable Flag)——中斷允許標誌IF是用來決定CPU是否響應CPU外部的可屏蔽中斷髮出的中斷請求。但不管該標誌爲何值,CPU都必須響應CPU外部的不可屏蔽中斷所發出的中斷請求,以及CPU內部產生的中斷請求。CPU的指令系統中也有專門的指令來改變標誌位IF的值。具體規定如下:

    • 當IF=1時,CPU可以響應CPU外部的可屏蔽中斷髮出的中斷請求;
    • 當IF=0時,CPU不響應CPU外部的可屏蔽中斷髮出的中斷請求。
  • 方向標誌DF(Direction Flag)——方向標誌DF用來決定在串操作指令執行時有關指針寄存器發生調整的方向。當其爲0時,si、di寄存器增大;當其爲1時,si、di寄存器減小

3 32位CPU標準寄存器

6

80386共提供7種類型的可編程寄存器,如下:

  • 通用寄存器(32位):EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI
  • 段寄存器(16位):CS、SS、DS、ES、FS、GS
  • 指令指針寄存器和標誌寄存器(32位):EIP、EFLAGS
  • 系統表寄存器:
  • 48位:GDTR、IDTR
  • 16位:LDTR、TR
  • 控制寄存器(32位):CR0、CR1、CR2、CR3、CR4
  • 調試寄存器(32位):DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7
  • 測試寄存器(32位):TR0、TR1、TR2、TR3、TR4、TR5、TR6、TR7

3.1 通用寄存器

7

  80386有8個32位的通用寄存器,這8個通用寄存器都是由8086相應16位通用寄存器擴展成32位而得,用法相似。名字分別是:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP。每個寄存器可以掰成兩個16位寄存器使用,也可以掰成4個8位寄存器使用。

  • EAX:一般用作累加器
  • EBX:一般用作基址寄存器(Base)
  • ECX:一般用來計數(Count)
  • EDX:一般用來存放數據(Data)
  • ESP:一般用作堆棧指針(Stack Pointer)
  • EBP:一般用作基址指針(Base Pointer)
  • ESI:一般用作源變址(Source Index)
  • EDI:一般用作目標變址(Destinatin Index)

  在16位CPU中,數據寄存器不能作爲指針寄存器,在32位CPU中,其數據寄存器不僅可傳送數據、暫存數據、保存算術邏輯運算結果,而且也可作爲指針寄存器,所以,這些32位寄存器更具有通用性。

3.2 段寄存器

8

  80386有6個16位段寄存器,分別是:CS(代碼段寄存器),DS(數據段寄存器),SS(堆棧段寄存器),ES、FS 、GS(附加數據段寄存器)。前4個段寄存器的名稱與8086相同,在實地址方式下使用方式也和8086相同。80386又增加了FS與GS,主要爲了減輕對DS段和ES段的壓力。除CS支持代碼段,SS支持堆棧段外,程序員可以利用其它的所有段寄存器支持數據段。

  段寄存器中存放的不再是某個段的基地址,而是某個段的選擇符(Selector)。因爲16 位的寄存器無法存放32位的段基地址,段基地址只好存放在段的描述符(Descriptor)中。

  每個段寄存器對應這一個64位段描述符寄存器,這在8086中是沒有的,它的作用是快速訪問段描述符。當段寄存器載入段選擇符時,64位的段描述符寄存器就載入GDT中的對應的段描述符。

3.3 指令指針寄存器和標誌寄存器

9

3.3.1 指令指針寄存器

   80386的指令指針寄存器EIP是一個32位寄存器,是從8086的IP寄存器擴充而來。EIP中存放下一條將要執行指令的偏移量(offset),這個偏移量是相對於目前正在運行的代碼段寄存器(CS)而言的。偏移量加上當前代碼段的基地址,就形成了下一條指令的地址。

3.3.2 標誌寄存器

   80386的標誌寄存器EFLAGS也是一個32位寄存器,其中只使用了15位,從8086的FLAGS寄存器擴展而來。如下圖所示:

10

  • OF、DF、IF、TF、SF、ZF、AF、PF和CF在8086中就已經存在,請參考上面2.3.2 標誌寄存器

  • 下面的標誌位是80286新增的標誌位

    • IOPL(I/O Privilege Level)是從80286開始出現的,佔2個bit表示I/O特權級,如果當前特權級小於或等於IOPL,則可以執行I/O操作,否則將出現一個保護性異常。IOPL只能由特權級爲0的程序或任務來修改。

    • NT(Nested Task)也是從80286開始出現的,表示嵌套任務,用於控制中斷返回指令IRET,當NT=0時,用堆棧中保存的值恢復EFLAGS、CS和EIP,從而實現返回;若NT=1,則通過任務切換實現中斷返回。

  • 下面的標誌位是80386新增的標誌位

    • VM(Virtual-8086 mode)表示虛擬8086模式,如果VM被置位且80386已處於於保護模式下,則CPU切換到虛擬8086模式,此時,對段的任何操作又回到了實模式,如同在8086下運行一樣。

    • RF(Resume flag)表示恢復標誌(也叫重啓標誌),與調試寄存器一起用於斷點和單步操作,當RF=1 時,下一條指令的任何調試故障將被忽略,不產生異常中斷。當RF=0時,調試故障被接受,併產生異常中斷。用於調試失敗後,強迫程序恢復執行,在成功執行每條指令後,RF自動復位。

  • 下面的標誌位是80486新增的標誌位

    • AC(Alignment check)表示對齊檢查。這個標誌是80486以後的CPU纔有的。當AC=1且CR0中的AM=1時,允許存儲器進行地址對齊檢查,若發現地址未對齊,將產生異常中斷。所謂地址對齊,是指當訪問一個字(2字節長)時,其地址必須是偶數(2的倍數),當訪問雙字(4字節長)時,其地址必須是4的倍數。但是隻有運行在特權級3的程序才執行地址對齊檢查,特權級0、1、2忽略該標誌。
  • 下面的標誌位是Pentium新增的標誌位

    • VIF(Virtual interrupt flag)表示虛擬中斷標誌。當VIF=1時,可以使用虛擬中斷,當VIF=0時不能使用虛擬中斷。該標誌要和下面的VIP和CR4中的VME配合使用。
    • VIP(Virtual interrupt pending flag)表示虛擬中斷掛起標誌。當VIP=1時,VIF有效,VIP=0時VIF無效。
    • ID(Identification flag)表示鑑別標誌。該標誌用來指示Pentium CPU是否支持CPUID的指令。

3.4 系統表寄存器

11

  80386有4個系統地址寄存器,用來存儲操作系統需要的保護信息和地址轉換表信息、定義目前正在執行任務的環境、地址空間和中斷向量空間。由於只能在保護方式下使用,因此又稱爲保護方式寄存器。

  • 全局描述符表寄存器GDTR(Global Descriptor Table Register ),是48 位寄存器,用來保存全局描述符表(GDT)的32 位基地址和GDT 的大小(16位)。(全局描述符表最大爲216B,共216B/8B=8K個全局描述符)。

注:GDT表裏面的每一項都表明一個段的信息,或者是一個LDT表的相關信息。其實一個LDT表也是一個段。所以也可以說GDT表的每一項都描述一個段。就像一個文件夾下面可以有文件,也可以有文件夾一樣,GDT表裏面既可以有段描述符,也可以有LDT的表。

  • 中斷描述符表寄存器IDTR(Interrupt Descriptor Table Register),是48 位寄存器,用來保存中斷描述符表(IDT)的32 位基地址和IDT 的大小(16位)。(中斷描述符表最大爲216B,共216B/8B=8K箇中斷描述符)。

  • 局部描述符表寄存器LDTR(Local Descriptor Table Register ),是16 位寄存器,保存局部描述符表LDT 段的選擇符。一旦16位的選擇符(也叫選擇子)放入LDTR,CPU會自動將選擇符所指定的局部描述符裝入64位的局部描述符寄存器中。

  • 任務狀態寄存器TR(Task State Register)是16 位寄存器,用於保存任務狀態段TSS段的16位選擇符。與LDTR類似,一旦16位的選擇符放入TR,CPU會自動將該選擇符所指定的任務描述符裝入64位的任務描述符寄存器中。

12
  LDT和TSS都是一個段,所以在GDT中有對應的表項描述。LDTR和TR是由16位選擇字段和64位描述符寄存器組成。用來指定局部描述符表和任務狀態段TSS在物理存儲器中的位置和大小。64位描述符寄存器是自動裝入的,程序員不可見。LDTR與TR只能在保護方式下使用,程序只能訪問16位選擇符寄存器。(注意區分描述符表寄存器與描述符寄存器)。
  IDTR是48位的(大於32位),與GDTR位數一樣,大於32位的結構自然就有4G內任意尋址的能力。所以可以直接訪問中斷向量表,不需要通過選擇子(16位結構)來間接尋找。所以IDT表可以與GDT表完全獨立,不需要像LDT一樣還要在GDT表建立相關表項。但是TSS段和LDT表兩個結構就不行,他們的寄存器只有16位,不可能在4G內存中任意尋址,所以只能將其插入到GDT表中,然後借用GDT和自身的選擇子的組合來間接尋址。

13

3.5 控制寄存器

14

15

16
  80386的控制寄存器有4個:CR0(機器狀態字)、CR1(Intel 預留)、CR2(頁故障地址)、CR3(頁目錄地址)。其中CR1保留以後使用,從Pentium開始,又增加了一個CR4。

  • CR0的低16位包含了與80286的MSW一致的位定義,保持了和80286的兼容,同時也兼容了從80286開始的兩條指令LMSW/SMSW

  • 下面四個定義從80286開始存在。

    • PE(Protection Enable)保護模式允許,PE=0表示CPU工作在實模式,PE=1表示CPU工作在保護模式
    • MP(Monitor Coprocessor)監控協處理器,MP=1表示協處理器在工作,MP=0表示協處理器未工作。
    • EM(Emulation)協處理器仿真,當MP=0,EM=1時,表示正在使用軟件仿真協處理器工作。
    • TS(Task Switched)任務轉換,每當進行任務轉換時,TS=1,任務轉換完畢,TS=0。TS=1時不允許協處理器工作。
  • 下面的2個定義從80386開始存在

    • ET(Extension Type)處理器擴展類型,反映了所擴展的協處理器的類型,ET=0爲80287,ET=1爲80387。
    • PG(Paging)頁式管理機制使能,PG=1時頁式管理機制工作,否則不工作。
  • 下面的4個定義從80386開始存在

    • NE(Numeric Error)數值異常中斷控制,NE=1時,如果運行協處理器指令發生故障,則用異常中斷處理,NE=0時,則用外部中斷處理。
    • WP(Write Protect)寫保護,當WP=1時,對只讀頁面進行寫操作會產生頁故障。
    • AM(Alignment Mask)對齊標誌,AM=1時,允許對齊檢查,AM=0時不允許,關於對齊,在EFLAGS的AC標誌時介紹過,在80486以後的CPU中,CPU進行對齊檢查需要滿足三個條件,AC=1、AM=1並且當前特權級爲3。
    • NW(Not Write-through)禁用通寫。當CD=0時NW有效。當NW有效且NW=0時,採用回寫策略(寫數據時只寫cache不寫RAM);當NW有效且NW=1時採用通寫策略(寫數據時既寫cache又寫RAM)。
    • CD(Cache Disable)禁用高速緩存。CD=0時啓用高速緩存,CD=禁用高速緩存。
  • CR1保留未用。

  • CR2存放引起頁故障的線性地址,只有在PG=1時,CR2纔有效,當頁故障處理程序被激活時,壓入頁故障處理程序堆棧中的錯誤碼提供頁故障的狀態信息。

  • CR3的高20位存放頁目錄的基地址,因爲也目錄總是頁對齊的(一頁爲4K),所以頁目錄基地址從bit12開始就可以了。只有當CR0中的PG=1時,CR3的頁目錄基地址纔有效。

    • 從80486開始,在CR3的低12位定義了兩個控制位,如下:
      • PCD(Page-level Cache Disable)頁CACHE禁止,當PCD=0時,頁目錄表進行高速緩存,PCD=1時,不進行高速緩存;該位控制PCD引腳控制外部CACHE工作還是不工作。
      • PWT(Page-level Writes Transparent),CACHE的寫入分爲通寫(Write-Through)和回寫(Write-Back),80486以上的CPU內部的CACHE都是通寫的,但對外部CACHE而言,允許某些頁是回寫的,而另一些頁是通寫的,當PWT=1時,外部CACHE對頁目錄進行通寫,否則進行回寫;此位驅動PWT引腳以控制外部CACHE是通寫還是回寫。
  • CR4是從Pentium CPU開始出現的。

    • VME(Virtual-8086 Mode Extensions)虛擬8086方式擴展,VME=1允許使用虛擬8086擴展模式,否則只能使用80386/80486的虛擬8086模式。
    • PVI(Protected-Mode Virtual Interrupts)保護模式虛擬中斷,PVI=1時,在保護模式下支持虛擬中斷標誌VIF(EFLAGS中),PVI=0則不支持虛擬中斷標誌。
    • TSD(Time Stamp Disable)時間戳禁止,TSD=1時,允許在特權級爲0的程序中執行RDTSC指令(讀時間戳計數指令),TSD=0時,允許任何特權級執行RDTSC指令。
    • DE(Debugging Extensions)調試擴展。
    • PSE(Page Size Extensions)頁大小擴展,PSE=1時,頁大小可以擴展到2M或4M,PSE=0時,頁大小隻能是4K.
    • PAE(Physical Address Extension)物理地址擴展,PAE=1時,頁物理地址可以擴展到36bits以上,PAE=0時只能用32bits的物理地址。
    • MCE(Machine-Check Enable)硬件檢查使能,Pentium以後的CPU有一種硬件檢測功能,MCE=1時允許使用該功能。
    • PGE(Page Global Enable)全局頁使能,PGE=1時,允許使用全局頁,PGE=0時禁止使用全局頁。
    • PCE(Performance-Monitoring Counter Enable)性能監視計數器使能,當PCE=1時,允許在任何保護級下執行RDPMC指令,PCE=0時,只有特權級0的程序可以執行RDPMC指令。
    • OSFXSR(Operating System Support for FXSAVE and FXRSTOR instructions)
    • OSXMMEXCPT(Operating System Support for Unmasked SIMD Floating-Point Exceptions)
    • VMXE(VMX-Enable Bit)VMX使能位,VMXE=1時,允許VMX操作。
    • SMXE(SMX-Enable Bit)SMX使能位,SMXE=1時,允許SMX操作。
    • OSXSAVE(XSAVE and Processor Extended States-Enable Bit)

3.6 調試寄存器

17

   一共有8個調試寄存器DR0-DR7,DR0-DR3可以分別設置4個斷點的線性地址,DR4-DR5保留未用,DR6是斷點狀態寄存器,DR7是斷點控制寄存器(包括斷點類型、斷點長度,斷點開放/禁止)

3.7 測試寄存器

   一共有8個測試寄存器TR0-TR7,TR0-TR2保留,TR3-TR5用作CACHE測試,TR6爲命令測試寄存器,TR7爲測試數據寄存器。

4 64位CPU標準寄存器

18


  版權聲明:本文章參考了唐朔飛的《 計算機組成原理》未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章