ARM程序集中的递归打印100

时间:2014-03-14 00:02:50

标签: c assembly recursion arm

我对如何递归实现一个使用ARM程序集打印100(1..2..3..100)的方法感到很困惑。我有C代码来做这个,C非常简单,但组装更多,我不知道如何做到这一点。

请帮帮忙?

谢谢!

print100_recursive_ARM:
push {r4-r11, ip, lr}
CMP r0, #0
BEQ print_zero
SUB r0, r0, #1
BL print100_recursive_ARM
pop {r4-r11, ip, lr}
B print_num

print_num:
print_zero:
constant: .ascii "%d "
Print_ARM:
MOV r1, r0
LDR r0, =constant
BL printf

end:
pop {r4-r11, ip, lr}
BX lr

这不起作用。

1 个答案:

答案 0 :(得分:3)

肮脏的技巧:用C语言编写,用例如gcc -S source.c,并分析编译器是如何做到的(现在在source.s中)。如何调用/返回,如何处理局部变量,通常很复杂。通过这种方式,您可以使用汇编源来学习或修改。