我是汇编编程的新手,我正在尝试将用 c 编写的函数转换为汇编代码 Y86。这就是我所拥有的,但我知道这是错误的。我开始为一个参数编写汇编代码,但是当我尝试使用 2 个参数时,我对该怎么做感到困惑。我可以使用一些帮助。假设 x = 5 和 y = 1。
int rec_mult (int x, int y){
if(y==1){
return x;
}
else{
return x + rec_mult(x, y-1);
}
}
esi = x and ecx = y
rec_mult:
pushl %ebp
rrmovl %esp,%ebp
mrmovl 8(%ebp),%ecx
mrmovl 12(%ebp),%esi
irmovl $1,%edx
rrmovl %ecx,%eax
subl %ecx,%edx
je rec_multend
rrmovl %ecx,%edi
irmovl $1,%edx
subl %edx,%edi
pushl %ecx
pushl %edi
call rec_mult
popl %edi
popl %ecx
addl %esi,%eax
rec_multend:
popl %ebp
ret