这是常规。任何人都可以解释我需要修改以使其返回TRUE
__text:00086494 ; =============== S U B R O U T I N E =======================================
__text:00086494
__text:00086494 ; BLAH - (char)free
__text:00086494
__text:00086494 ; char __cdecl -[BLAH free](struct BLAH *self, SEL)
__text:00086494 __BLAH_free_ ; DATA XREF: __objc_const:00BC0CECo
__text:00086494 MOV R1, #(_OBJC_IVAR_$_BLAH._free - 0x864A0) ; char _free;
__text:0008649C ADD R1, PC ; char _free;
__text:0008649E LDR R1, [R1] ; char _free;
__text:000864A0 LDRSB R0, [R0,R1]
__text:000864A2 BX LR
__text:000864A2 ; End of function -[BLAH free]
答案 0 :(得分:4)
几乎任何ARM ABI都传递r0中的返回值,这段代码看起来也不例外。在这种情况下,ldrsb r0, [r0, r1]
使用r0中的self
指针和r1中的计算偏移量加载返回值。由于这没有副作用或其他复杂行为需要考虑,您可以简单地替换该指令,具体取决于TRUE的实际数值应该是多少,例如mov r0, #1
,mvn r0, #0
等