【发布时间】:2022-01-12 18:31:47
【问题描述】:
如何完成程序,如下代码在 __mainCode 和 funcOne 子程序之间不断循环?
__mainCode PROC
MOV R0, 5 ;0x0800 0008
LDR R1, =0xA ;0x0800 000C
BL funcOne ;0x0800 0010
POP {R3} ;0x0800 0014
ENDP ; end of function
funcOne PROC
MOV R2, #11 ;0x0800 0018
PUSH {R2} ;0x0800 001c
BX LR ;0x0800 001e
ENDP
ALIGN ; fill rest of bytes with 0s
END
【问题讨论】:
-
您需要某种形式的返回或退出系统调用。请注意,您的
funcOne会使堆栈不平衡,这不是一个好主意。 -
不平衡堆栈是什么意思?
-
您在
funcOne中有PUSH,但在main中有POP。虽然它在这种情况下有效,但不建议这样做。 -
是的,我正在从主子程序调用 funcOne。 funcOne 返回值我 PUSH 到堆栈,一旦返回到主函数我 POP 那个返回值。这种方法有问题吗?