Chinaunix首页 | 论坛 | 博客
  • 博客访问: 247373
  • 博文数量: 37
  • 博客积分: 837
  • 博客等级: 准尉
  • 技术积分: 566
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-26 17:36
文章分类

全部博文(37)

文章存档

2012年(31)

2011年(6)

我的朋友

分类: 嵌入式

2012-04-08 09:59:02

转自:http://blog.21ic.com/user1/6121/archives/2009/65558.html

在44b0中bootloader的初始化程序中,以下看不懂:

0                                                  ;这是什么意思
 ldmia r0!, {r4-r7}
 stmia r2!, {r4-r7}
 cmp  r2, r3
 bcc  %B0                                      ;这又是什么意思,于是在google,baidu查找,没有相关说明,最后只好查书,功夫不负有心人,现解释如下:

这里是涉及局部标注的跳转,先要理解局部标注的定义,

一个标注的定义必须在一行的顶格书写。汇编器把所有不顶格的语句当成指令、保留字或宏。
汇编器把格式为:的标注当成本地标注
其中是一个0~99的整数
是一个文本中可选的名字。
本地标注由ROUT关键字限定范围。
通过%{F|B}{|A|T}{}来引用一个本地标注。额外的前缀字母告诉如何去查找这个标注:
1.如果指定为前缀F,则汇编器向前(Forward)查找;
2.如果指定了前缀B,则汇编器向后(Backward)查找,否则汇编器先向后再向前查找。
3.如果指定了前缀T,则汇编器只查找当前的宏;
4.如果指定了前缀A,则汇编器查找所有级别的宏,否则汇编器先查找当前的宏,再查找更高级别的嵌套层的宏。

现在再解释一下上面这段程序:

0                                              ;这就是本地标注,格式为:
 ldmia r0!, {r4-r7}
 stmia r2!, {r4-r7}
 cmp  r2, r3
 bcc  %B0                                ;这里向前跳转,其中%是引用本地标注,格式为:%{F|B}{|A|T}{}来引用一个本地标注.

可以参考相关书籍《嵌入式系统开发》附录A.4.2。

阅读(2850) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~