ARM指令集是32位的,程序的启动都是从ARM指令集开始。主要是以下三个方面:

  • 指令分类及指令格式
  • 条件执行
  • 指令集编码

指令分类及指令格式

ARM指令使用的基本格式如下:
〈opcode〉{〈cond〉} {S} 〈Rd〉,〈Rn〉{,〈operand2〉}
< > 是必须项 , {}是可选项

指令格式中符号说明:

opcode操作码;指令助记符,如ADD、STR等。
cond 可选的条件码;执行条件,如EQ、NE等。
S 可选后缀;若指定“S”,则根据指令执行结果更新CPSR中的条件码。
Rd 目标寄存器。
Rn 存放第1操作数的寄存器。
op2 第2个操作数。

立即数操作

在数据处理指令中,第二操作数除了可以是寄存器,还可以是一个立即数。如果我们只是希望把一个常数加到寄存器,而不是两个寄存器相加,我们可以用立即数值取代第二操作数,如下面例子。立即数用前面加一个“#”的数值常量来表示。
ADD R3, r3,#1 ;r3 := r3 + 1
AND R8, r7,#& ff ;r8 := r7[7:0]

寄存器移位操作

在ARM数据处理指令中,第二操作数还有一种特有的形式-寄存器移位操作,即允许第二个寄存器操作数在同第一操作数运算之前完成移位操作,例如:
ADD r3, r2,r1,LSL #3 ;r3:=r2 + 8 × r1

设置条件码

ARM的任何数据处理指令都能通过增加“S”操作码来设置条件码(N,Z,C和V)
数据处理指令加了“S”后,算术操作(在此包含CMP和CMN)根据算术运算的结果设置所有的标志位

CPSR和SPSR的格式

条件域表1

条件域表2

条件执行

所有的ARM指令集都可以是有条件执行的。
ARM指令根据CPSR中的条件位自动判断是否执行指令,在条件满足时,指令执行,否则指令被忽略。
在ARM的指令编码表中,统一占用编码的最高四位[31:28]来表示“条件码”(即“cond”)。

条件转移

转移 解释 一般应用
B BAL 无条件的 总是 总是执行转移 总是执行转移
BEQ 相等 比较的结果为相等或零
BNE 不等 比较的结果为不等或非零
BPL 结果为正数或零
BMI BCC 无进位 结果为负数 算术操作未得到进位
BLO 低于 无符号数比较,结果为低于
BCS BHS 有进位 高于或相等 算术操作得到了进位 无符号数比较,结果为高于或相等
BVC 无溢出 有符号整数操作,未出现溢出
BVS 有溢出 有符号整数操作,出现溢出
BGT 大于 有符号整数比较,结果为大于
BGE 大于或相等 有符号整数比较,结果为大于或相等
BLT 小于 有符号整数比较,结果为小于
BLE 小于或相等 有符号整数比较,结果为小于或相等
BHI 高于 无符号数比较,结果为高于
BLS 低于或相等 无符号数比较,结果为低于或相等

ARM指令集编码

ARM指令集是以32位二进制编码的方式给出的,大部分的指令编码中定义了第一操作数、第二操作数、目的操作数、条件标志影响位以及每条指令所对应的不同功能实现的二进制位。每条32位ARM指令都具有不同的二进制编码方式,和不同的指令功能相对应 。编码表如下:

参考文献:

孟祥莲.嵌入式系统原理及应用教程(第2版)[M].北京:清华大学出版社,2017.

嵌入式:ARM指令集分类及编码相关推荐

  1. 嵌入式三级知识点分类

    嵌入式三级知识点分类 ADS1.2(ARM公司的集成开发环境软件) 1.ADS1.2把目标文件中的信息按照3种存储区域类型进行划分,RO段,RW段,ZI段 2.RO段:代码存储区和常数存储区,具有只读 ...

  2. 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)

    资源Bilibili AV46914471 + AV57921488 汇编语言与计算机系统结构 清华大学 张悠慧 本次笔记内容: 01.汇编语言与计算机系统结构 02.汇编基础知识--指令集综述 文章 ...

  3. 什么是Cortex、ARMv8、arm架构、ARM指令集、soc

    参考:到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普] 发布时间: 一口Linux 网址:https://blog.csdn.net/daocaoka ...

  4. ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式

    BX        LR    ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式 A 一.现在先区分下ARM指令集与Thumb指令集        Thumb 指令可以看作是 ARM 指 ...

  5. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  6. ARM知识扫盲-RISC架构-ARM寄存器-ARM指令集

    文章目录 简介: ARM寄存器 特殊寄存器 ARM指令集 简介: ARM本身使用的是RISC精简指令集架构,除此之外还有开源的RISC指令集架构RISC-V,复杂指令集CISC(Complex Ins ...

  7. 学完stm32开发板下一步如何选嵌入式ARM开发板

    如何选择ARM开发板 市场上开发板玲琅满目,我们怎么来选择ARM开发板呢?除了要求ARM开发板资料齐全以外,技术是不是主流.能否结合当前嵌入式产品的应用开发需要,也是很关键的,因为IT技术发展很快,不 ...

  8. 嵌入式ARM处理器与持续火热的3D打印技术有何关联

    4月17日,科技博主「@老师好我叫何同学」在停更73天后,更新了一条关于"3D打印机"的视频,让这个曾因科普5G技术而登上央视新闻的年轻UP主,再次登上了热搜榜首. 在大众的印象里 ...

  9. 嵌入式ARM系统实战开发视频教程

    分享一套韩老师的关于嵌入式ARM的视频教程--<嵌入式ARM系统实战开发(编程模型.指令系统.程序设计.混合编程.驱动开发)>,本课程重点是给大家讲解嵌入式ARM的开发方法,采用理论与实践 ...

最新文章

  1. java操作mongodb基础(查询 排序 输出list)
  2. 衡阳技师学校计算机系,2017级计科师范专业到衡阳技师学院见习
  3. macos 此服务器的证书无效_跨平台本地SSL证书生成工具,本地也能优雅的调试https...
  4. 分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径 及父委托机制
  5. 王道408数据结构——第七章 查找
  6. C#中的?和?? 可空类型和空值判断
  7. 使用IntelliJ IDEA 15和Maven创建Java Web项目(转)
  8. MIT创业项目「智能美食餐厅」4月底登陆波士顿自由之路
  9. Makefile 中使用函数
  10. Mars-Android开发视频教程(全集)
  11. 美团外卖前端可视化界面组装平台 —— 乐高
  12. 历史重演?元宇宙会走上世纪交替时的互联网老路么?
  13. jQuery siblings() 方法
  14. 2021新版个人征信报告将实施,这些坑一定不能踩!思维导图详细整理
  15. Java代码实现回文数
  16. 漫画 | 30年后,中国就会有自己的编程语言!
  17. 什么是敏捷开发?敏捷开发流程的8个步骤
  18. 数量遗传学 第四章 有限大小的群体和近交
  19. System.Net.Mail发邮件标题过长出现乱码问题
  20. 为 setuptools 开路搭桥

热门文章

  1. GO学习笔记:struct的匿名字段
  2. Pandas库常用知识记录
  3. Deepin wine QQ 安装
  4. 网站怎么样做更好的展现出这个企业品牌的形象?
  5. [转载]批处理入门教程
  6. python怎么把字体变大_idle怎样设置代码字体大小 颜色 又快又好
  7. 数据库如何防范隐私数据被泄漏
  8. FEBE恢复Firefox配置方法[Z]
  9. drools规则引擎的基本使用和原理介绍
  10. python应用-scipy,numpy,sympy计算微积分