b跳转指令
单个标签
.global _start
_start:
mov r0, #0x1
mov r0, #0x2
b next@向后next标签处跳转
mov r0, #0x3
mov r0, #0x4
after:
mov r0, #0x5
mov r0, #0x6
next:
mov r0, #0x7
mov r0, #0x8
b after@向前after标签处跳转
mov r0, #0x9
mov r0, #0xa
可以有多个同名数字标签
.global _start
_start:
mov r0, #0x1
mov r0, #0x2
1:
mov r0, #0x3
mov r0, #0x4
b 1f@ 在同名数字标签中跳转到后面的标签位置
mov r0, #0x5
mov r0, #0x6
loop:
mov r0, #0x7
b 1b@ 在同名数字标签中跳转到前面的标签位置
mov r0, #0x8
mov r0, #0x9
1:
mov r0, #0xa
b loop
bl跳转指令
bl跳转指令在执行的时候,自动将当前指令下一条指令的地址存储在lr寄存器中。
.global _start
_start:
mov r0, #0x1
bl test@ 跳转到test标签位置,同时存储下一条指令(mov r0, #0x2)的地址
mov r0, #0x2
mov r0, #0xa
test:/* 定义一个函数 */
mov pc, lr/* 出栈的处理 */
网友评论