1

私は 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、どうすればよいでしょうか? このウィキブックを読んでいますが、構文がよくわかりません。

私は次のことを試しましたが、うまくいかないようです:

# Suppose I want to do x[1] = 5
movl $1, %ebx

movl $5, -4(%ebp, %ebx, 4)

私は何が欠けていますか?

4

1 に答える 1

1

問題は、配列のベース-4(%ebp)-12(%ebp)(最初のアイテムが配置される場所であるため)ではないため、インデックスは次のようになることです。

movl $1, %ebx
movl $5, -12(%ebp, %ebx, 4)
于 2013-06-04T22:13:57.360 に答える