2011-10-07 71 views
1

从ARM MRC文档引用,MRC命令的附加协处理器寄存器的功能是什么?

MRC{2}<c><q> <coproc>, #<opc1>, <Rt>, <CRn>, <CRm>{, #<opc2>} 

其中:

2如果指定,选择编码T2/A2。如果省略,则选择编码T1/A1。

<c><q>见网页上的A8-7标准汇编语法领域。 ARM MRC2指令必须是无条件的。

<coproc>协处理器的名称。标准的通用协处理器名称是p0,p1,...,p15。

<opc1>是范围为0的特定于协处理器的操作码,以7.

<Rt>是对目的地ARM核心寄存器。该寄存器可以是R0-R14或APSR_nzcv。最后一种形式将传输值的位[31:28]写入N,Z,C和V条件标志,并通过将编码的Rt字段设置为0b1111来指定。在UAL之前的汇编语法中,写入了PC而不是APSR_nzcv来选择此表单。

<CRn>是包含第一个操作数的协处理器寄存器。

<CRm>是一个额外的源或目的协处理器寄存器。

<opc2>是在到7的范围内0特定于协处理器的操作码如果省略,<opc2>被假定为0

MRC如果意在单个协处理器寄存器的内容复制到单个ARM注册,CRm是什么原因?此外,我不太确定opcode的原因是什么,但这不重要。

+2

有关更好的解释,请参见第A.4节[此处](http://www.peter-cockerell.net/aalp/html/app-a.html)。 – user786653

回答

3

user786653可能击中头部与链接指甲。

我知道旧的fpu,fpa,使用了协处理器接口,如果你解码fpa浮点指令,我想你会发现它们与通用协处理器(mrc/mcr)的操作码模式一致。

我点我不会在指令得到了工作在各个领域,有些领域可能不要至于协处理器而言问津。 ARM处理器和汇编器不一定知道你已经连接了什么,这是将位模式放入机器指令的通用方法。您需要关注您正在与之通话的特定协处理器,其TRM特别是具有与该逻辑的匹配版本号的TRM(如果可能,如果来自ARM),假设协处理器来自ARM,如果它是某人,则使用其文档。该协处理器中每个操作所使用的字段都可以很好地定义。如果他们不说什么领域意味着我会认为它不在乎。如果有的话,在手册中剪切并粘贴他们的mrc/mcr行,如果没有,可以找到一些已经很好用的代码,剪切粘贴该模式和/或为未定义的字段尝试不同的事情,看看是否改变了操作。

一般地虽然MRC/MCR字段定义不是一成不变的,供应商可以创建一个协处理器,做任何他们想做的那些领域。像FPA一样,甚至可以改变汇编/反汇编器以创建指令集的新扩展。 ARM内核可能会关心ARM寄存器本身,如果协处理器接口本身有TRM,那么如果协处理器读取有一条控制线告诉手臂根据协处理器修改指定的手臂寄存器,我不会感到惊讶驾驶那个信号。

相关问题