刘帅嵌入式系统-状态寄存器访问指令

ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。

关于状态寄存器,这里仅强调以下几点。

  1. 状态寄存器中,有些位是当前没有使用的,但在ARM将来的版本中有可能使用这些位,因此用户程序不要使用这些位。
  2. 程序不能通过直接修改CPSR中的T控制位直接将程序状态切换到Thumb状态,必须通过BX等指令完成程序状态的切换。
  3. 通常修改状态寄存器是通过"读取-修改-写回"的操作序列来实现的。
  4. 状态寄存器访问指令包括以下两条。
    1. MRS:状态寄存器到通用寄存器的传输指令
    2. MSR:通用寄存器到状态寄存器的传输指令

MRS

MRS指令用于将状态及粗气你的内容传送到通用寄存器。

指令的编码格式

刘帅嵌入式系统-状态寄存器访问指令

指令的语法格式

MRS{< cond >} < Rd >, CPSR

MRS{< cond >} < Rd >, SPSR

其中:

  • < cond >为指令执行的条件码。当< cond >忽略时,指令为无条件执行。其他指令中< cond >的用法于此相同。
  • < Rd >为目标寄存器。

指令操作的伪代码

if ConditionPassed(cond) then
	if R == 1 then
		Rd = SPSR
	else
		Rd = CPSR	

指令的使用

MRS 指令主要用于以下3中场合:

  • 通常通过"读取-修改-写回"操作序列修改状态寄存器的内容。MRS指令用于将状态寄存器的内容读取到通用寄存器
  • 当异常中断允许嵌套时,需要在进入异常中断之后,嵌套中断发生之前保存当前处理器模式对应的SPSP。这时需要先通过MRS指令读出SPSR的值,再用其他指令将SPSR的值保存起来。
  • 在进程切换时也需要保存当前状态寄存器值。

相关文章:

  • 2021-11-29
  • 2021-06-15
  • 2021-10-05
  • 2021-06-18
  • 2021-04-29
  • 2021-04-19
  • 2021-11-07
  • 2021-12-13
猜你喜欢
  • 2021-11-27
  • 2021-10-08
  • 2021-09-27
  • 2021-07-17
  • 2021-07-31
  • 2021-06-30
  • 2021-03-31
相关资源
相似解决方案