1.eax暫存器也成為累加器,用於協助執行一些常見的運算操作以及用於傳遞函式呼叫的返回值。在x86指令集中很多經過優化的指令會有限將資料寫入或讀出eax暫存器,,在對資料進行進一步運算操作。大多數運算如:加法,減法和比較運算都會借助使用eax暫存器來打到指令優化的效果。還有一些特殊的指令如:乘法和除法則必須在eax暫存器中進行。
2.edx是乙個資料暫存器。這個暫存器可以被認為是eax暫存器的延伸部分,用於協助一些更為複雜的運算指令,如:乘法和除法,edx被用於儲存這些指令操作的額外資料結果。edx也可以用於通用的目的的資料儲存,但最常見的用法還是和eax一起使用,用於協助複雜的運算。
3.exc被成為計數器,用於支援迴圈操作。儲存乙個字串或者進行計數就是典型的迴圈操作。需要特別注意的是ecx暫存器通常是反響計數的,而非是正向計數。
4.esi被成為源變址暫存器,這個暫存器儲存這輸入資料流的位置資訊。edi暫存器則指向相關資料操作存放的位置,我們稱其為目的變址暫存器。這2個暫存器主要涉及到資料處理的迴圈操作。可以簡記為esi用於「讀」,edi用於「寫」。在資料操作中使用源變址暫存器和目的變址暫存器可以極大的提高程式執行效率。
5.esp和ebp暫存器分別被成為棧指標和基址指標。這些暫存器用於控制函式呼叫和相關棧操作。當乙個函式被呼叫時,呼叫引數連同函式的返位址將先後被壓入函式棧中。esp暫存器始終指向函式棧的最頂端,有由此不難推出在呼叫函式過程中的某一時刻,esp指向了函式的返回位址。ebp暫存器被用於指向函式棧的最低端。在某些情況下,編譯器為了指令優化的目的可能會避免將ebp暫存器棧幀指標。在這種情況下,被「釋放」出來的ebp暫存器可以想其他暫存器一樣另作他用。
6.ebx是唯一乙個沒有被指定特殊用途的暫存器。
7.最後乙個應該提及的是eip暫存器。這個暫存器始終指向了當前正在執行的指令。當cpu穿行於二進位制**中時,eip暫存器中的值隨之更新以時時反映當前**鎖執行到的位置。
x86暫存器說明
32位cpu有2個32位通用暫存器esi和edi。其低16位對應先前cpu中的si和di,對低16位資料的訪問,不影響 高16位的資料。暫存器esi edi si和di稱為變址暫存器 index register 它們主要用於存放儲存單元在段內的偏移量,用它們可實現多種儲存器運算元的定址方式,為以不...
x86的暫存器
最近一段時間,在看組合語言方面的東西。看的大部分都是基於8086。而8086的晶元中是16位的資料線,16位的暫存器。看了大部分指令後也是16位的。所在在把程式移植到32位的處理器上的時候,就會發現有此不同。雖然處理器是32位的,但是它還是保留的ax,bx,cx,dx,bp暫存器還是16位。其定址方...
x86 暫存器資訊
下面的暫存器資訊適用於 x86 體系結構。暫存器說明 gs 交替資料段暫存器 fs 交替資料段暫存器 es 交替資料段暫存器 ds 資料段暫存器 edi 目標索引暫存器 esi 源索引暫存器 ebp 幀指標 esp 棧指標 ebx 通用暫存器 edx 通用暫存器 ecx 通用暫存器 eax 通用暫存...