ARM汇编指令MCR/MRC学习

来源:互联网 发布:windows最多分区多少 编辑:程序博客网 时间:2024/04/30 11:32

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

    

     指令的语法格式:

     MCR{<cond>} p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>}

     MCR2 p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>}

    

1     <cond>为指令执行的条件码。当<cond>忽略时指令为无条件执行。MCR2中,<cond>为Ob1111,指令为无条件执行指令。

    

2    <opcode_1>为协处理器将执行的操作的操作码。对于CP15协处理器来说, <opcode_1>永远为0b000,当<opcode_1>不为0b000时,该指令操作结果不可预知。

   

3    <Rd>作为元寄存器的ARM寄存器,其值被传送到得协处理器寄存器中。

   

4     <Rd>不能为PC,当其为PC时,指令操作结果不可预知。

   

5    <CRn>作为目标寄存器的协处理器寄存器,其编号可能为C0,C1....C15。 <CRm>附加的目标寄存器或者原操作数寄存器,用于区分同一个编号的不同物理寄存器。当指令中不需要提供附加信息时,将C0指定为<CRm>,否则指令操作结果不可预知。       


6    <opcode_2>提供附加信息,用于区别同一个编号的不同物理寄存器。当指令中指定附加信息时,省略<opcode_2>或者将其指定为0,否则指令操作结果不可预知。

 

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

                                                                                        转自:http://blog.csdn.net/amberman/article/details/8124300


1 0