MCR/MRC学习
来源:互联网 发布:601519历史交易数据 编辑:程序博客网 时间:2024/04/20 05:38
MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。
指令的语法格式:
MCR {<cond>,} p15, <opcode_1>, <Rd>, <CRn>, <CRm> {,<opcode_2>}
MCR2 {<cond>,} p15, <opcode_1>, <Rd>, <CRn>, <CRm> {,<opcode_2>}
其中<cond>为指令执行的条件码。MCR中,当<cond>忽略时指令为无条件执行。MCR2中,当<cond>为Ob1111,指令为无条件执行指令。
<opcode_1>,<opcode_2>为协处理器将执行的操作的操作码。对于CP15协处理器来说, <opcode_1>永远为0b000,当<opcode_1>不为0b000时,该指令操作结果不可预知。<opcode_2>省略或者将其指定为0,否则指令操作结果不可预知。
<Rd>作为元寄存器的ARM寄存器,其值被传送到得协处理器寄存器中,但不能为PC,否则指令操作结果不可预知。
<CRn>作为目标寄存器的协处理器寄存器,其编号可能为C0,C1....C15。
<CRm>附加的目标寄存器或者原操作数寄存器,用于区分同一个编号的不同物理寄存器。当指令中不需要提供附加信息时,将C0指定为<CRm>,否则指令操作结果不可预知。
MRC指令将协处理器的寄存器中数值传送到ARM处理器的寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。
指令的语法格式:
MRC {<cond>,} p15, 0, <Rd>, <CRn>, <CRm> {,<opcode_2>}
MRC2 {<cond>,} p15, 0, <Rd>, <CRn>, <CRm> {,<opcode_2>}
实例:
/*程序摘录自u-boot-2010.06\arch\arm\arm920t\start.s*/cpu_init_crit: /* * flush v4 I/D caches */ mov r0, #0 mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */ mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */ /* * disable MMU stuff and caches */ mrc p15, 0, r0, c1, c0, 0 bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS) bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM) orr r0, r0, #0x00000002 @ set bit 2 (A) Align orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache mcr p15, 0, r0, c1, c0, 0
- MCR/MRC学习
- MCR & MRC
- MCR& MRC
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- ARM汇编指令MCR/MRC学习
- MCR和MRC
- ARM MCR MRC
- ARM汇编,MCR和MRC
- ARM汇编指令MCR/MRC
- 协处理器命令 mrc/mcr
- ARM汇编,MCR和MRC
- 【字符串操作】12.字符型转换到整型(atoi)
- uedit用法--集成到java工程中
- SQL Server 中的嵌套事务与@@TranCount(转)
- GLSL Versions和GLSL ES Versions 的之间的关系和区别
- 小琪不小气 - 微信自带表情符号的默认代码
- MCR/MRC学习
- DLL编写教程
- LDR伪指令和LDR指令学习
- vim高级编辑(一)
- 黑马程序员_Java高新技术_泛型
- 黑马程序员_Java高新技术_类加载器的深入讲解与应用
- codeforces #198 div.2 解题报告
- Linux修改文字界面分辨率
- CentOS中iptables开放80端口