飞腾CPU体系结构之系统指令

本文详细介绍了ARM架构中系统指令的使用,特别是针对系统寄存器的读写、内存操作及处理器状态控制。内容涵盖NOP、YIELD、WFE、WFI、SEV等暗示指令,以及内存屏障、CLREX指令和PSTATE域修改。这些指令在系统级编程和优化中起着关键作用。
摘要由CSDN通过智能技术生成

访问系统寄存器编码空间的指令,提供以下功能:

  1. 访问系统寄存器,包括调试寄存器,系统状态和控制相关的寄存器。
  2. 访问专用寄存器,例如程序状态保存寄存器SPSR、异常链接寄存器ELR,以及CPU状态的某些域。
  3. 高速缓冲和TLB维护指令,地址翻译指令
  4. 内存屏障和CLREX(清除对内存的独占标记)指令。
  5. 体系结构的暗示指令。

系统指令编码占32位长度,基本规则如下:

L表示数据传输方向:

  1. L=1,表示写系统寄存器
  2. L=0,表示读系统寄存器

op0表示顶层分类:

  1. op0=0b00,表示暗示指令、内存屏障指令和内存标记清除指令
  2. op0=0b01,表示高速缓冲维护指令、TLB维护指令和地址翻译指令
  3. op0=0b10,表示读写AArch32系统寄存器、调试和跟踪寄存器
  4. op0=0b11,表示读写非调试系统寄存器,也就是系统状态和控制相关寄存器,以及专用寄存器。

第一类 op0=0b00(我们仅仅介绍第一类,其他类不介绍)

        在这一类指令编码中,以CRn来继续分类:

  • CRn=0b0010,表示暗示指令,此时op1=0b011,Rt=0b11111,CRm和op2两个域一共7位来进一步标识具体指令。例如:

                0b000 0000表示NOP指令;

                0b000 0001表示YIELD指令;

                0b000 0011表示WFE指令;

                0b000 0100表示WFI指令;

                0b000 0101表示SEV指令;

                0b000 0110表示SEVL指令;

  • CRn=0b0011,表示内存屏障和内存标记清除指令,此时op1=0b011,Rt=0b11111,op2三位进一步标识具体指令。例如:

                0b001表示DSB指令;

                0b010表示CLREX指令;

                0b100表示DSB指令;

                0b101表示DMB指令;

                0b110表示ISB指令。

  • CRn=0b0100,表示修改处理器状态PSTATE某个域的指令,其中Rt=0b11111,CRm是用于修改的4位立即数,op2表示具体要修改的域。例如:

                0b000表示修改PSTATE.C部分,对应CFINV指令;

                0b011表示修改PSTATE.UAO部分,对应MSR UAO,#Imm4指令;

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值