协处理器(coprocessor),一种芯片,用于减轻系统微处理器的特定处理任务。协处理器,这是一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。这种中央处理器无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等;而执行效率、效果低下的有图形处理、声频处理等。为了进行这些处理,各种辅助处理器就诞生了。需要说明的是,由于现在的计算机中,整数运算器与浮点运算器已经集成在一起,因此浮点处理器已经不算是辅助处理器。而内建于CPU中的协处理器,同样不算是辅助处理器,除非它是独立存在。
这篇文章就是和大家谈谈ARM的协议处理器,ARM可支持多达16个协处理器,主要的作用:ARM处理器初始化,ARM与协处理器的数据处理 *** 作,ARM的寄存器与协处理器的寄存器之间传送数据,以及ARM协处理器的寄存器和存储器之间传送数据。共有5条:
-CDP 协处理器数据 *** 作指令
-LDC 协处理器数据加载指令
-STC 协处理器数据存储指令
-MCR ARM的寄存器到协处理器的寄存器的数据传送
-MRC 协处理器的寄存器到ARM的寄存器的数据传送
ARM协处理器CDP 指令CDP 指令的格式为:
CDP{条件} 协处理器编码,协处理器 *** 作码1,目的寄存器,源寄存器1,源寄存器2,协处理器 *** 作码2。
CDP 指令用于ARM 处理器通知ARM 协处理器执行特定的 *** 作,若协处理器不能成功完成特定的 *** 作,则产生未定义指令异常。其中协处理器 *** 作码1 和协处理器 *** 作码2 为协处理器将要执行的 *** 作,目的寄存器和源寄存器均为协处理器的寄存器,指令不涉及ARM 处理器的寄存器和存储器。
指令示例:
CDP P3 , 2 , C12 , C10 , C3 , 4 ;该指令完成协处理器 P3 的初始化
ARM协处理器LDC 指令LDC 指令的格式为:
LDC{条件}{L} 协处理器编码,目的寄存器,[源寄存器]
LDC 指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送 *** 作,则产生未定义指令异常。其中,{L}选项表示指令为长读取 *** 作,如用于双精度数据的传输。
指令示例:
LDC P3 , C4 , [R0] ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器 P3 的寄存器 C4 中。
ARM协处理器STC 指令STC 指令的格式为:
STC{条件}{L} 协处理器编码,源寄存器,[目的寄存器]
STC 指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送 *** 作,则产生未定义指令异常。其中,{L}选项表示指令为长读取 *** 作,如用于双精度数据的传输。
指令示例:
STC P3 , C4 , [R0] ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0 所指向的存储器中。
ARM协处理器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 中。
ARM协处理器MRC 指令MRC 指令的格式为:
MRC{条件} 协处理器编码,协处理器 *** 作码1,目的寄存器,源寄存器1,源寄存器2,协处理器 *** 作码2。
MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完成 *** 作,则产生未定义指令异常。其中协处理器 *** 作码1 和协处理器 *** 作码2 为协处理器将要执行的 *** 作,目的寄存器为ARM 处理器的寄存器,源寄存器1 和源寄存器2 均为协处理器的寄存器。
指令示例:
MRC P3 , 3 , R0 , C4 , C5 , 6 ;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)