源码: - (void)Test123:(int)nIn{ // nIn var_18 = -0x18 int m = 5; // var_1C = -0x1C TestViewController *lockVc = [[TestViewController alloc]init]; // var_20 = -0x20 int mm = m + 9 + nIn; // var_24 = -0x24 } - (void)applicationDidBecomeActive:(UIApplication *)application { [self Test123:32]; }
__text:0000879C -_SPAppDelegate_Test123__ ; DATA XREF: __objc_const:00010658o __text:0000879C __text:0000879C var_34 = -0x34 __text:0000879C addressOflockVc_var_30= -0x30 __text:0000879C nameOfInit_var_2C= -0x2C __text:0000879C addressOf__imp__objc_msgSend_var_28= -0x28 __text:0000879C mm_var_24 = -0x24 __text:0000879C lockVc_var_20 = -0x20 __text:0000879C m_var_1C = -0x1C __text:0000879C nIn_var_18 = -0x18 __text:0000879C seletor_var_14 = -0x14 __text:0000879C self_var_10 = -0x10 __text:0000879C __text:0000879C PUSH {R4-R7,LR} __text:0000879E ADD R7, SP, #0xC ; 构造新的栈帧 __text:000087A0 SUB SP, SP, #0x28 ; 在栈上分配临时变量需要的内存 __text:000087A2 MOVS R3, 0 __text:000087A8 ADD.W R9, SP, #0x34+lockVc_var_20 __text:000087AC MOV R12, 0x78D0 ; <suspicious> __text:000087B4 ADD R12, PC __text:000087B6 LDR.W R12, [R12] ; 计算函数__imp__objc_msgSend的地址 __text:000087BA MOV LR, 0x895E ; <suspicious> __text:000087C2 ADD LR, PC __text:000087C4 MOV R4, 0x891C ; <suspicious> __text:000087CC ADD R4, PC __text:000087CE MOV R5, 0x8B2E ; <suspicious> __text:000087D6 ADD R5, PC __text:000087D8 MOVS R6, 5 __text:000087DE STR R0, [SP,#0x34+self_var_10] ; 保存self指针,函数Test123的实例类指针 __text:000087E0 STR R1, [SP,#0x34+seletor_var_14] ; 保存selector,这里是"Test123:" __text:000087E2 STR R2, [SP,#0x34+nIn_var_18] ; R2保存参数nIn __text:000087E4 STR R6, [SP,#0x34+m_var_1C] ; int m = 5; __text:000087E6 LDR R0, [R5] __text:000087E8 LDR R1, [R4]
__text:000087EA STR.W R12, [SP,#0x34+addressOf__imp__objc_msgSend_var_28] ; 保存函数__imp__objc_msgSend的地址 __text:000087EE STR.W LR, [SP,#0x34+nameOfInit_var_2C] ; 保存函数名"init" __text:000087F2 STR.W R9, [SP,#0x34+addressOflockVc_var_30] ; 保存变量lockVc的地址 __text:000087F6 STR R3, [SP,#0x34+var_34] __text:000087F8 BLX R12 ; __imp__objc_msgSend ; [TestViewController alloc] __text:000087F8 __text:000087FA LDR R1, [SP,#0x34+nameOfInit_var_2C] __text:000087FC LDR R1, [R1] ; 取出init函数名 __text:000087FE LDR R2, [SP,#0x34+addressOf__imp__objc_msgSend_var_28] __text:00008800 BLX R2 ; 调用init函数 __text:00008800 __text:00008802 STR R0, [SP,#0x34+lockVc_var_20] ; 保存结果到lockVc中 __text:00008804 LDR R0, [SP,#0x34+m_var_1C] ; 取出m的值 __text:00008806 ADDS R0, #9 ; m+9 __text:00008808 LDR R1, [SP,#0x34+nIn_var_18] ; 取出nIn __text:0000880A ADD R0, R1 ; int mm = m + 9 + nIn; __text:0000880C STR R0, [SP,#0x34+mm_var_24] __text:0000880E LDR R0, [SP,#0x34+addressOflockVc_var_30] ; 取出变量lockVc的地址,后面的函数_objc_storeStrong需要 __text:00008810 LDR R1, [SP,#0x34+var_34] ; var_34保存_objc_storeStrong的第二个参数 __text:00008812 BLX _objc_storeStrong __text:00008812 __text:00008816 ADD SP, SP, #0x28 ; 清除栈上分配的内存 __text:00008818 POP {R4-R7,PC} __text:00008818 __text:00008818 ; End of function -_SPAppDelegate_Test123__