我正在为 C 的一个子集构建一个编译器,现在我正在处理数组。假设我有以下内容:
int main() {
int x[3];
x[0] = 1;
x[1] = 3;
x[2] = 4;
}
在汇编中,分配将是这样的:
movl $1, -12(%ebp)
movl $3, -8(%ebp)
movl $4, -4(%ebp)
到目前为止,一切都很好。现在,如果我想访问存储在 中的任意位置,%ebx
我应该怎么做?我一直在阅读这本 wikibook,但我不太了解语法。
我尝试了以下方法,但似乎不起作用:
# Suppose I want to do x[1] = 5
movl $1, %ebx
movl $5, -4(%ebp, %ebx, 4)
我错过了什么?