嵌入式:ARM指令集分类及编码

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

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

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

指令分类及指令格式

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

嵌入式:ARM指令集分类及编码

指令格式中符号说明:

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的格式

嵌入式:ARM指令集分类及编码

条件域表1

嵌入式:ARM指令集分类及编码

条件域表2

嵌入式:ARM指令集分类及编码

条件执行

所有的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指令都具有不同的二进制编码方式,和不同的指令功能相对应 。编码表如下:

嵌入式:ARM指令集分类及编码

参考文献:

孟祥莲.嵌入式系统原理及应用教程(第2版)[M].北京:清华大学出版社,2017.文章来源地址https://www.toymoban.com/news/detail-437172.html

到了这里,关于嵌入式:ARM指令集分类及编码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ARM简单程序设计【嵌入式系统】

    2023-4-6 20:26:54 以下内容源自《【嵌入式系统】》 仅供学习交流使用 Keil 4 安装教程及简单使用【嵌入式系统】 新建工程xxx 芯片:ARM7 (Little Endian) 设置工程属性 Build结果必须是0Error的 如果是下图看配置是否正确 注意这个: 1.每一次修改代码就需要重写Build 2.READWRITE区变量初始

    2023年04月20日
    浏览(73)
  • 嵌入式:ARM汇编语言程序设计基础教程

    ① 合理地分配存储器资源,将前述的目标系统‘数据结构模型’表示到各存储器单元。 ② CPU寄存器数量有限,在程序中,大多数操作都要使用寄存器;并且有的操作使用特定的寄存器(如堆栈操作使用SP/R13等),程序中要合理分配各寄存器的用途。 用计算机语言,对数据结

    2023年04月23日
    浏览(89)
  • [ARM 汇编]高级部分—ARM汇编编程实战—3.3.3 嵌入式应用程序设计实例

    在本章节中,我们将学习如何使用ARM汇编编写一个简单的嵌入式应用程序。我们将以STM32F103微控制器为例,编写一个程序,实现按下按钮时点亮LED的功能。 硬件连接 首先,我们需要将STM32F103微控制器的一个GPIO引脚连接到LED(通过一个合适的电阻),另一个GPIO引脚连接到按钮

    2024年02月10日
    浏览(42)
  • 【ARM 嵌入式 编译系列 10.2 -- 符号表与可执行程序分离详细讲解】

    请阅读 【ARM GCC 编译专栏导读】 上篇文章:ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 下篇文章:ARM 嵌入式 编译系列 10.3 – GNU elfutils 工具小结 接着上篇文章 ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 介绍,在前两篇文章中我们去

    2024年02月13日
    浏览(51)
  • 嵌入式Qt-动手编写并运行自己的第1个ARM-Qt程序

    介绍了如何搭建在Linux开发板中搭建Qt的运行环境,并测试了Qt自带的例程。 本篇,来介绍如何自己编写一个Qt程序,并将编译结果放到Linux开发板中运行。 因为Qt是支持跨平台的,所以我们可以先在Windows平台上编写和查看Qt的运行效果,然后再通过交叉编译,编译出ARM Linux平

    2024年02月02日
    浏览(41)
  • 嵌入式STM32程序一些卡死的原因

    嵌入式STM32程序卡死的原因可能有以下几种: 1、死循环:程序中存在死循环,导致程序无法继续执行下去。 2、中断问题:中断处理不当,导致程序无法正常运行。 3、堆栈溢出:程序中使用的堆栈空间超出了预设的范围,导致程序无法正常运行。 4、资源竞争:多个任务或中

    2024年02月08日
    浏览(61)
  • 【嵌入式 – GD32开发实战指南(ARM版本)】第2部分 外设篇 - 第3章 温度传感器DS18B20

    DS18B20 是 DALLAS 最新单线数字温度传感器,新的\\\"一线器件\\\"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 \\\"一线总线\\\"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将

    2024年02月21日
    浏览(50)
  • 嵌入式_一种非常简单实用的基于GD32的裸机程序框架

    搜索了一下关于GD或ST裸机程序的问题,网上有非常多也非常的例子,但是针对裸机开发的程序框架却比较少,这里简单整理了一下在项目中使用过的一种比较小巧便携的裸机程序框架(确切点说算不上框架,只能说一种写法)。 之前常见的裸机程序框架就是流水账框架,比

    2024年02月13日
    浏览(48)
  • 嵌入式开发——ARM介绍

    ARM是一种芯片架构,由英国的ARM Holdings公司开发和授权,被广泛应用于各种嵌入式系统、移动设备和消费电子产品中。ARM架构被设计成低功耗、高性能、可定制化的特点,能够满足各种应用场景下的需求。 ARM架构主要设计了以下几个部分内容: 指令集架构 (Instruction Set Ar

    2024年02月04日
    浏览(72)
  • 嵌入式系统专业术语以及AHL-STM32L431运行示例程序

    目录 一、嵌入式术语 1.1 与硬件相关的术语 1.2 与通信相关的术语 1.3 与功能模块相关的术语 二、运行示例程序,并得出结论 1.1 与硬件相关的术语 封装(Package,PKG)   封装是指将集成电路芯片封装在外部包装中以保护芯片并便于连接到电路板上。不同类型的封装可以影响芯

    2024年04月09日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包