如果您使用的是arm-none-eabi-as汇编器,那么您可能会碰到一个与bne.n指令相关的问题。该指令通常被用于逐字节比较两个寄存器的内容,并在它们不相等时执行跳转。但是,如果你没有正确设置寄存器,就可能会出现意料之外的错误。
以下是一些示例代码来捕捉这个问题:
.section .text .global _start _start: MOV R0, #1 MOV R1, #2 BNE.N next
next: MOV R0, #0x18 MOV R1, #0x20
在这里,BNE.N指令将应该跳转到标记为“next”的地方,但实际上它却未能执行。
解决此问题的最佳方法是使用下面的代码:
.section .text .global _start _start: MOV R0, #1 MOV R1, #2 CMP R0, R1 BNE.N next
next: MOV R0, #0x18 MOV R1, #0x20
这个版本的代码使用了CMP指令来比较寄存器,使得BNE.N指令可以正确跳转。