ARM 微处理器可支撑多达 16 个协处理器,用于各种协处理操作,在程序履行的过程中,每个协处理器只履行针对本身的协处理指令,疏忽 ARM 处理器和其他协处理器的指令,ARM 的协处理器指令首要用于:
<1> ARM 处理器初始化
<2> ARM 协处理器的数据处理操作
<3> 在ARM 协处理器的寄存器和处理器的寄存器之间传送数据
<4> 在ARM 协处理器的寄存器和存储器之间传送数据
ARM 协处理器指令包含以下5条
(1) CDP 协处理器数操作指令
(2)LDC 协处理器数据加载指令
(3) STC 协处理器数据存储指令
(4) MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令
(5) MRC 协处理器寄存器到ARM 处理器寄存器的数据传送指令
<1> CDP 指令
指令的格局为:
CDP{条件} 协处理器编码,协处理器操作码1,意图寄存器,源寄存器1,源寄存器2,协处理器操作码2。
CDP 指令用于ARM 处理器告诉ARM 协处理器履行特定的操作,若协处理器不能成功完结特定的操作,则发生未定义指令反常。其间协处理器操作码1 和协处理器操作码2 为协处理器即将履行的操作,意图寄存器和源寄存器均为协处理器的寄存器,指令不触及ARM 处理器的寄存器和存储器。
指令示例:
CDP P3 ,2 ,C12 ,C10 ,C3 ,4 ;该指令完结协处理器P3 的初始化
<2> LDC 指令
指令的格局为:
LDC{条件}{L} 协处理器编码,意图寄存器,[源寄存器]
LDC 指令用于将源寄存器所指向的存储器中的字数据传送到意图寄存器中,若协处理器不能成功完结传送操作,则发生未定义指令反常。其间,{L}选项表明指令为长读取操作,如用于双精度数据的传输。
指令示例:
LDC P3 , C4 , [R0] ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器 P3 的寄存器 C4 中。
<3> STC 指令
指令的格局为:
STC{条件}{L} 协处理器编码,源寄存器,[意图寄存器]
STC 指令用于将源寄存器中的字数据传送到意图寄存器所指向的存储器中,若协处理器不能成功完结传送操作,则发生未定义指令反常。其间,{L}选项表明指令为长读取操作,如用于双精度数据的传输。
指令示例:
STC P3 , C4 , [R0] ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0 所指向的存储器中。
<4>MCR 指令(mov arm to c,能够这样来回忆)
指令的格局为:
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{条件} 协处理器编码,协处理器操作码1,意图寄存器,源寄存器1,源寄存器2,协处理器操作码2。
MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完结操作,则发生未定义指令反常。
其间协处理器操作码1 和协处理器操作码2 为协处理器即将履行的操作,意图寄存器为ARM 处理器的寄存器,源寄存器1 和源寄存器2 均为协处理器的寄存器。
指令示例:
MRC P3 , 3 , R0 , C4 , C5 , 6 ;
该指令将协处理器 P3 的寄存器C4 和 C5中的数据传送到 ARM 处理器寄存器R0中。