凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

写处理器指令——协处理器的存储器传送

已有 486 次阅读| 2016-1-9 15:54

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

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

浮点比较,它把比较的结果直接返回到ARM条件码标志位,此标志位将确定控制流。

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

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

二进制编码

协处理器寄存器传输指令的二进制编码如图

说明

本指令可用于任何可能存在的协处理器。通常,具有协处理器编号CP#的协处理器将接受这条指令。如果没有一个协处理器接受这条指令,则ARM将产生未定义指令陷阱。

如果协处理器接受了从协处理器中读取数据的指令,一般它将执行由Cop1Cop2定义的对于源操作数CRnCRm的操作,并将32位整数结果返回到ARMARM再把它装入Rd

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

汇编格式

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

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

ARM寄存器传送到协处理器:

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

举例

MCR                     p143R0C1C2

MRCCS                p2,4R3C3C4,6

注意事项

Cop1CRnCop2CRm域由协处理器解释,推荐使用以上解释,以最大限度地域ARM开发工具兼容。

若协处理器必须完成一些内容工作来准备一个32位的数据向ARM传送,则这些工作必须在协处理器提交传送前进行。因此在准备数据时,经常需要协处理器握手信号处于“忙—等待”状态。ARM可在“忙—等待”时间内产生中断,如果它确实得以中断,则它将暂停握手开始中断服务。当它从中断服务程序返回时,将可能重试协处理指令,但也可能不重试,例如阶段中断使服务切换。在任一情况下,协处理器必须给出一致的结果,因此在握手提交阶段之前,进行的准备工作不许改变处理器的可见状态。

ARM到协处理器的传送一般比较简单,因为任何数据转换工作都可在传送完成后再协处理器进行。

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 16:25 , Processed in 0.015344 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部