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);
      }
    }
}

只有当我确定前两个条件为真时,我才能将 a 加载到寄存器中,而不是立即将 x、y、z 和 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 回答