为了我的工作,我需要反向解析这段代码(ARM9)正在做什么。我是一个 Java 开发者,真的不理解这段与单个函数有关的代码。
当然,我之所以要求助是因为原始代码不再可用。是否有人可以帮助我使用任何高级语言中的小算法了解此代码正在执行的操作?那将是很好的。我已经尝试了很多小时,但没有结果。
sub_FFFF7B38
PUSH {LR}
ADDS R2, R0, #0
LDRB R3, [R2]
CMP R3, #0
BEQ loc_FFFF7B52
SUBS R1, #1
BCC loc_FFFF7B52
loc_FFFF7B46:
ADDS R0, #1
LDRB R3, [R0]
CMP R3, #0
BEQ loc_FFFF7B52
SUBS R1, #1
BCS loc_FFFF7B46
loc_FFFF7B52:
SUBS R0, R0, R2
POP {R1}
ADDS R2,R0,#0
在其被读取之前覆盖了R2
。R2
只保存了R0
的原始值,它不是索引,所以应该用p0
而不是R2
。 此外,CC
是“清除进位”条件,而不是设置进位(见后面的CS
)。 - CB BaileyMOV PC,R14
就可以了。 - Curd