如何检查寄存器是否大于0?
例如:我要检查R2是否大于0
这就是我所做的:
添加R2,R2,#0
但这不会检查R2是否大于0,似乎将R2的值设置为0
答案 0 :(得分:0)
检查寄存器是否大于零是一个两步过程。
首先,您需要设置条件代码寄存器,然后使用BR指令在条件上跳转。
ADD R2, R2, 0 ; Store R2 in R2, this has no effect other than setting CC register.
BRNZ LESS_THAN_OR_ZERO ; Branch if R2 is <= 0, based on the CC register set in last instruction
[statements here] ; if we are here then R2 > 0
BR DONE ; optional if we don't want to execute the next section of code. unconditional branch to done
LESS_THAN_OR_ZERO
[more statements here] ; if we are here then R2 <= 0
DONE
[more statements here]
有关CC寄存器的更多信息,它会根据写入寄存器的最后一条指令以N,Z或P更新,这意味着LD,LEA,LDI,LDR,ADD和AND,并且NOT将更新CC寄存器自动。
查看ISA文档中的BR指令。