Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109042
  • 博文数量: 40
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 337
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-09 23:49
文章分类
文章存档

2016年(4)

2015年(2)

2014年(30)

2013年(4)

我的朋友

分类: 嵌入式

2014-04-22 21:16:06

ARM协处理器cp15,有16个寄存器,详细看《ARM体系结构与编程》

这里我大概说一下MRC与MCR这两个协处理器操作,参考《s3c2440》元件手册P140页

这两个命令是用于ARM寄存器与协处理器寄存器之间操作的,一个协处理器与寄存器之前操作的例子就是,一个浮点值在协处理器中转换成32位整型,然后它的结果传送到ARM920T的寄存器中MRC。相反则为MCR。

最重要的应用就是通过命令从协处理器交换控制信息到ARM920T CPSR相应标识位

看几个例子就明白

MRC    p2,5,r3,c5,c6

协处理器p2把c5和c6经过5操作的结果赋给r3

MCR    p6,0,r4,c5,c6

协处理器p6把r4执行0操作后将结果存放进c6

MRC    p3,9,r3,c5,c6,2

协处理器p3把c5和c6经过9操作(类型2)的结果赋给r3

详细写一下格式

MCR{cond}   p15,{opcode_1},,,{,opcode_2}

其中{cond} 就是可选的执行条件

p15就是指定哪个协处理器,ARM920T好像有两个一个15一个14

为协处理器将要执行的操作的操作码,对于CP15来说,永远为ob00,即0,如果不是,结果不同预知

作为源寄存器的ARM寄存器

目标寄存器的协处理器寄存器

附加的目标寄存器或者源操作数寄存器,用于区分同一个编号的不同物理寄存器,如果不需要,就将它设置为C0,否则结果不可预知

附加信息,用于区别同一编号的不同物理寄存器,如果省略或者为0,就表示不附加,如果不是,后果不可预知

阅读(1167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~