只是一个简短的问题。 任何人都知道我是否有任何方法可以在装配中做到这一点?
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:动态编写代码,并没有真正做任何有用的事情。
答案 0 :(得分:2)
你想要这个
movl $1, %ebx
movl (%esp,%ebx,$4), $eax
每次递增%ebx以获得下一个参数。
答案 1 :(得分:1)
movl (%esp,%ebx),%eax
被我的编译器接受。
语法是
mov'suffix' (offset,base[,scale]),target
括号中的比例,因为它是可选的