将递归C函数转换为Y86汇编

时间:2018-12-07 01:59:29

标签: c recursion assembly y86

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

0 个答案:

没有答案