-
-
[求助]请详细讲讲这两段代码的意思,感谢
-
发表于: 2014-12-23 23:20 6748
-
.text:00090F98 var_28 = -0x28
.text:00090F98 var_24 = -0x24
.text:00090F98 var_20 = -0x20
.text:00090F98 var_1C = -0x1C
.text:00090F98 var_18 = -0x18
.text:00090F98 var_14 = -0x14
.text:00090F98
.text:00090F98 PUSH {R4-R6,LR}
.text:00090F9A SUB SP, SP, #0x18
.text:00090F9C MOVS R1, R2
.text:00090F9E MOVS R4, R0
.text:00090FA0 MOVS R6, R3
.text:00090FA2 BL jstringTostring
.text:00090FA6 ADD R5, SP, #0x28+var_24
.text:00090FA8 MOVS R1, R0
.text:00090FAA ADD R2, SP, #0x28+var_14
.text:00090FAC MOVS R0, R5
.text:00090FAE BLX _ZNSsC1EPKcRKSaIcE ; std::string::string(char const*,std::allocator<char> const&)
.text:00090FB2 MOVS R0, R4
.text:00090FB4 MOVS R1, R6
.text:00090FB6 BL jstringTostring
.text:00090FBA MOVS R1, R0
.text:00090FBC ADD R2, SP, #0x28+var_18
.text:00090FBE MOV R0, SP
.text:00090FC0 BLX _ZNSsC1EPKcRKSaIcE ; std::string::string(char const*,std::allocator<char> const&)
.text:00090FC4 LDR R0, [SP,#0x28+var_24]
.text:00090FC6 LDR R1, [SP,#0x28+var_28]
第二段:
.text:00090FCC MOVS R4, R0
.text:00090FCE LDR R0, [SP,#0x28+var_28]
.text:00090FD0 ADD R1, SP, #0x28+var_1C
.text:00090FD2 SUBS R0, #0xC
.text:00090FD4 BLX _ZNSs4_Rep10_M_disposeERKSaIcE ; std::string::_Rep::_M_dispose(std::allocator<char> const&)
.text:00090FD8 LDR R0, [SP,#0x28+var_24]
.text:00090FDA ADD R1, SP, #0x28+var_20
.text:00090FDC SUBS R0, #0xC
.text:00090FDE BLX _ZNSs4_Rep10_M_disposeERKSaIcE ; std::string::_Rep::_M_dispose(std::allocator<char> const&)
.text:00090FE2 ADD SP, SP, #0x18
.text:00090FE4 MOVS R0, R4
.text:00090FE6 POP {R4-R6,PC}
请从开头.text:00090F98 var_28 = -0x28
这些起能稍微详细点讲讲,在学ARM汇编,很多不懂,
特别是几处BL、BLX,很不明白,请分析一下什么意思 ,还请讲讲函数的调用这些内容,不胜感激。
.text:00090F98 var_24 = -0x24
.text:00090F98 var_20 = -0x20
.text:00090F98 var_1C = -0x1C
.text:00090F98 var_18 = -0x18
.text:00090F98 var_14 = -0x14
.text:00090F98
.text:00090F98 PUSH {R4-R6,LR}
.text:00090F9A SUB SP, SP, #0x18
.text:00090F9C MOVS R1, R2
.text:00090F9E MOVS R4, R0
.text:00090FA0 MOVS R6, R3
.text:00090FA2 BL jstringTostring
.text:00090FA6 ADD R5, SP, #0x28+var_24
.text:00090FA8 MOVS R1, R0
.text:00090FAA ADD R2, SP, #0x28+var_14
.text:00090FAC MOVS R0, R5
.text:00090FAE BLX _ZNSsC1EPKcRKSaIcE ; std::string::string(char const*,std::allocator<char> const&)
.text:00090FB2 MOVS R0, R4
.text:00090FB4 MOVS R1, R6
.text:00090FB6 BL jstringTostring
.text:00090FBA MOVS R1, R0
.text:00090FBC ADD R2, SP, #0x28+var_18
.text:00090FBE MOV R0, SP
.text:00090FC0 BLX _ZNSsC1EPKcRKSaIcE ; std::string::string(char const*,std::allocator<char> const&)
.text:00090FC4 LDR R0, [SP,#0x28+var_24]
.text:00090FC6 LDR R1, [SP,#0x28+var_28]
第二段:
.text:00090FCC MOVS R4, R0
.text:00090FCE LDR R0, [SP,#0x28+var_28]
.text:00090FD0 ADD R1, SP, #0x28+var_1C
.text:00090FD2 SUBS R0, #0xC
.text:00090FD4 BLX _ZNSs4_Rep10_M_disposeERKSaIcE ; std::string::_Rep::_M_dispose(std::allocator<char> const&)
.text:00090FD8 LDR R0, [SP,#0x28+var_24]
.text:00090FDA ADD R1, SP, #0x28+var_20
.text:00090FDC SUBS R0, #0xC
.text:00090FDE BLX _ZNSs4_Rep10_M_disposeERKSaIcE ; std::string::_Rep::_M_dispose(std::allocator<char> const&)
.text:00090FE2 ADD SP, SP, #0x18
.text:00090FE4 MOVS R0, R4
.text:00090FE6 POP {R4-R6,PC}
请从开头.text:00090F98 var_28 = -0x28
这些起能稍微详细点讲讲,在学ARM汇编,很多不懂,
特别是几处BL、BLX,很不明白,请分析一下什么意思 ,还请讲讲函数的调用这些内容,不胜感激。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: