首页 > 解决方案 > 将递归 C 函数转换为 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

标签: crecursionassemblyy86

解决方案


推荐阅读