Я строю компилятор для подмножества 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)
Что мне не хватает?