c - 将递归 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
解决方案
推荐阅读
- c# - 用于下拉菜单的 Selenium SelectElement - 元素不可交互:元素当前不可见且可能无法操作
- csv - jq输出中的反斜杠
- python-3.x - 在 xhtml2pdf 中添加目录
- python - 熊猫计算以大写开头的列中具有特定长度的行数
- python - 毒性 0% 覆盖率
- javascript - 开玩笑的单元测试 module.export 失败了?
- ms-access - 仅当字段存在时如何更改多个字段的数据类型
- java - 在自动化android webView的情况下如何解决“在W3C模式下无法调用非W3C标准命令”
- python - 在 Python 2 中,如何在没有继承的情况下重用另一个类的方法?
- javascript - Angular 2,从主题观察到的节流时间