• 沒有找到結果。

ARM 协处理器指令

在文檔中 1.1 嵌入式系统 (頁 91-94)

第4章 ARM7TDMI(-S)指令系统

7. ARM 协处理器指令

ARM 支持协处理器操作,协处理器的控制要通过协处理器命令实现。

ARM 协处理器指令见表 4.9。

表 4.9 ARM 协处理器指令

助记符 说明 操作 条件码位置

CDP coproc,opcode1,CRd,CRn,CRm{,opcode2} 协处理器数据操作指令 取决于协处理器 CDP{cond}

LDC{L} coproc, CRd,<地址> 协处理器数据读取指令 取决于协处理器 LDC{cond}{L}

STC{L} coproc, CRd,<地址> 协处理器数据写入指令 取决于协处理器 STC{cond}{L}

MCR coproc,opcode1,Rd,CRn,CRm{,opcode2} ARM 寄存器到协处理器寄存 器的数据传送指令

取决于协处理器 MCR{cond}

MRC coproc,opcode1,Rd,CRn,CRm{,opcode2} 协处理器寄存器到ARM 寄存 器到的数据传送指令

取决于协处理器 MCR{cond}

CDP——协处理器数据操作指令

ARM 处理器通过 CDP 指令通知 ARM 协处理器执行特定的操作。该操作由协处理器完 成,即对命令的参数的解释与协处理器有关,指令的使用取决于协处理器。若协处理器不能 成功地执行该操作,将产生未定义指令异常中断。指令格式如下:

CDP{cond} coproc,opcode1,CRd,CRn,CRm{,opcode2}

其中: coproc 指令操作的协处理器名。标准名为 pn,n 为 0~15。

opcode1 协处理器的特定操作码。

CRd 作为目标寄存的协处理器寄存器。

CRn 存放第1 个操作数的协处理器寄存器。

CRm 存放第2 个操作数的协处理器寄存器。

- - 82 Opcode2 可选的协处理器特定操作码。

指令编码格式:

cp_num 为协处理器编号。

CDP 指令举例如下:

CDP p7,0,c0,c2,c3,0 ; 协处理器 7 操作,操作码为 0,可选操作码为 0 CDP p6,1,c3,c4,c5 ; 协处理器6 操作,操作码为 1

LDC——协处理器数据读取指令

LDC 指令从某一连续的内存单元将数据读取到协处理器的寄存器中。进行协处理器数据 的传送,由协处理器来控制传送的字数。若协处理器不能成功地执行该操作,将产生未定义 指令异常中断。指令格式如下:

LDC{cond}{L} coproc, CRd,<地址>

其中: L 可选后缀,指明是长整数传送。

coproc 指令操作的协处理器名。标准名为 pn,n 为 0~15。

CRd 作为目标寄存的协处理器寄存器。

<地址> 指定的内存地址。

指令编码格式:

cp_num 为协处理器编号。

8_bit_word_offset 8 位立即数偏移。

P,U,W 用于区别不同的地址模式。P 表示前/后变址,U 表示加/减,W 表示回写。

N 数据大小(依赖于协处理器)。

LDC 指令举例如下:

LDC p5,c2,[R2,#4] ; 读取R2+4 指向的内存单元的数据,传送到协处理器

; p5 的 c2 寄存器中

LDC p6,c2,[R1] ; 读取R1 指向的内存单元的数据,传送到协处理器 p6

; 的 c2 寄存器中

STC——协处理器数据写入指令

STC 指令将协处理器的寄存器数据写入到某一连续的内存单元中。进行协处理器数据的 数据传送,由协处理器来控制传送的字数。若协处理器不能成功地执行该操作,将产生未定 义指令异常中断。指令格式如下:

STC{cond}{L} coproc, CRd,<地址>

其中: L 可选后缀,指明是长整数传送。

coproc 指令操作的协处理器名。标准名为 pn,n 为 0~15。

- - 83

CRd 作为目标寄存的协处理器寄存器。

<地址> 指定的内存地址。

指令编码格式:

cp_num 为协处理器编号。

8_bit_word_offset 8 位立即数偏移。

P,U,W 用于区别不同的地址模式。P 表示前/后变址,U 表示加/减,W 表示回写。

N 数据大小(依赖于协处理器)。

STC 指令举例如下:

STC p5,c1,[R0]

STC p5,c1,[R0,#-0x04]

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

MCR 指令将 ARM 处理器的寄存器中的数据传送到协处理器的寄存器中。若协处理器不 能成功地执行该操作,将产生未定义指令异常中断。指令格式如下:

MCR{cond} coproc,opcode1,Rd,CRn,CRm{,opcode2}

其中: coproc 指令操作的协处理器名。标准名为 pn,n 为 0~15。

opcode1 协处理器的特定操作码。

Rd 作为目标寄存的协处理器寄存器。

CRn 存放第1 个操作数的协处理器寄存器。

CRm 存放第2 个操作数的协处理器寄存器。

opcode2 可选的协处理器特定操作码。

指令编码格式:

cp_num 为协处理器编号。

MCR 指令举例如下:

MCR p6,2,R7,c1,c2 MCR p7,0,R1,c3,c2,1

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

MRC 指令将协处理器寄存器中的数据传送到 ARM 处理器的寄存器中。若协处理器不能 成功地执行该操作,将产生未定义指令异常中断。指令格式如下:

MRC{cond} coproc,opcode1,Rd,CRn,CRm{,opcode2}

其中: coproc 指令操作的协处理器名。标准名为 pn,n 为 0~15。

opcode1 协处理器的特定操作码。

Rd 作为目标寄存的协处理器寄存器。

CRn 存放第1 个操作数的协处理器寄存器。

- - 84

CRm 存放第2 个操作数的协处理器寄存器。

Opcode2 可选的协处理器特定操作码。

指令编码格式:

cp_num 为协处理器编号。

MRC 指令举例如下:

MRC p5,2,R2,c3,c2 MRC p7,0,R0,c1,c2,1

8. ARM 杂项指令

在文檔中 1.1 嵌入式系统 (頁 91-94)