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