我正在手工反编译ARMv7二进制文件,并且遇到了一些我不完全理解的指令。看起来像这样:
VLDR S15, [R3] VCMPE.F32 S15, #0.0 VMRS APSR_nzcv, FPSCR BMI .next
R3在此之前指向浮点数组中的一个条目。我了解它正在将浮点数与0.0F进行比较,但我无法确定它还在做什么。
感谢您的帮助!
如果[R3]与0.0f的比较为负,则控制跳至.next-否则,它继续进行。
[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
请参阅文档: