[讨论] 请教这里的“b”的意思

xiaoxif   2009-12-2 15:46 楼主
又来麻烦大家了。
学习中,阅读head.S (vivi里的)文件,有这样一个重复使用达14次之多的语句:

1:            b         1b                 @ infinite loop

我这样理解这个语句的意思:无条件跳转到原标号1:。于是进入一个无限循环--infinite loop。

我想请教的问题是:

Q1、 上面的理解对不对?
Q2、 b  1b  中,1后面的那个b,表示什么?【搜寻了两天了,没找到答案】,和标号1:多处出现(按理说多次出现同一标号是不允许的)有什么关系。

谢谢!

[ 本帖最后由 xiaoxif 于 2009-12-2 16:01 编辑 ]
为什么总用3/4号仿宋? 答:大点清楚‘,仿宋是工程图的标准字体。

回复评论 (8)

这个意思是无限循环。。
1: b 1b
1:是标号
b 是跳转
1b:就是1,b表示二进制
处处留心皆学问!
点赞  2009-12-2 16:42
引用: 原帖由 daicheng 于 2009-12-2 16:42 发表
这个意思是无限循环。。
1: b 1b
1:是标号
b 是跳转
1b:就是1,b表示二进制

补充下,b代表branch,在RISC处理器中branch是条件跳转
点赞  2009-12-2 18:07

条件跳转

关注 啥条件?跳转去向?
点赞  2009-12-2 20:45

谢谢二楼、三楼

感谢沙发、板凳上二位热心精炼的指点。
语法本身就是法条的规定,本无需多问为什么,我接受就是了。虽然总觉得这个写法与传统Assembly语言习惯写法相比,新鲜的有些别扭----有所偏离,心里老不踏实。因为:

ARM指令系统说明:B指令有两种常用格式和一个无操作数的特例:  


b      lebelxx    ;跳转到 lebelxx标号处
b      0x1234    ;跳转到绝对地址 0x1234处
b                ;不带操作数,表示跳转到本地址。

那么:既然用第三种表述【B  】就可以表示这种至本地址的跳转(实现上也就是PC数减 x 操作),那为什么非要加上1b,而且要配上 1:那样多次出现、而且首个字符为数字的“不规范”的“标号”?这是否是这个编译/汇编程序的特点,或者说是特定的语法要求,例如在一行里只有一个孤零零的B,容易出错?

一边想。一边写,一会就写了这么多,……可不敢再继续打扰各位了,原谅,如此钻角尖浪费大家的时间。
再次感谢各位!


[ 本帖最后由 xiaoxif 于 2009-12-2 21:38 编辑 ]
为什么总用3/4号仿宋? 答:大点清楚‘,仿宋是工程图的标准字体。
点赞  2009-12-2 21:22

回复 5楼 xiaoxif 的帖子

楼主看的还挺详细啊,一般人只看关键部分,楼主精神值得我们学习!
处处留心皆学问!
点赞  2009-12-3 08:33
引用: 原帖由 xiaoxif 于 2009-12-2 21:22 发表
感谢沙发、板凳上二位热心精炼的指点。
语法本身就是法条的规定,本无需多问为什么,我接受就是了。虽然总觉得这个写法与传统Assembly语言习惯写法相比,新鲜的有些别扭----有所偏离,心里老不踏实。因为:

ARM指 ...

可以结合反汇编看看,源码中的这个地方会生成一条什么样的指令?
点赞  2009-12-3 09:07
楼主很仔细,精神可嘉!!!
点赞  2009-12-3 20:03
学习了。我只会c,arm
点赞  2013-9-11 13:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复