- x86匯編與逆向工程:軟件破解與防護的藝術
- (美)斯蒂芬妮·多馬斯 (美)克里斯托弗·多馬斯
- 314字
- 2025-02-10 16:05:46
2.6.2 間接尋址
間接尋址使用寄存器來指定地址。所用寄存器包括16位通用寄存器(如[ax])和32位通用寄存器(如[eax])。但是,8位通用寄存器(如al、bh等)和特殊寄存器不能用于尋址。
示例:指針
許多編程語言都使用指針(pointer)的概念,有些是直接使用,有些則在幕后運行。直接使用和操作指針是C/C++數據類型進行間接尋址的一個例子。C程序中可能會有這樣的代碼:int x=1; int*p=&x;。在這里,指針p被設定為指向x。即使你對C語言不熟悉,也不用擔心,你只需知道p保存的是x在內存中的地址。
然而,p的值可能會改變以指向其他事物,因此它的目標地址并不固定。要在匯編中訪問p指示的值,首先要將p加載到一個寄存器中,然后用這個寄存器來查找我們想要的值。這一過程在以下的x86指令中有所展示:
