assembly 0xFFE700DE>0xA的汇编代码比较失败

nzkunb0c  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(73)

我使用下面的代码作为循环条件。

CMP     r5 , #0xA
BGE     Loop

但是当r5中的值很大时,比如FFE700DE,比较失败,是因为它是有符号的值吗?如何比较无符号的值呢?

bttbmeg0

bttbmeg01#

使用BHS指令,该指令是无符号的“高或相同”比较。例如,请参阅this list of ARM condition codes
记住,对于整数寄存器,寄存器中的 value 不能 * 真的 * 是有符号或无符号的,这完全取决于你用来解释值的 instruction,值只是一堆比特。
其他有符号条件包括bgt/blt
无符号的等效值为bhi(高)和blo(低)。
另请参见表in a tutorial / guide,其中列出了所有15个ARM条件的 predicate 和分支(包括AL = always。还有历史上的第16个条件,NV = never,在ARMv 4之后废弃)。

相关问题