不了解此ARM代码段

问题描述 投票:0回答:1

我正在手工反编译ARMv7二进制文件,并且遇到了一些我不完全理解的指令。看起来像这样:

VLDR        S15, [R3]
VCMPE.F32   S15, #0.0
VMRS        APSR_nzcv, FPSCR
BMI         .next

R3在此之前指向浮点数组中的一个条目。我了解它正在将浮点数与0.0F进行比较,但我无法确定它还在做什么。

感谢您的帮助!

c++ arm decompiling
1个回答
0
投票

如果[R3]0.0f的比较为负,则控制跳至.next-否则,它继续进行。

请参阅每条指令后的注释:

VLDR        S15, [R3]           ; load [R3] to S15
VCMPE.F32   S15, #0.0           ; compare s15 with 0.0F
VMRS        APSR_nzcv, FPSCR    ; move FP flags to ARM core flags [N,Z,C,V]
BMI         .next               ; branch if result is negative i.e. N=1

请参阅文档:

© www.soinside.com 2019 - 2024. All rights reserved.