单片机
返回首页

ARM状态和Thumb状态间的切换

2024-11-18 来源:cnblogs

带状态切换的跳转指令:BX

     汇编格式: BX{} Rm
     功      能: BX 指令跳转到指令中所指定的目标地址,并实现状态的切换。Rm 是一个表达目标地址的寄存器。当Rm 中的最低位Rm[0] 为 1 时,强制程序从ARM 指令状态跳到Thumb 指令状态;当 Rm 中的最低位Rm[0]为0 时,强制程序从Thumb 指令状态跳到ARM 指令状态。

BX 指令示例
     CODE32                                    ;ARM 程序段,32 位编码
     arm1   ADR R0,thumb1+1           ;伪指令,把语句标号thumb1 所在地址  
                                           ;赋给R0 ,末位R0[0] 置1 ,要跳转THUMB 指令集 
 
                                                     ;THUMB 指令集
      MOV LR,PC                             ;设置返回地址
      BX R0                                        ;跳转
      ADD R1,R2,#2                          ;返回地址处,第4 条指令
      CODE16                                    ;THUMB 程序段, 16 位编码
      thumb1  ADD R1,R3,#1           ;THUMB 程序
          …
      BX LR                                        ;跳转到返回地址处,执行第4 条指令

    分析:该例说明了带状态切换的子程序调用和返回的结构,ARM 程序段执行MOV LR,PC 语句时将返回地址保存到了LR 寄存器中。执行到BX 语句时 ,PC 指向下一个要执行的语句,此时PC(R15) 中的值为下一个语句ADD 指令所在的地址,并根据R0 中的bit[0] 实现了由ARM 状态切换到Thumb 状态。从而调用Thumb 子程序,子程序调用完后使用BX LR 指令,从而实现了子程序调用的返回并切换到ARM 状态。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 永不缺相启动运行的电动机控制电路

  • IGBT模块通过控制门极阻断过电流

  • 开关电源的基本组成及工作原理

  • 基于CA3193的热电偶放大器电路

  • 基于TDA1554的立体声放大器电路

    相关电子头条文章