嵌入式:ARM协处理器指令总结

news2024/12/28 20:51:55

文章目录

    • (一)协处理器的数据操作
      • 二进制编码
      • 汇编格式
    • (二)协处理器的数据存取
      • 二进制编码
      • 汇编格式
    • (三)协处理器的寄存器传送
      • 二进制编码
      • 汇编格式
    • 未使用的指令空间

ARM支持16个协处理器,用于各种协处理器操作,最常使用的协处理器是用于控制片上功能的系统协处理器,例如控制ARM720上的高速缓存和存储器管理单元等,也开发了浮点ARM协处理器,还可以开发专用的协处理器。

当一个协处理器硬件不能执行属于它的协处理器指令时,将产生未定义指令异常中断。利用该异常中断处理程序可以软件模拟该硬件操作。

ARM协处理器指令根据其用途主要分为以下三类:

  • 用于ARM处理器初始化协处理器数据操作指令;
  • 用于ARM寄存器与协处理器间的数据传送指令;
  • 用于协处理器寄存器和内存单元间的数据传送指令。

(一)协处理器的数据操作

协处理器数据操作完全是协处理器内部的操作,它完成协处理器寄存器的状态改变。如:在符点协处理器中2个寄存器相加,结果放在第3个寄存器。

二进制编码

ARM对可能存在的任何协处理器提供这条指令。如果它被一个协处理器接受,则ARM继续执行下一条指令,如果它没有被接受,则将产生一个未定义中止异常中断。通常与协处理器号CP#一致的协处理器将接受指令。

协处理器执行由Cop1和Cop2域定义的操作,使用CRn和CRm作为源操作数,并将结果放到CRd。其中,Cop1和Cop2为协处理器操作码,CRn、CRm和CRd均为协处理器的寄存器。指令中不涉及ARM处理器的寄存器和存储器。

汇编格式

CDP{<cond>} <CP#>, <Cop1>, CRd, CRn, CRm{,<Cop2>} 

举例:

CDP  p5,2,C12,C10,C3,4    ;协处理器p5的操作初始化,
                          ; 其中操作码1为2,操作码2
                          ; 为4,目标寄存器为C12,源
                          ; 操作寄存器为C10和C3

注:这里Cop1、CRn、CRd、Cop2和CRm域的解释与协处理器有关。

(二)协处理器的数据存取

协处理器数据传送指令从存储器读取数据装入协处理器寄存器,或将协处理器寄存器的数据存入存储器。因为协处理器可以支持它自己的数据类型,因此,每个寄存器传送的字数与协处理器有关。ARM产生存储器地址,但协处理器控制传送字数。

二进制编码

存储器地址计算在ARM内进行,使用ARM基址和8位立即数偏移量进行计算,8位立即数左移2位产生字偏移。

数据由CRd提供或者接受,由协处理器来控制存取字数,N位控制从2种可能长度中选择一种。

汇编格式

前变址格式:

LDC|STC{<cond>}{L} <CP#>,CRd,[Rn <offset>]{!}

后变址格式:

LDC|STC{<cond>}{L} <CP#>,CRd,[Rn],<offset> 

注:
L标志表明选择长数据类型(N=1)。
是#±<8位立即数>

举例:

       LDC  p6,C0,[R1]
       STCEQL  p5,C1,[R0],#4

注意事项:

  • N和CRd域的解释与协处理器有关。
  • 如果地址不是字对齐的,则最后2位将忽略,有些ARM系统有可能产生异常。
  • 存取字数由协处理器控制,ARM将连续产生后续地址,直到协处理器指示存取结束为止。在数据存取的过程中,ARM将不响应中断请求。因此,为了防止存取过长的数据影响系统的中断响应时间,将最大存取长度限制到16个字。

(三)协处理器的寄存器传送

在ARM和协处理器寄存器之间传送数据有时是有用的。这些协处理寄存器传送指令使得协处理器中产生的整数能直接传送到ARM寄存器或者影响ARM条件码标志位。典型用法是:

浮点FIX操作,它把整数返回到ARM的一个寄存器。

浮点比较,把比较的结果返回到ARM条件码标志位

从ARM寄存器中取一个整数,并传送给协处理器,在那里转换成浮点表示,并装入协处理器寄存器进行处理。

在一些较复杂的ARM CPU中,常使用系统控制协处理器来控制Cache和MMU功能。这类协处理器一般使用这些指令来访问和修改片上的控制寄存器。

二进制编码

协处理器执行由Cop1和Cop2域定义的操作,使用CRn和CRm作为源操作数,并将32位整数结果返回到ARM,ARM再把它放到Rd。其中,Cop1和Cop2为协处理器操作码,CRn、CRm为协处理器的寄存器。

如果在从协处理器读取数据的指令中将PC定义为目的寄存器Rd,则由协处理器产生32位整数的最高4位将被放在CPSR中的N、Z、C和V标志位。

汇编格式

(1)从协处理器传送到ARM寄存器:

MRC{<cond>} <CP#>,<Cop1>,Rd,CRn,CRm{,<Cop2>} 

(2)从ARM寄存器传送到协处理器:

MCR{<cond>} <CP#>,<Cop1>,Rd,CRn,CRm{,<Cop2>}  

举例:

       MCR  p14,3,R0,C1,C2
       MRCCS  p2,4,R3,C3,C4,6

未使用的指令空间

ARM 32位指令编码并没有全部都做了定义,还有一些未使用的编码可以用来将来扩展指令集。并且算术运算指令、控制指令,Load/Store指令、协处理器指令等都有预留空间。

参考文献:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java Redis基础 数据类型 常用命令 java中使用Redis

Redis是一个基于内存的key-value结构数据库。 Redis入门 Redis简介 Redis应用场景&#xff1a; Redis 下载与安装 Windows版下载地址&#xff1a;https://github.com/microsoftarchive/redis/releases Linux版下载地址&#xff1a; https://download.redis.io/releases/ Red…

Java 中的main方法原理介绍。

//深入了解main方法 // 解释main方法的形式为什么是这样写的&#xff1f; // public static void main(String[] args) // 问题1&#xff1a;是谁调用main方法&#xff1f; // java虚拟机调用main方法&#xff0c;所以main的访问权限是public // 问题2&#xff1a;为什么是st…

电竞游戏蓝牙耳机哪个牌子好?电竞游戏蓝牙耳机排行榜

喜欢玩游戏或是追剧的话&#xff0c;佩戴蓝牙耳机更加不易受到外界的干扰&#xff0c;传输效果好的蓝牙耳机能够带来更好的画面感和立体感&#xff0c;那么电竞游戏蓝牙耳机哪个牌子好呢&#xff1f;以下是小编整理的几款当前值得入手的游戏蓝牙耳机。 第一款&#xff1a;南卡…

Java多线程之线程安全问题

文章目录一. 线程安全概述1. 什么是线程安全问题2. 一个存在线程安全问题的程序二. 线程不安全的原因和线程加锁1. 案例分析2. 线程加锁2.1 理解加锁2.2 synchronized的使用2.3 再次分析案例3. 线程不安全的原因三. 线程安全的标准类一. 线程安全概述 1. 什么是线程安全问题 …

【QGIS入门实战精品教程】7.1:QGIS面状数据符号化设置案例教程

本文讲解QGIS空间数据符号化设置。 文章目录 一、符号化模式详解1. 单一色彩2. 字段分类3. 渐进4. 基于规则5. 翻转多边形6. 2.5维二、样式文件的保存与使用1. 保存样式文件2. 载入样式文件一、符号化模式详解 1. 单一色彩 数据加载后,默认显示单一色彩符号化模式,可以进行…

采购管理系统能为企业带来哪些好处?

随着信息化技术的不断发展&#xff0c;很多企业采购组织利用信息化手段来进行采购管理已然成为了一种趋势。 而且在日趋激烈的市场竞争与疫情影响下&#xff0c;企业的成本竞争优势显得尤为重要&#xff0c;据有关调查数据显示&#xff0c;许多企业成本中的70%是采购成本&…

[Flask]数据库的连接和操作

一、安装连接程序 在控制台中使用语句 pip install pymysql 即可安装 同时为了使用ORM对数据库进行操作&#xff08;而非sql语句&#xff09;&#xff0c;还需要安装SQLAlchemy pip install flask-sqlalchemy 二、使用Navicat管理数据库 安装Navicat软件&#xff0c;本体需要…

软件企业认证的条件是什么?

一、双软认证企业的认证标准&#xff1a; 1.企业法人是在我国的境内设立的企业法人; 2.企业计算机的软件开发和生产制造、系统集成、应用服务和其他有关技术服务为其经营业务及主要营业收入; 3.有一种以上由本企业开发或是由本企业具备知识产权的软件产品&#xff0c;或给…

绪论

&#x1f64c;作者简介&#xff1a;数学与计算机科学学院出身、在职高校高等数学专任教师&#xff0c;分享学习经验、生活、 努力成为像代码一样有逻辑的人&#xff01; &#x1f319;个人主页&#xff1a;阿芒的主页 ⭐ 高等数学专栏介绍&#xff1a;本专栏系统地梳理高等数学…

网络交换的技术

文章目录1、背景2、电路交换2.1、电路交换的特点2.2、电路交换的缺点3、分组交换3.1、分组交换的主要特点3.2、分组交换的传输单元3.3、分组交换的优点3.4、分组交换的缺点4、报文交换5、三种报文的区别1、背景 网络交换技术共经历了四个发展阶段: 电路交换技术(19世纪末)报文…

带你学懂数据结构中的八大排序(上)

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; 数据结构 | C语言 &#x1f38a;每篇一句&#xff1a; 图片来源 Every challenge, every adversity, contains within it the seeds of opportunity and growth. 每个挑战&#xff0c;每次逆境&#xff0c;里…

山外山在科创板上市:市值约47亿元,高光勇为实际控制人

12月26日&#xff0c;重庆山外山血液净化技术股份有限公司&#xff08;下称“山外山”&#xff0c;SH:688410&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;山外山的发行价格为32.30元/股&#xff0c;发行市盈率为297.74倍。 据贝多财经了解&#xff0c;山外山…

vivo 低代码平台【后羿】的探索与实践

作者&#xff1a;vivo 互联网前端团队- Wang Ning 本文根据王宁老师在“2022 vivo开发者大会"现场演讲内容整理而成。公众号回复【2022 VDC】获取互联网技术分会场议题相关资料。 本文主要从前后端分离的低代码方案、自研高性能渲染引擎、高效的可视化配置方案、千亿级内容…

基于yolov5s实践国际象棋目标检测模型开发

在我前面的一篇文章中讲解实现了基于改进的yolov5s-spd模型实现了五子棋目标对象检测模型系统的设计开发&#xff0c;这里紧接前文&#xff0c;突发奇想&#xff0c;是否可以借鉴同样的思路实现象棋的检测模型开发呢&#xff1f;理论上面肯定是可以的&#xff0c;但是实际效果如…

FineReport企业报表-配置MySQL8外接数据库(2)

1. 配置外接数据库 1.1 外接数据库配置入口 外接数据库的配置入口&#xff0c;有三种形式&#xff1a; 1&#xff09;超级管理员第一次登录数据决策系统时&#xff0c;即可为系统配置外接数据库。如下图所示&#xff1a; 2&#xff09;对于使用内置数据库的系统&#xff0c;管…

burpsuite——身份验证

文章目录通过不同响应枚举用户名2FA 简单旁路密码重置破坏逻辑通过细微不同的响应枚举用户名通过响应计时的用户名枚举破解暴力保护&#xff0c;IP 封锁通过帐户锁定的用户名枚举2FA 破坏逻辑暴力破解保持登录状态的 cookie通过不同响应枚举用户名 就是所谓的暴力破解&#xff…

如何将高程数据转成南方CASS的DAT格式

需要的工具 BIGEMPA GIS Office 下载地址&#xff1a;http://download.bigemap.com/bmsetup.rar 第一步&#xff1a;将下载好的高程数据DEM直接拖到global mapper中(如何下载高程DEM&#xff1f;)&#xff0c;如下图所示&#xff1a; 第二步&#xff1a;将DEM数据保存为高程点…

A - No Majority(DP 动态规划)[AtCoder Grand Contest 060]

题目如下&#xff1a; 思路 or 题解&#xff1a; 对于一个子串&#xff0c; 如果长度为 lenlenlen, 如果该子串中任意一个字符的出现个数 大于 len2\frac{len}{2}2len​ 那该字符串为 UngoodUngoodUngood 串 反之&#xff0c;如果任意子串&#xff0c; 长度设为 lenlenlen, 如…

Map接口-HashMap、Hashtable和Properties

1.Map 接口和常用方法 1.1Map 接口实现类的特点 [很实用] 注意:这里讲的是JDK8的Map接口特点 1)Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value。 Map 中的key 和 value可以是任何引用类型的数据&#xff0c;会封装到HashMap$Node对象中。&#xff08;Node…

公网远程连接内网MySQL数据库【内网穿透】

作为网站运行必备组件之一的数据库&#xff0c;免不了随时对其进行管理维护。若我们没有在安装数据库的电脑旁&#xff0c;但又需要立即对数据库进行管理时&#xff0c;应该如何处理&#xff1f;这时我们可以使用cpolar对内网进行穿透&#xff0c;远程管理和操作MySQL数据库。现…