我是汇编编程的新手,我正尝试将用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