寻求不影响标志位的ARM Thumb-1寄存器清零单指令
ARM Thumb-1 清零寄存器且不改变标志位的指令
直接使用不带后缀S的MOV指令,将立即数0加载到目标寄存器:
MOV R1, #0
说明:
- Thumb-1架构中,
MOV Rd, #imm8指令(当立即数为0时属于合法范围)不会更新CPSR中的标志位(N、Z、C、V),完全符合需求。 - 你之前考虑的
MOVS、EORS、SUBS都是带状态更新的指令,后缀S会强制修改标志位,而去掉S的普通MOV指令则不会。
如果需要清零的是低寄存器(R0-R7),也可以利用MOV Rd, Rm指令复制已为0的寄存器,但这种方式依赖其他寄存器的状态,不如直接MOV Rd, #0通用。
内容的提问来源于stack exchange,提问作者johnsondavies
相关产品推荐
相关产品推荐

