我试图通过反编译我自己的 Objective-C 代码来了解它是如何工作的。这是反编译的指令:
var_8= -8
var_4= -4
SUB SP, SP, #8
MOVS R2, #1
STR R0, [SP,#8+var_4]
STR R1, [SP,#8+var_8]
MOV R0, R2
ADD SP, SP, #8
BX LR
根据我的理解(如果我错了请纠正我),按行:
SP=SP-8
Move 1 to R2
Store R0 into SP+8+var_4
Store R1 into SP+8+var_8
Move R2 into R0
SP=SP+8
Next Function
和实际代码:
%hook SomeClass
- (int)somemethod {
return 1;
}
%end
现在,我不明白为什么它需要STR R0, [SP,#8+var_4]和STR R1, [SP,#8+var_8]对,因为我看不到它的目的。如果我要return 0,简单地更改为MOVS R2, #1toMOVS R2, #0就可以了,不是吗?但这不起作用。