Я новичок в программировании на ассемблере, и я пытаюсь преобразовать функцию, написанную в c, в код ассемблера Y86.Это то, что у меня есть, но я знаю, что это неправильно.Я начал с написания ассемблерного кода для одного параметра, но затем, когда я пытаюсь получить 2 параметра, я не понимаю, что делать.Я мог бы использовать некоторую помощь.Скажем, х = 5 и у = 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