Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497030
  • 博文数量: 78
  • 博客积分: 5131
  • 博客等级: 大校
  • 技术积分: 1468
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-17 16:20
文章分类
文章存档

2012年(1)

2011年(29)

2010年(6)

2009年(24)

2008年(18)

我的朋友

分类: LINUX

2010-10-25 10:29:48

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: 1b  @ infinite loop 无限循环

只要想着 b 就是back,回去的意思,回到以前那个标号1处,这里即当前标号,即永远循环执行这个语句,相当于while(1)。

阅读(3314) | 评论(0) | 转发(1) |
0

上一篇:BCD码计算

下一篇:AT91SAM

给主人留下些什么吧!~~