这是我的代码的结尾,我的东西包含return函数。
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}
有人可以评论它做了什么,并解释我如何强制返回指令,我认为它总是返回TRUE!
我提出的代码部分是一个布尔函数,它进行一些操作而不是返回TRUE或FALSE。
由于
答案 0 :(得分:2)
如果您的编译器遵循ARM体系结构的过程调用标准,那么返回值将在R0
中传递。 POP
指令恢复其他寄存器并加载PC
以返回调用函数,但不加载R0
。如果您希望函数始终返回布尔值true,则需要在加载POP
的{{1}}之前添加指令。