树莓派4B裸机启动代码中arm64汇编`b 1b`含义解析
关于ARM裸机汇编中
b 1b指令的解释 1b既不是物理地址,也不是普通标签,它是GNU汇编器(GAS)特有的本地标签引用语法,常见于树莓派这类使用GAS编译的裸机代码中:
- 以数字开头的
1:是本地标签,这类标签允许在代码中重复定义,适合小范围的跳转场景; - 后缀
b是backward的缩写,表示向前(往代码起始方向)查找最近的同名本地标签;对应的如果是1f,则是forward,代表向后查找最近的1:标签。
举个你代码里大概率存在的对应场景:
1: // 示例:等待某个硬件寄存器就绪 ldr r0, =0x3F00B210 // 树莓派4B的某个外设寄存器地址 ldr r1, [r0] tst r1, #0x10 bne 1b // 未就绪则跳回1:处循环
这里b 1b就是跳转到前面的1:标签,实现循环等待逻辑,这在裸机启动代码里很常见(比如等待MMU配置完成、或者外设初始化就绪)。
你之前没见过这种写法,可能是因为接触的是ARM官方汇编器(armasm),它的本地标签语法和GAS不同,而树莓派裸机开发通常用GCC配套的GAS来编译汇编代码。
内容的提问来源于stack exchange,提问作者DanielSun
相关产品推荐
相关产品推荐

