0
我正在爲C的一個子集構建一個編譯器,現在我正在處理數組。假設我有以下幾點:在AT&T GAS程序集中尋址數組
int main() {
int x[3];
x[0] = 1;
x[1] = 3;
x[2] = 4;
}
在裝配中,asignments會是這樣:
movl $1, -12(%ebp)
movl $3, -8(%ebp)
movl $4, -4(%ebp)
到目前爲止,一切都很好。現在,如果我想訪問任意位置,存儲在%ebx
,我應該怎麼做?我一直在閱讀this wikibook,但我不太明白這個語法。
我已經試過了,但它似乎以下不工作:
# Suppose I want to do x[1] = 5
movl $1, %ebx
movl $5, -4(%ebp, %ebx, 4)
我缺少什麼?