0

ちょっとした質問です。アセンブリでこれを行う方法があるかどうかは誰にもわかりますか?

movl $4, %ebx
movl (%ebx)(%esp), %eax

私がやろうとしているのは、基本的に、スタックから次の引数 (固定サイズ) を追加するループを作成することです。

例:

int foo( int x, int y, int z, int a){
    if(x == y){
         x = z;
       if(y == z){
            printf("%d", a);
      }
    }
}

x、y、z、および a をすぐにレジスタにロードする代わりに、最初の 2 つの条件が真であることが確実な場合にのみ、a をレジスタにロードできます。

p/s: その場でコードを書きましたが、実際には何も役に立ちません。

4

2 に答える 2

2

あなたはこれを求めている

movl $1, %ebx
movl (%esp,%ebx,$4), $eax

次の引数に到達するたびに %ebx を 1 ずつインクリメントします。

于 2012-10-05T18:28:26.473 に答える
1
movl (%esp,%ebx),%eax

私のコンパイラによって受け入れられます。

構文は

mov'suffix' (offset,base[,scale]),target

オプションであるため、括弧内に目盛りが付いています

于 2012-10-05T18:26:51.353 に答える