ARM 汇编指令:(六) B 跳转指令

这篇具有很好参考价值的文章主要介绍了ARM 汇编指令:(六) B 跳转指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.B 和 BL        

 1.B/BL指令的语法格式

 2.示例解析


一.B 和 BL        

        跳转指令 B 使程序跳转到指定的地址执行程序。指令 BL 将下一条指令的地址复制到 R14(即返回地址连接寄存器 LR)寄存器中,然后跳转到指定地址运行程序。

 1.B/BL指令的语法格式

B{L}{<cond>} <target_address>

2.示例解析

① 程序跳转到 LABLE 标号处。

B LABLE ;
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
LABLE:  //pc会直接跳到这里执行
SUB R1,R2,#8

② 跳转到绝对地址 0x7890处。

B 0x7890

③ 跳转到子程序 func 处执行,同时将当前 PC 值保存到 LR 中。

BL func

④ 条件跳转:当 CPSR 寄存器中的 C 条件标志位为 1 时,程序跳转到标号 LABLE 处执行。

BCC LABLE ;
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
LABLE:  //pc会直接跳到这里执行
SUB R1,R2,#8

⑤ 通过跳转指令建立一个无限循环。

LOOP:
ADD R1,R2,#4
ADD R3,R2,#8
SUB R3,R3,R1
B LOOP

⑥ 通过使用跳转使程序体循环 10 次。

MOV R0,#10
LOOP:
SUBS R0,#1
BNE LOOP

这里大家要注意,我要啰嗦一句:能够影响指令条件码的是CRSP的那几位,有符号减法,也会影响到CRSP,所以这里跳转指令B的条件码是被subs的结果所影响。

⑦ 条件子程序调用示例。

…
CMP R0,#5 ;如果 R0<5
BLLT SUB1 ;则调用
BLGE SUB2 ;否则调用 SUB2

下一页:ARM 汇编指令:(七) STM/LDM多寄存器加载/多存储指令文章来源地址https://www.toymoban.com/news/detail-846444.html

到了这里,关于ARM 汇编指令:(六) B 跳转指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ARM 常见汇编指令学习 5 -- arm64汇编指令 wzr 和 xzr】

    上篇文章:ARM 常见汇编指令学习 4 – ARM64 比较指令 cbnz 与 b.ne 区别 下篇文章:ARM 常见汇编指令学习 6 - bic(位清除), orr(位或), eor(异或) ARMv8 在硬件层名引入了一个新的 zero 寄存器 : XZR (64-bits), WZR (32-bits)。比如要将某一变量赋值为0x0, 由于ARM不允许直接操作内存单元上的数据

    2024年02月15日
    浏览(79)
  • 【ARM系列】ARM常用汇编指令

    在调试芯片启动代码或者分析ARM core运行流程的过程中,尝尝需要对照软件代码的反汇编文件进行分析,因此有必要掌握一些常用的arm汇编指令。 指令格式:MOV{条件}{S} 目的寄存器,源操作数 指令含义:将源操作数赋值给目的寄存器。源操作数可以是寄存器,立即数或带移位

    2024年02月04日
    浏览(38)
  • ARM汇编 : 汇编指令,伪指令,汇编程序格式

    计算机的指令集一般可分为4种: 复杂指令集(CISC) 精简指令集(RISC) 显式并行指令集(EPIC) 超长指令字指令集(VLIW) ARM指令集属于RISC,RISC相对于CISC指令集,主要有以下特点: ●Load/Store架构,CPU不能直接处理内存中的数据,要先将内存中的数据Load(加载)到寄存器中

    2024年02月12日
    浏览(32)
  • 【ARM64 常见汇编指令学习 12 -- ARM 汇编函数 的学习】

    上篇文章:ARM64 常见汇编指令学习 11 – ARM 汇编宏 .macro 的学习 下篇文章:ARM64 常见汇编指令学习 13 – ARM 汇编 ORG 伪指令学习 ARM汇编中的函数定义并不像高级语言那样有特定的语法,但通常可以通过 标签(label) 和 子程序调用指令 (如BL,BLX) 来实现类似于函数的功能。 例如

    2024年02月14日
    浏览(43)
  • 【ARM64 常见汇编指令学习 14 -- ARM 汇编 .balign,.balignw,.balign 伪指令学习】

    上篇文章:ARM64 常见汇编指令学习 13 – ARM 汇编 ORG 伪指令学习 下篇文章:ARM64 常见汇编指令学习 15 – ARM 标志位的学习 .balignl 是一个伪操作符,伪操作符的意思就是机器码里,并没有一个汇编指令与其对应,是编译器来实现其功能的。. balignl 是 .balign 的变体。 .balignl 完整

    2024年02月14日
    浏览(40)
  • 【ARM64 常见汇编指令学习 16 -- ARM64 SMC 指令】

    上篇文章:ARM64 常见汇编指令学习 15 – ARM64 标志位的学习 下篇文章:ARM64 常见汇编指令学习 17 – ARM64 BFI 指令 在ARMv8架构中,同步异常主要包括以下几种: Undefined Instruction :未定义指令异常,当处理器尝试执行一条未定义的指令时会触发。 Supervisor Call (SVC) :这是一种特殊

    2024年02月13日
    浏览(44)
  • ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习

    下篇文章:ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章:ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL 在 ARM 汇编中,“ .macro ” 是用来定义一个宏的指令。宏可以看作是一个可以在汇编程序中重用的代码段。当调用宏时,汇编器会将宏的内容插入到调

    2024年02月14日
    浏览(43)
  • ARM 汇编指令:(五)CMP指令

    目录 1.CMP比较指令 2.指令条件码 cond CMP指令是计算机指令集中的一种比较指令,用于比较两个操作数的大小关系或相等性,并根据比较结果设置或更新条件码寄存器(或程序状态字)的标志位。 指令格式:CMP  第一操作寄存器  第二操作数 第一操作寄存器:参与比较的第一

    2024年04月13日
    浏览(56)
  • ARM 汇编比较指令-条件执行指令

    比较指令用来比较两个数大小,或者是否相等,比较指令的运算结果会影响CPSR寄存器的NZC、V标识位,具体的标志位可以参考前面的CPSR寄存器介绍,比较指令的格式如下/ CMP {cond} Rn, operand2 比较两个数大小 CMN {cond}Rn, operand2 取负比较  比较指令的使用示例及说明如下。

    2024年02月03日
    浏览(48)
  • ARM底层汇编基础指令

    伪操作 不参与程序执行,但是用于告诉编译器程序怎么编译 .text .global .end .if .else .endif .data 汇编指令 编译器将一条汇编指令编译成一条机器码,在内存里一条指令占4字节内存,一条指令可以实现一个特定的功能 伪指令 不是指令,看起来像是一条指令,可以实现和指令类似

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包