在启动脚本里面经常出现1b 这个东西,找了很久一直不知道是什么,下面帖子讲的很好,于是转载了
转载地址:http://blog.chinaunix.net/uid-20551291-id-1926997.html
head.S中初始化内存有以下一段程序:
ENTRY(memsetup)
@ initialise the static memory
@ set memory control registers
mov r1, #MEM_CTL_BASE
adrl r2, mem_cfg_val
add r3, r1, #52
1: ldr r4, [r2], #4 <----又跳到这
str r4, [r1], #4
cmp r1, r3
bne 1b
上面的1b标号在head.S中找了半天硬是找不到,把整个vivi都找了一遍还是没有。查了半天原来这个1是局部标号。
当标号为0~9的数字时为局部标号,局部标号可以重复出现,使用方法如下:
标号f: 表示往前跳,顺序执行的话是没有运行过的程序 ,front的意思。
标号b: 表示跳转到以前执行过的语句,第一个1标号处 ,back的意思。
head.S中还有很多这样的语句也不难理解
1: b 1b @ infinite loop 无限循环
只要想着 b 就是back,回去的意思,回到以前那个标号1处,这里即当前标号,即永远循环执行这个语句,相当于while(1)。