- x86匯編與逆向工程:軟件破解與防護(hù)的藝術(shù)
- (美)斯蒂芬妮·多馬斯 (美)克里斯托弗·多馬斯
- 941字
- 2025-02-10 16:05:43
2.4.1 x86中的寄存器
如前所述,寄存器是CPU中的一種特殊名稱和位置,允許進(jìn)行非常快速的操作。所有的寄存器可以被分為兩種不同的類別。
? 通用寄存器(General-Purpose Register,GPR):用于一般數(shù)據(jù)、地址等的存儲,并且可以直接操作。
? 特殊寄存器(Special-Purpose Register,SPR):用于存儲程序狀態(tài)。
x86架構(gòu)定義了許多寄存器,如圖2.5所示。然而,其中許多寄存器被CPU自身所保留,我們只需要了解其中一部分即可。

圖2.5 x86寄存器
來源:Liam McSherry/Wikimedia Commons/CC BY-SA 3.0.
1.通用寄存器
通用寄存器在應(yīng)用程序中承擔(dān)了大部分重要的工作,負(fù)責(zé)存儲從內(nèi)存中獲取的數(shù)據(jù),進(jìn)行數(shù)據(jù)處理,并存儲計(jì)算結(jié)果。下面給出了x86中最重要的通用寄存器,每個(gè)通用寄存器都可以存儲32位的數(shù)據(jù)。每個(gè)累加器都有一個(gè)傳統(tǒng)角色并且以角色命名。但是,通用寄存器可以被用于任何目的,你可以在任何寄存器中放置計(jì)數(shù)器,而不僅僅是在ecx寄存器中放置。
eax
eax被稱為“累加器”寄存器,常被用來保存算術(shù)運(yùn)算的結(jié)果。例如,程序可能會執(zhí)行計(jì)算eax+=ebx。
ebx
ebx是“基址”寄存器。它通常被用來存儲用于保存變量的內(nèi)存塊的基址。例如,表達(dá)式[ebx+5]可以被用來訪問數(shù)組的第五個(gè)元素。
ecx
ecx是“計(jì)數(shù)器”寄存器,傳統(tǒng)上用于計(jì)數(shù)。例如,ecx可能被用來跟蹤循環(huán)的當(dāng)前迭代。在命令for(i=0; i<10; i++)中,變量i可能會被存儲在ecx寄存器中。
edx
edx是“數(shù)據(jù)”寄存器,常被用來存儲數(shù)據(jù)。例如,應(yīng)用程序可能會包含指令sub edx, 7,這條指令的功能是把edx寄存器的值減7。
esi
esi是“源索引”寄存器(源變址寄存器)。傳統(tǒng)上,它用于存儲源數(shù)組中的索引。例如,在指令array[i]=array[k]中,k的值很可能被存儲在esi中。
edi
edi是“目標(biāo)索引”寄存器(變址寄存器)。它用于存儲目標(biāo)數(shù)組的索引。例如,在指令array[i]=array[k]中,i的值很可能被存儲在edi中。
ebp
ebp是“基址指針”寄存器。它的功能是存儲當(dāng)前棧幀的基址。程序棧和棧幀的概念將在后續(xù)章節(jié)進(jìn)行探討。
esp
esp是“棧指針”寄存器。它儲存了當(dāng)前棧幀頂部的地址。
2.特殊寄存器
特殊寄存器用于特定任務(wù),并且不允許直接修改。例如,指令mov eip, 1使用了一個(gè)特殊寄存器,不能進(jìn)行匯編,而使用通用寄存器的指令mov eax, 1卻可以進(jìn)行匯編。
eip
eip是“指令指針”寄存器,用于存儲下一條要執(zhí)行的指令的地址。
eflags
eflags是“標(biāo)志”寄存器。它存儲標(biāo)志,這些標(biāo)志的值為真或假,保存著系統(tǒng)狀態(tài)和先前執(zhí)行指令的結(jié)果的信息。
提示:通用寄存器可以讀取和寫入,但是特殊寄存器只能讀取,不能寫入。
- VMware vSphere 7.0云平臺運(yùn)維與管理(第2版)
- 敏捷軟件開發(fā)(珍藏版)
- Spring Cloud微服務(wù)架構(gòu)實(shí)戰(zhàn)
- 微服務(wù)架構(gòu)原理與開發(fā)實(shí)戰(zhàn)
- 軟件質(zhì)量管理指南
- 虛擬現(xiàn)實(shí):科技新浪潮
- 云原生網(wǎng)關(guān)Traefik:入門、進(jìn)階與實(shí)戰(zhàn)
- 深入理解Prometheus監(jiān)控系統(tǒng)
- 構(gòu)建移動網(wǎng)站與APP:ionic移動開發(fā)入門與實(shí)戰(zhàn) (跨平臺移動開發(fā)叢書)
- 劍指大前端全棧工程師(全2冊)
- Unity 3D游戲開發(fā)技術(shù)詳解與典型案例
- 軟件工程:理論與實(shí)踐(第2版)
- 獵豹行動:硝煙中的敏捷轉(zhuǎn)型之旅
- UG NX 8.0實(shí)例教程(第2版)
- 數(shù)據(jù)分析之道: 用數(shù)據(jù)思維指導(dǎo)業(yè)務(wù)實(shí)戰(zhàn)