IA32體系結構1(x86暫存器)

2021-09-13 14:20:48 字數 2092 閱讀 9917

intel architecture 32位處理器,主要以80386為參考。包括以下幾類暫存器:

1.通用暫存器

2.段暫存器

3.狀態和控制暫存器

4.指令指標暫存器eip

5.記憶體管理暫存器

6.控制暫存器

通用暫存器有8個,分別是eax、ebx、ecx、edx、esi、edi、ebp、esp。intel通用暫存器很少,比起arm動不動30多個,要少很多,intel有個慣用做法,就是某些指令會假設對一些暫存器的使用。比如字串指令,會隱式使用ecx、edi、esi裡面的內容作為運算元。另外,通用暫存器可以拆分為字(16位)、位元組(8位)使用,比如eax可以使用字暫存器ax,位元組暫存器ah、al。這些通用暫存器的特殊隱式用途,列舉如下:

(1)eax-作為運算元和結果資料的累加器。

(2)ebx-指向ds段中的資料。

(3)ecx-字串和迴圈操作的計數器。

(4)edx-i/o指標。

(5)esi-指向ds段暫存器指向的段中的資料;字串操作的源指標。

(6)edi-指向es段暫存器指向的段中的資料;字串操作的目的指標。

(7)esp-堆疊指標(ss指向的段中)。

(8)ebp-指向棧中的資料(ss指向的段中),常用作基址指標暫存器。

段暫存器包括cs、ds、ss、es、fs、gs,存放16位的段選擇子。這些暫存器可以分成三類:**、資料、堆疊。cs是**段選擇符。ss是堆疊段選擇符,其它都是資料段選擇符。cs段選擇符不能顯式載入,一般通過指令或者內部處理器操作隱式改變(比如過程呼叫、中斷處理、任務切換),ss段選擇符可以顯式載入。32位保護模式下,段選擇符裡面存放指定格式的選擇符,格式如下:

狀態暫存器eflags,包含一些狀態標誌、控制標誌和系統標誌。復位時,eflags暫存器初值為0x00000002。

指令指標暫存器eip裡面包含當前**段的乙個偏移(offset),指定下一條將被執行的指令。eip暫存器不能被軟體直接訪問,需要通過控制轉移指令隱式改變(jmp、jcc、call、ret、中斷、異常等)。

記憶體管理暫存器包括gdtr、idtr、tr、ldtr,用以指定段式記憶體管理相關資料結構的位址。這些暫存器的內容通過特定的指令來裝載和獲取。這些暫存器的存在,完全是為了加速gdt、idt、tss、ldt等表和資料結構的查詢和載入。試想一下,沒有這樣的暫存器,查表將是一件多麼費勁的事情,而且也沒法做到硬體處理,做不到硬體處理,執行時位址轉換就是不現實的事情了。操作這些暫存器的特定指令如下:

intel提供了cr0,cr1,cr2,cr3,cr4,用於操作處理器模式和當前執行任務的特性。

(1)cr0-包含系統控制標誌,這些標誌控制處理的操作模式和狀態。

(2)cr1-保留

(3)cr2-包含頁錯誤的線性位址

(4)cr3-包含頁目錄基位址,又叫做頁目錄基址暫存器(pdbr)

(5)cr4-包含一些標誌,這些標誌使能一些結構的擴充套件。

其中cr0的位0(pe)是保護模式使能位,該位只控制段級保護機制。cr0的31位(pg)是分頁使能位,用於開啟分頁機制。

IA 32位暫存器基礎

eax ax ah al累加器,低十六位可以用作十六位累加器,低十六位還可以分為兩個八位暫存器。ebx ds段的資料指標 基址暫存器。和eax類似。ecx 字串和迴圈操作的 計數器。和eax類似 edx i o指標 資料計數器。和eax類似。add sub xor or指令可以應用於這四個暫存器。用...

IA32體系結構3(x86機器碼概述)

歸根結底,處理器只認識機器語言,處理器會按照機器碼的指示進行動作。x86體系結構使用指令長度可變的機器語言,一條機器碼指令可以從1位元組到13位元組不等。這個跟arm還是有很大區別,arm32位處理器的話,是定長指令,是32位長度。8086 80286使用16位指令模式,80386以上處理器也可以工...

彙編速查 IA32暫存器組織

暫存器 描述通用暫存器 8個32位,儲存正在處理的資料 段暫存器 6個16位,處理記憶體訪問 指令指標暫存器 1個32位,指向要執行的下一條指令碼 浮點資料暫存器 8個80位,浮點資料 控制暫存器 5個32位,確定處理器的操作模式 除錯暫存器 8個32位,在除錯處理器時包含資訊 暫存器描述 eax用...