C ARM组件中的递归以打印100

C ARM组件中的递归以打印100,c,assembly,recursion,arm,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: prin

对于如何使用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

这是行不通的。

肮脏的把戏:用C编写,用gcc-S source.C编译,然后分析编译器现在是如何在source.S中完成的。如何调用/返回,如何处理局部变量,通常是复杂的。通过这种方式,您可以研究或修改正在工作的汇编程序源。

我认为您实际上应该尝试这种方法,而不是让别人为您完成全部工作。您希望输出的格式是什么?你能制作一个只输出0的ARM组装程序吗?你能做一个递归程序,输出一元数的数字吗?数字3被打印为111?是什么阻止您执行十进制操作?当你在做这些事情时,你应该能够问一个更具体的问题并展示你的代码。另外,有很多不同的ARM处理器,所以你想用哪一个?我只知道它是ARM组装。。我不知道具体情况,因为我们从未真正被告知。。因为我不知道除了手臂装配之外还有什么。。我正在使用raspberrypi模拟器,但无法真正复制我所拥有的内容:/我唯一希望它做的是递归打印1 2 3 4 5到100。。。我有C语言,但是翻译它太难了。既然你有C语言,如果可能的话,使用编译器生成汇编输出,或者在调试器中查看代码。