协处理器(coprocessor),一种芯片,用于减轻体系微处理器的特定处理使命。
ARM微处理器可支撑多达16个协处理器用于各种协处理操作。
在程序履行的过程中,每个协处理器只履行针对本身的协处理指令,疏忽ARM处理器和其他协处理器的指令。
ARM的协处理器指令首要用于ARM处理器初始化ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的寄存器之间传送数据,和在ARM协处理器的寄存器和存储器之间传送数据。
ARM协处理器包含以下5条:
CDP:协处理器数操作指令。
LDC:协处理器数据加载指令。
STC:协处理器存储指令。
MCR:ARM处理器寄存器到协处理器寄存器的数据传送指令。(ARM->协)
MRC:协处理器寄存器到ARM处理器寄存器的数据传送指令。(协->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的寄存器中的数据传