Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96485
  • 博文数量: 60
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 651
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-03 10:45
文章分类
文章存档

2014年(11)

2013年(49)

我的朋友

分类: IT业界

2014-01-20 16:20:06

 ARM微处理器可支持多达16个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略ARM处理器和其他协处理器的指令。

 ARM的协处理器指令主要用于ARM处理器初始化ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的寄存器之间传送数据,在ARM协处理器的寄存器和存储器之间传送数据。ARM协处理器指令包括以下5 条。

 CDP:协处理器数据操作指令。

 LDC:协处理器数据加载指令。

 STC:协处理器数据存储指令。

 MCR:ARM处理器寄存器到协处理器寄存器的数据传送指令。

 MRC:协处理器寄存器到ARM处理器寄存器的数据传送指令。

 1、CDP指令

 CDP指令的格式为:

 CDP{条件} 协处理器编码, 协处理器操作码1,

 目的寄存器, 源寄存器1, 源寄存器2, 协处理器操作码2

 CDP指令用于ARM处理器通知ARM协处理器执行特定的操作,若协处理器不能成功完成特定的操作,则产生未定义指令异常。其中协处理器操作码1和协处理器操作码2为协处理器将要执行的操作,目的寄存器和源寄存器均为协处理器的寄存器,指令不涉及ARM处理器的寄存器和存储器。

 指令示例:

 CDP P3, 2, C12, C10, C3, 4; 该指令完成协处理器P3的初始化

 2、LDC指令

 LDC指令的格式为:

 LDC{条件}{L} 协处理器编码,目的寄存器, [源寄存器]

 LDC指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。

 指令示例:

 LDC P3, C4, [R0];将ARM处理器的寄存器R0所

 指向的存储器中的字数据传送到协处理器P3的

 ;寄存器C4中

 3、STC指令

 STC指令的格式为:

 STC{条件}{L} 协处理器编码,源寄存器, [目的寄存器]

 STC指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。

 指令示例:

 STC P3, C4, [R0]

 ; 将协处理器P3的寄存器C4中的字数据传送到

 ARM处理器的寄存器R0 所指向的存储器中

 4、MCR指令

 MCR指令的格式为:

 MCR{条件} 协处理器编码, 协处理器操作码1,

 源寄存器, 目的寄存器1, 目的寄存器2, 协处理器操

 作码2

 MCR指令用于将ARM处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处理器操作码2为协处理器将要执行的操作,源寄存器为ARM处理器的寄存器,目的寄存器1和目的寄存器2均为协处理器的寄存器。

 指令示例:

 MCR P3, 3, R0, C4, C5, 6

 ; 该指令将ARM 处理器寄存器R0中的数据传送到协处理器P3的寄存器C4和C5中

 5、MRC指令

 MRC指令的格式为:

 MRC{条件} 协处理器编码, 协处理器操作码1,

 目的寄存器, 源寄存器1, 源寄存器2, 协处理器操作码2

 MRC指令用于将协处理器寄存器中的数据传送到ARM处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处理器操作码2为协处理器将要执行的操作,目的寄存器为ARM处理器的寄存器,源寄存器1和源寄存器2均为协处理器的寄存器。

 指令示例:

 MRC P3, 3, R0, C4, C5, 6

 ;该指令将协处理器P3的寄存器中的数据传送到ARM处理器寄存器中

  文章由供应商小编原创,转载请注明文章来源出处,谢谢合作!
阅读(538) | 评论(0) | 转发(0) |
0

上一篇:ARM微处理器所支持的移位指令(操作)

下一篇:没有了

给主人留下些什么吧!~~