0

这就是我包含返回函数的代码的结尾。

MOVW            R1, #0x7368
ADD             R0, PC  ; 
MOVT.W          R1, #0xF
ADD             R1, PC ; 
LDR             R0, [R0] ; 
LDR             R1, [R1] ; 
LDR             R0, [R4,R0]
BLX             _objc_msgSend
MOVW            R1, #0x7DC4
MOV             R2, R8
MOVT.W          R1, #0xF
MOV             R3, R6
ADD             R1, PC ; 
LDR             R1, [R1] ; "
BLX             _objc_msgSend
LDR.W           R8, [SP+0x10+var_10],#4
POP             {R4-R7,PC}

有人可以评论它的作用并解释我如何强制返回指令,我认为它是 POP 总是返回 TRUE!

我发布的代码部分......是一个布尔函数,它进行一些操作,然后返回 TRUE 或 FALSE。

谢谢

4

1 回答 1

2

如果您的编译器遵循 ARM 体系结构的过程调用标准,则返回值将传入R0. 该POP指令恢复其他寄存器并加载PC以返回调用函数,但它不加载R0。如果您希望函数始终返回布尔值 true,那么您需要在加载之前添加一条POP指令R0

于 2012-11-28T19:16:28.167 回答