我使用下面的代码作为循环条件。
CMP r5 , #0xA BGE Loop
但是当r5中的值很大时,比如FFE700DE,比较失败,是因为它是有符号的值吗?如何比较无符号的值呢?
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之后废弃)。
BHS
bgt
blt
bhi
blo
AL
NV
1条答案
按热度按时间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之后废弃)。