下面一段程序摘自《嵌入式Linux应用开发完全手册》page-95
memsetup:
@ 设置存储控制器以便使用SDRAM等外设
mov r1, #MEM_CTL_BASE @ 存储控制器的13个寄存器的开始地址
adrl r2, mem_cfg_val @ 这13个值的起始存储地址
add r3, r1, #52 @ 13*4 = 54
1:
ldr r4, [r2], #4 @ 读取设置值,并让r2加4
str r4, [r1], #4 @ 将此值写入寄存器,并让r1加4
cmp r1, r3 @ 判断是否设置完所有13个寄存器
bne 1b @ 若没有写成,继续
mov pc, lr @ 返回
bne 1b什么意思呢?一开始老是在找1b的标号处,找了些许时间也没有发现哪里有这个标号。
后来查找相关资料发现,原来0~9的数字为局部标签。局部标签可以重复使用,

本文详细解释了汇编指令`bne`在嵌入式Linux中用于存储控制器配置时的作用,通过示例说明了局部标签1b如何表示循环,并探讨了局部标签的重复使用规则,如`xf`和`xb`。最后提供了一个无限循环的例子,将`b 1b`与`while(1)`等效比较。
最低0.47元/天 解锁文章
990

被折叠的 条评论
为什么被折叠?



