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

针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图:

分成了4部分:

1,条件标志位

N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。

2,Q标志位

ARM v5的E系列处理器中,CPSR的bit[27]称为Q标志位。主要用于指示增强的DSP指令是否发生了溢出。

3,控制位

I, F, T以及M[4:0]统称为控制位。当异常中断发生时,这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。

下表示控制位M[4:0]的含义:

M[4:0]

处理器模式

可访问的寄存器

0b10000

用户模式

PC,CPSR, R14~R0

0b10001

FIQ模式

PC,CPSR, SPSR_fiq,R14_fiq,R8_fiq, R7~R0

0b10010

IRQ模式

PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0

0b10011

管理模式

PC,CPSR, SPSR_svc,R14_svc,R13_svc,R12~R0

0b10111

中止模式

PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0

0b11011

未定义模式

PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0

0b11111

系统模式

PC,CPSR(ARMv4及以上版本), R14~R0

4,保留位

用于将来ARM版本的扩展。

状态寄存器访问指令仅有两天:

MRS: 状态寄存器到通用寄存器的传送指令。

MSR: 通用寄存器到状态寄存器的传送指令。

MRS指令介绍

MRS的指令编码格式:

指令的语法格式:

MRS{}, CPSR

MRS{}, SPSR

其中:

为指令执行的条件码。当忽略时指令为无条件执行。

为目标寄存器。

指令操作的伪代码:

C代码

if ConditionPassed(cond) then

if R == 1 then

Rd = SPSR

else

Rd = CPSR

MSR指令使用的场合:

通常通过“读取-修改-写回”操作序列修改状态寄存器的内容。MRS指令用于将状态寄存器的内容读到通用寄存器中。

当异常允许嵌套时,需要在进入异常中断之后,嵌套中断发生之前保存当前处理器模式对应的SPSR。这时需要先通过MRS指令读出SPSR的值,在用其他指令将SPSR值保存起来。

在进程切换时也需要保存当前状态寄存器的值。

MSR指令介绍

MRS的指令编码格式:

这里分为两种格式,一种是原操作数为通用寄存器, 另一种是源操作数是立即数。

指令的语法格式:

C代码

MSR{} CPSR_, #

MSR{} CPSR_,

MSR{} CPSR_, #

MSR{} CPSR_,

其中:

为指令执行的条件码。当忽略时指令为无条件执行。

设置状态寄存器中需要操作的位。状态寄存器的32位可以分为4个8位的域:

f: 指示bits[31 : 24],又名条件标志位域

s: 指示bits[23 : 16],又名状态标志位域

x: 指示bits[15 : 8], 又名扩展位域

c: 指示bits[7 : 0],又名控制位

为将要传送到状态寄存器中的立即数,该立即数的计算方式可以去照看

寄存器包含将要传送到状态寄存器中的数据。

指令的操作伪代码:

指令的使用:

MSR指令通常用于恢复状态寄存器的内容或者改变寄存器的内容。

当退出异常中断处理器程序时,如果事先保存了状态寄存器的内容通常通过MSR指令将事先保存的状态寄存器内容恢复到状态寄存器中。

当需要修改状态寄存器的内容时,通过“读取-修改-写回”指令序列完成。写回操作也是通过MSR指令完成的。

处理器切换到特权模式,使用将要修改某个位域的示例:

C代码

mrs r0, cpsr ;读取cpsr中的值

bic r0, r0, #0x1F ;修改,去除当前处理器模式

orr r0, r0, #0x13 ;修改,设置特权模式

msr cpsr_c, r0 ;写回,仅仅修改CPRS中的控制位

当进程切换到应用场合,应指定SPSR_fsxc来完全恢复。

汇编指令mrs_ARM汇编指令MRS和MSR(转)相关推荐

  1. 操作符指令 - ARM汇编指令(二)

    ARM包含6种重要的数据计算处理指令 数据处理指令格式与条件码 条件码 ARM汇编特点3:指令后缀 同一指令经常附带不同后缀,变成不同的指令.经常使用的后缀有: B(byte)功能不变,操作长度变为8 ...

  2. ARM汇编指令—CPSR访问指令(mrsmsr)

    一.简介 CPSR寄存器比较特殊,需要专门的指令访问,这就是mrs和msr. mrs用来读psr(cpsr或者spsr),msr用来写psr NOTE: cpsr和spsr的区别和联系:cpsr是程序 ...

  3. ARM汇编:MRS和MSR指令

    ARM汇编:MRS和MSR指令 ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 一:下面先来说说状态寄存器 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下 ...

  4. 汇编指令msr_ARM汇编:MRS和MSR指令

    1.MSR和MRS指令介绍 MRS 指令:  对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...

  5. 汇编指令mrs_(转)ARM汇编学习笔记——MRS和MSR指令

    MRS,状态寄存器传送至通用寄存器类指令 功能:将状态寄存器的内容传送至通用寄存器. 格式: MRS{}Rd,CPSR}SPSR 其中: Rd  目标寄存器,Rd不允许R15. R=0  将CPSR中 ...

  6. ARM中MRS和MSR汇编指令

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...

  7. 汇编指令msr_(转)ARM汇编学习笔记——MRS和MSR指令

    MRS,状态寄存器传送至通用寄存器类指令 功能:将状态寄存器的内容传送至通用寄存器. 格式: MRS{}Rd,CPSR}SPSR 其中: Rd  目标寄存器,Rd不允许R15. R=0  将CPSR中 ...

  8. 汇编指令msr_ARM汇编指令MRS和MSR(转)

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...

  9. 汇编指令mrs_汇编指令 - Mrs.kang - 博客园

    1.debug的常用命令 1.r命令 查看.修改CPU中寄存器的值 -r :查看寄存器的值 -r  cs :修改寄存器cs的值 2.D命令 查看内存中的内容 1.-d  段地址:偏移地址 -d 100 ...

最新文章

  1. HTTP请求过程详解
  2. windows下 nginx安装 使用
  3. mongodb 新增字段
  4. 转换到 COFF 期间失败: 文件无效或损坏
  5. STL算法find,find_if,find_if_not,sort,fill,for_each,count,adjacent_find,random_shuffle,prev_permutation
  6. Web测试到底是在测什么(资料合集)
  7. Linux 命令之 usermod -- 用于修改用户的基本信息
  8. php判断电脑浏览器模拟手机访问网页,在PC上测试移动端网站和模拟手机浏览器的5大方法...
  9. SpringBoot与安全
  10. protobuf反射详解
  11. ASP.NET---母板应用
  12. ElasticSearch全文搜索引擎之核心概念和IK分词器篇
  13. 【Bye-Bye】MMD镜头+动作打包下载.zip
  14. NPDP国际产品经理认证是什么?看完你就懂了
  15. Sublime 使用笔记(九):汉字乱码问题的解决方法
  16. clob informix java_informix如何插入clob
  17. STM32基础12--数模转换(DAC)
  18. Chapter3:字符串编码和文件操作
  19. 倍福--232/485通信
  20. 【华为机试真题 Python】跳格子游戏

热门文章

  1. 关于Java学习的心得体会
  2. dropout keep_prob参数
  3. 原来做炫酷图表这么容易
  4. HTC View 手柄操作简介
  5. linux安装xbox无线手柄,ROS配置和使用Xbox One无线手柄
  6. 老夫整理的1000行MySQL学习笔记,等待有缘人
  7. 智能芯片之三维内存 概念
  8. 卡尔曼滤波matlab程序实现
  9. Cambridge 4 TEST1
  10. python把英语句子成分字母_求一个可以分析英语句子成分的软件或网站