主题 : 为什么ARM 的BL 指令跳转不了? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
楼主  发表于: 2009-04-14 20:56

 为什么ARM 的BL 指令跳转不了?

AREA CMDCHECK,CODE,READONLY

ENTRY
CODE32
START
mov r0,#10
mov r1,#3
bl NEXT

STOP
mov r0,#0x18
ldr r1,=0x2006
swi 0xab

NEXT
add r0,r0,r1
mov pc,lr
END
这段程序本应在“bl NEXT”处跳转,但我软件调试(ADS1.2内自带的AXD Debugger)的时候发现程序没有跳转到NEXT处,而是往下执行了,也就是直接运行到STOP处。。。
我把"bl" 改成"b",程序就可以跳转了。。。
为什么"bl"不能跳转呢?
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
1楼  发表于: 2009-04-15 03:00
问题解决了,犯了个低级错误。。。
调试中STEP是不进子程序的。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2009-04-15 12:41
SETP也分种类的,step in是进子程序的
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."