协处理器寄存器传送(MRC,MCR)
该指令只在条件为真时执行。各种条件在表3-2 中定义了。指令译码如图3-27 所示。
这种指令类型是用于ARM920T 与协处理器直接信息通讯。例如协处理器到ARM920T 的寄存器传输(MRC)
指令在协处理器中的浮点数的FIX,在协处理器中改变浮点数为一个32 位整型,传输结果到ARM920T 寄存器中。
在协处理器中的 ARM920T 寄存器中 32 位数改变为浮点数的 FLOAT 表明 ARM920T 寄存器到协处理器的传输
(MCR)使用。
该指令的重要使用是从协处理器传递控制信息到ARM920T CPSR标志位。例如在协处理器中比较两个浮点数
的结果可以移动到CPSR来控制后续执行流。
31 28 27 24 23 21 20 19 16 15 12 11 8 7 5 4 3 0
Cond 1 1 1 0 CP Opc L CRn Rd Cp# CP 1 CRm
[3:0] 协处理器操作数寄存器
[7:5] 协处理器信息
[11:8] 协处理器标识号
[15:12] ARM 源/目标寄存器
[19:16] 协处理器源/目标寄存器
[20] 加载/存储位
0=存储到协处理器 1=从协处理器加载
[21] 协处理器运行模式
[31:28] 条件字段
协处理器字段
CP#字段用作所有协处理器指令,指定哪个协处理器被调用。
CP Opc,CRn,CP 和CRm字段只用于协处理器,出现在此的解释只是源自协议。当协处理器功能与此不兼
容时容许其他解释。协议解释CP Opc和 CP字段指定对于操作协处理器必须执行,CRn为传输信息的协处理器源
或目标寄存器,CRm为第二个可能由于某种联系依赖指定特殊操作的协处理器寄存器。
传输到 R15
当一个协处理器寄存器传输到 ARM920T 的 R15 作为目标寄存器,传输字的位[31:28]将分别复制到 N,Z,C
和 V标志位。传输字的其它位忽略,传输中PC 和其他CPSR位不会受影响。
从 R15传输
从 ARM920T 的R15作为源寄存器传输到协处理器寄存器,将存储到PC+12。
指令周期时间
执行MRC指令耗时1S+(b+1)I+1C增加周期, 此处S, I和C分别是定义连续周期 (S-cycle), 内部周期 (I-cycle)
和协处理器寄存器传输周期(C-cycle)。执行 MCR指令耗时1S+bI+1C增加周期 b 为协处理器等待忙循环的耗费
周期数。
汇编语法
{cond} p#,,Rd,cn,cm{,}
MRC 从协处理器移动到 ARM920T 寄存器(L=1)
MCR 从 ARM920T 移动到协处理器寄存器(L=0)
{cond} 两个字符条件助记符,如表 3-2所示。
p# 协处理器必须的独有识别号
放置在 CP Opc字段中的常量表达式
Rd 有效ARM920T 寄存器计算表达式
cn, cm 有效协处理器寄存器计算表达式,分别为 CRn和 CRm
若出现,放置在 CP字段中的常量表达式
例子
MRC p2, 5, R3, C5, C6, ;请求协处理器 2用 c5和c6执行操作数 5,将结果(有符号 32位字)传输回 R3
MRC p6, 0, R4, c5, c6 ;请求协处理器 6用 R4执行操作数 0,将结果放置在 c6
MRCEQ p3, 9, R3, c5, c6 2 ;条件请求协处理器3用c5和c6执行操作数 9(类型 2),将结果传输回 R3
转自:http://blog.csdn.net/woshizhouxiang/article/details/6658765
阅读(2100) | 评论(0) | 转发(0) |