ARM汇编中BL指令不能实现跳转

hhhhjjaa hhhhjjaa 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
USR_STACK_LEGTH EQU 64
SVC_STACK_LEGTH EQU 0
FIQ_STACK_LEGTH EQU 16
IRQ_STACK_LEGTH EQU 64
ABT_STACK_LEGTH EQU 0
UND_STACK_LEGTH EQU 0
AREA Example5,CODE,READONLY
ENTRY
CODE32
START MOV R0,#0
MOV R1,#1
MOV R2,#2
MOV R3,#3
MOV R4,#4
MOV R5,#5
MOV R6,#6
MOV R7,#7
MOV R8,#8
MOV R9,#9
MOV R10,#10
MOV R11,#11
MOV R12,#12

BL InitStack
MRS R0,CPSR
BIC R0,R0,#80
MSR CPSR_cxsf,R0

MSR CPSR_c,#0xd0
MRS R0,CPSR

MSR CPSR_c,#0xdf
MRS R0,CPSR

HALT B HALT

InitStack MOV R0,LR
MSR CPSR_c,#0xd3
LDR SP,StackSvc

MSR CPSR_c,#0xd2
LDR SP,StackIrq

MSR CPSR_c,#0xd1
LDR SP,StackFiq

MSR CPSR_c,#0xd7
LDR SP,StackAbt

MSR CPSR_c,#0xdb
LDR SP,StackUnd

MSR CPSR_c,#0xdf
LDR SP,StackUsr

MOV PC,R0

StackUsr DCD UsrStackSpace+(USR_STACK_LEGTH-1)*4
StackSvc DCD SvcStackSpace+(SVC_STACK_LEGTH-1)*4
StackIrq DCD IrqStackSpace+(IRQ_STACK_LEGTH-1)*4
StackFiq DCD FiqStackSpace+(FIQ_STACK_LEGTH-1)*4
StackAbt DCD AbtStackSpace+(ABT_STACK_LEGTH-1)*4
StackUnd DCD UndStackSpace+(UND_STACK_LEGTH-1)*4

AREA MyStacks,DATA,NOINIT,ALIGN=2
UsrStackSpace SPACE USR_STACK_LEGTH*4
SvcStackSpace SPACE SVC_STACK_LEGTH*4
IrqStackSpace SPACE IRQ_STACK_LEGTH*4
FiqStackSpace SPACE FIQ_STACK_LEGTH*4
AbtStackSpace SPACE ABT_STACK_LEGTH*4
UndStackSpace SPACE UND_STACK_LEGTH*4

END

为啥BL不能实现跳转呢?而用B的话就可以?
期待各位大侠回答。
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
hhhhjjaa
汇编语言 21,500 成员 41,619 内容