Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

x86 架構狀態與控制寄存器詳解:EFLAGS、EIP、CR0-CR3

編輯:Linux 教學

x86 處理器的狀態與控制寄存器組包含旗標寄存器 EFLAGS、指令指標 EIP 以及四個控制寄存器 CR0、CR1、CR2、CR3。下圖示意其結構:

狀態和控制寄存器結構圖

1. 指令指標寄存器 (EIP) 與旗標寄存器 (EFLAGS)

EIP - 指令指標

EIP 儲存下一條將要執行指令的偏移量,此偏移量相對於當前代碼段寄存器 CS。偏移量加上代碼段基址即形成下一條指令的線性地址。EIP 低 16 位可單獨作為 IP 寄存器存取,用於 16 位定址模式。

EFLAGS - 旗標寄存器

EFLAGS 包含處理器狀態與控制旗標,其位定義如圖 2.2 所示。保留位包括第 1、3、5、15 位以及 18~31 位,這些位未定義用途。

關鍵旗標包括:

  • CF (Carry Flag, 第 0 位):進位/借位旗標
  • PF (Parity Flag, 第 2 位):奇偶校驗旗標
  • AF (Adjust Flag, 第 4 位):輔助進位旗標(用於 BCD 運算)
  • ZF (Zero Flag, 第 6 位):結果為零旗標
  • SF (Sign Flag, 第 7 位):符號旗標
  • TF (Trap Flag, 第 8 位):單步追蹤旗標
  • IF (Interrupt Flag, 第 9 位):中斷啟用旗標
  • DF (Direction Flag, 第 10 位):字串操作方向旗標
  • OF (Overflow Flag, 第 11 位):溢位旗標
  • IOPL (I/O Privilege Level, 第 12-13 位):I/O 特權級
  • NT (Nested Task, 第 14 位):巢狀任務旗標
  • RF (Resume Flag, 第 16 位):恢復旗標(除錯用)
  • VM (Virtual-8086 Mode, 第 17 位):虛擬 8086 模式旗標
  • AC (Alignment Check, 第 18 位):對齊檢查旗標
  • VIF (Virtual Interrupt Flag, 第 19 位):虛擬中斷旗標
  • VIP (Virtual Interrupt Pending, 第 20 位):虛擬中斷暫止旗標
  • ID (Identification Flag, 第 21 位):CPUID 指令支援旗標

2. 控制寄存器 (CR0-CR3)

  • CR0 (Machine Status Word):系統控制旗標,包含保護模式啟用 (PE)、監視器協處理器 (MP)、模擬協處理器 (EM)、任務切換 (TS)、擴展類型 (ET)、數值錯誤 (NE)、寫保護 (WP)、快取啟用 (CD)、分頁啟用 (PG) 等關鍵位。
  • CR1:Intel 保留,未使用。
  • CR2 (Page Fault Linear Address):儲存導致頁面錯誤的線性地址。
  • CR3 (Page Directory Base Register):頁目錄表的物理基址,用於分頁轉換。
Copyright © Windows教程網 All Rights Reserved