嵌入式学习笔记-汇编指令03

  1. 协处理器(coprocessor)
    协处理器是用来减轻cpu负担只执行特定指令的处理器
    arm微处理器可支持多达16个协处理器,用于协处理操作
    但是一般只附带最后一个处理器cp15
    协处理器和MMU,TLB,cache等处理有关
    通过这两个指令mcr/mrc 与协处理器进行指令传输
    在这里插入图片描述
mrc p15, 0, r0, c1, c0, 0
bic r0, r0, #00002000  @clear bits v
bic r0, r0, #00000007  @clear bits CAM
orr r0, r0, #00000002  @set bit A
orr r0, r0, #00000800  @set bit Z
mcr p15, 0, r0,c1, c0, 0
  1. 访存指令详解
    在只需要进行单字传输时,用ldr和str进行访存即可
    当需要与内存见的大量信息传输时就需要用到ldm/stm两条指令了
    ldm/stm r0,{r1,r2,r3}
    想完全理解,需要多进行例子积累,找出共性

    指令后缀

    1. ia (increase after) 先将数据写入,再增加地址
    2. ib (increase before)先增加地址,再写入数据
    3. da (decrese after)先将数据写入,再减少地址
    4. db (decrese before)先减少地址,再写入数据
    5. fd (full decrease) 满减栈
    6. fa (full decrease) 满增栈
    7. ed (empty add) 空减栈
    8. ea (empty add) 空增栈
      减栈:地址逐渐减少
      增栈:地址逐渐增加
      空栈:指针直接指向目标地址,即指向地址的内存空间内没有存放数据
      满栈:指针指向上次的最后一个地址,需要偏移后才指向目标地址,即指向地址的内存空间内存放了上一次写入的最后一个数据
  2. !与^

    1. !是在ldm过程中的增加或减少写会到目标寄存器中去
    2. ^的作用是,在目标寄存器中有pc时,会同时将spsr写入到cpsr
      一般用于异常模式
	ldmia  r0,{r2-r3}     @r0地址不偏移
	ldmia  !r0,{r2-r3}	 @装填完成后的地址赋给r0
ldmfd  sp!,{r0-r6,pc}
ldmfd  sp!,{r0-r6,pc}^  @将spsr恢复到cpsr
  1. 细节了解
    1. MMU处理器:实现虚拟内存有两方面的工作:一是高效的管理线性地址和物理地址的映射关系;二是严格的内存访问权限检测机制。于是,现在的CPU处理器就引入了MMU硬件模块来处理这两个问题。
      在没有MMU的处理器中,CPU内部执行单元产生的内存地址信号就是物理地址,将被直接通过地址总线发送到芯片引脚,被内存芯片接收。在有MMU且启用的处理器中,CPU执行单元产生的地址信号是虚拟地址,其在被发送到内存芯片之前将被MMU截获,MMU会负责把虚拟地址翻译成物理地址,然后发到内存芯片地址引脚上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值