ARM 与 Thumb 寄存器对应关系

  • PC寄存器: ARM状态为R15,Thumb状态为PC
  • LR寄存器: ARM状态为R14,Thumb状态为LR
  • SP寄存器: ARM状态为R13,Thumb状态为SP
  • IP寄存器: ARM状态为R12,Thumb状态为IP
  • FP寄存器: ARM状态为R11,Thumb状态为FP

其他对应关系一一相同

ARM 与 Thumb 指令集

指令格式:

{}{S}{.W|.N} ,{,}

其中

  • opcode为助记符
  • cond为条件
  • S指定其是否影响CPSR寄存器的值(也就是程序状态字)
  • .W与.N指定指令宽带。(一个指定32,一个指定16)
  • Rd 目的寄存器
  • Rn 第一个操作数寄存器
  • operand2为第二个操作数

跳转指令

B 跳转指令

格式:B{cond} label

BL带链接的跳转指令

格式:BL{cond} label

当条件满足时,会将当前指令的下一条指令保存到R14(LR)寄存器中,然后跳转到label中。这通常用于调用子程序,在子程序的尾部,通过 MOV PC,LR 返回

BX 带状态切换的跳转指令

格式:BX{cond} Rm

当执行BX指令时,如果条件cond满足,则处理器会检查Rm的为[0]是否为1,如果为1,这将CSPR寄存器的T置1,并将目标代码解释为Thumb代码来执行。为0的话,复位 CSPR寄存器的T。并将目标代码解释为ARM代码来执行。

eg:

.code 32
ADR R0,thumbcode+1
BX R0 @跳转到thmbcode,并将处理器切换为thumb模式
thumbcode:
.code 16
...

BLX带链接与状态切换的跳转指令

格式:BLX{cond} Rm

存储器访问指令

LDR

格式:

LDR{type}{cond} Rd,label

LDRD{cond} Rd,Rd2,label

type指定了操作的数据大小

用于从存储器中加载数据到寄存器。

LDRD 一次加载双字的数据,将数据加载到Rd,Rd2中

STR

格式:

STR{type}{cond} Rd,label

STRD{cond} Rd,Rd2,label

用于储存数据到指定的存储单元

LDM

格式:

LDM{addr_mode}{cond} Rn{!},reglist

其中 ! 为可选,如果有,则将最终地址回写到Rn中

该指令从指定的存储单元,加载数据到寄存器列表中

eg:

LDMIA R0!,{R1-R3} @依次加载R0地址处的数据到R1,R2,R3寄存器中

STM

格式:

STM{addr_mode}{cond} Rn{!},reglist

其中 ! 为可选,如果有,则将最终地址回写到Rn中

将寄存器列表中的数据存储到指定存储单元

PUSH

POP

SWP

格式:

SWP{B}{cond} Rd,Rm,[Rn]

Rd:为要从存储器加载数据的寄存器

Rm:为写入数据到存储器的寄存器

Rn:为存储器地址

如果 Rd 与 Rm 相同,则可实现寄存器与存储器的交换

数据处理指令

ARM汇编语言基础的更多相关文章

  1. Android ARM汇编语言

    简介 ARM是Advanced RISC Machine的首字母缩写,它可以称之为一家嵌入式处理器的提供商,也可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集. 原生程序与ARM汇编语 ...

  2. ARM汇编语言

    ---恢复内容开始--- arm汇编语言 汇编语言是一种程序设计语言,arm处理器是一种16/32位的嵌入式RISC微处理器.一开始我把这混为一谈了.ARM汇编的特点:汇编语言,又叫助记符语言. 1) ...

  3. GNU ARM 汇编基础

    ARM GNU汇编基础 0 前言 全文补充提醒: 笔者在阅读ARM官方文档及查阅实际的u-boot源码中的汇编代码后,发现了一些不同于ARM官方文档中的汇编语法,查阅相关资料后,才发现主要由于汇编器的 ...

  4. 【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  5. 【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  6. Intel汇编语言程序设计学习-第三章 汇编语言基础-上

    汇编语言基础 3.1  汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov  eax,5  ;5送EAX寄存器 add   ...

  7. 1.ARM的基础知识

    ARM简述 ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权.ARM技术具有很高的性能和功效,因而容易被厂商接受.同时,合作伙伴的增多,可获得更多的第三方工具.制造和软件支持,这又会使整个系统 ...

  8. HLA高级汇编语言基础

    HLA高级汇编语言环境的搭建与设置 我的操作系统:WINDOWS7 需要下载的东西:MASM32:http://www.masm32.com/masmdl.htm  HLA:http://webste ...

  9. linux arm mmu基础【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/11065717 ARM MMU页表框架 先上一张arm mmu的页表结构的通用框图(以下的论述都 ...

随机推荐

  1. Markdown字体大小与颜色

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.但是它本身是不支持修改字体.字号与颜色等功能的!   CSDN-markdo ...

  2. Contest2073 - 湖南多校对抗赛(2015.04.06)

    Contest2073 - 湖南多校对抗赛(2015.04.06) Problem A: (More) Multiplication Time Limit: 1 Sec  Memory Limit:  ...

  3. JAVA的高并发基础认知 二

    一.JAVA高级并发 1.5JDK之后引入高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的,充分利用了现代多处理器和多核心系统的功能以编写大规模并发 ...

  4. 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)

    10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: . 该分类器的精确率怎么样? . 该分 ...

  5. Python 练习: 简单的用户登录判断

    _user = "klvchen" _passwd = " counter = 0 while counter < 3: username = raw_input( ...

  6. Docker 启动遇到 Error starting daemon: Error initializing network controller 错误

    docker 版本 1.10.3 一台装有 docker 的机器重启后,没法启动,/var/log/messages 展示如下错误信息: May 17 11:11:14 gziba-hc03 syst ...

  7. Python中的基本数据类型的区别

    set集合和dict字典的区别 唯一区别: set没有对应的value值 相同点: 都无索引,不可进行切片和根据索引进行的操作 两者都是不可哈希的可变类型 两者的内部元素是可哈希的不可变类型 利用哈希 ...

  8. Bootstrap里的文件分别代表什么意思及其引用方法

    关于Bootstrap打包的文件分别代表什么意思,官网也没有给出一个明确的解释,在网上查了一些资料,总价归纳了如下: bootstrap/ <!--主目录--> ├── css/ < ...

  9. ARP协议总结

    1.ARP用于实现ip和MAC地址之间的对应关系. 2.ARP的流程主要分为ARP请求.ARP应答.免费ARP. 3.首次ARP请求是广播报文,后续确认的ARP是单播报文. 4.免费ARP有两个用途, ...

  10. Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...