movl in x86 assembly,intel-syntax

时间:2012-10-05 16:27:39

标签: assembly x86 att

只是一个简短的问题。 任何人都知道我是否有任何方法可以在装配中做到这一点?

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加载到寄存器中,只有当我确定前两个条件为真时才可以将a加载到寄存器中。

p / s:动态编写代码,并没有真正做任何有用的事情。

2 个答案:

答案 0 :(得分:2)

你想要这个

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

每次递增%ebx以获得下一个参数。

答案 1 :(得分:1)

movl (%esp,%ebx),%eax

被我的编译器接受。

语法是

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

括号中的比例,因为它是可选的