1、ARM工作模式

从编程的角度来看,ARM微处理器的工作状态一般有两种,并可在两种工作状态之间进行切换:

△:第一种为ARM状态,此时处理器执行32位的的字对齐的ARM指令。

△:第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。

当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;

当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。

在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态

的转变并不影响处理器的工作模式和相应寄存器中的内容。

1)存储器格式

ARM体系结构将存储器看作是从零地址开始的字节的线性组合。

从零字节到三字节地址放置地一个存储的字(32位)数据,从第四个字节到第七个字节

放置第二个存取器的子数据,依次排序。

作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。

ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。

△:大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

△:小端格式:与大端格式正好相反。

2)工作模式

ARM微处理器支持7种工作模式,分别为:

a、用户模式(usr)   用于正常执行程序

b、快速中断模式(fiq)   用于高速数据传输

c、外部中断模式(irq)   用于通常的中断处理

d、管理模式(svc)   操作系统使用的保护模式

e、数据访问终止模式(abt)   当数据或者指令预取终止时进入该模式,可用于虚拟存储及存储保护。

f、系统模式(sys)   运行具有特权的操作系统任务

g、未定义指令中止模式(und)   当未定义的指令执行时进入该模式,可用于支持硬件

注意:

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或者异常处理改变。

应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被3保护的系统资源是不能被访问的。

除用户模式外,其余的6种模式称为非用户模式或者特权模式(Privileged Modes);

其中出去用户模式和系统模式以外以外的5种又称为异常模式(Exception Modes),常用语处理中断或者异常,以及要访问受保护的系统资源等情况。

2、ARM寄存器(基于ARM状态)

先贴张图片,一看就明白了:

1)通用寄存器

△:不分组寄存器(The unbanked registers)

R0-R7

这意味着在所有处理模式下,访问的都是同一个物理寄存器。未分组寄存器没有被系统用于特别的用途,

任何可采用通用寄存器的场合都可以使用为分组寄存器。

△:分组寄存器:

R8-R14

对于R8-R12:FIQ模式分组寄存器R8-R12以及FIQ以外的分组寄存器R8-R12

对于R13-R14:寄存器R13通常用于堆栈指针SP

寄存器R14用作子程序连接寄存器(Link Register-LR),也成为LR,指向函数的返回地址。

△:程序计数器

R15(PC)

寄存器R15也被用作程序计数器,也成为PC。其值等于当前正在执行的指令的地址+8。

因为在取址和执行之间多了一个译码的阶段(这个我也不是很懂,就是知道要加两个字)~~

△:状态寄存器

CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq

3、ARM寄存器(基于Thumb状态)

还是直接上图,这个是跟ARM状态相比较的:


4、CPSR/SPSR

一张图片搞定:

ARM汇编指令(ARM工作模式、寄存器)相关推荐

  1. ARM汇编指令以及伪指令

    文章目录 ARM寄存器 ARM指令的一般编码格式 ARM指令的条件域 ARM寻址方式 数据处理指令的操作数寻址方式 立即数寻址方式 寄存器寻址方式 寄存器移位寻址方式 字或无符号字节的Load/Sto ...

  2. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137  转载请著名出处 本博客相关文档下载 :  -- A ...

  3. ARM汇编指令调试方法

    学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...

  4. arm汇编指令详细整理及实例详解

    目录 一.简介 二.ARM 汇编指令说明 2.1 32位数据操作指令 2.2 32位存储器数据传送指令 2.3 32位转移指令 2.4 其它32位指令 三.实例讲解 3.1 MRS 3.2 MSR 3 ...

  5. arm汇编指令——分析问题的利器

    文章目录 arm汇编指令为什么重要 1. 主导问题 2. arm汇编指令分类介绍 通用寄存器 状态寄存器 数据转移指令 寻址格式 运算指令 比较指令 跳转指令 3. 反汇编接口 4. 反汇编分析举例 ...

  6. 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总

    嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...

  7. 常用的ARM汇编指令总结

    第一次写博客,请各路大神多多关照. 本人从事软件开发相关的工作,平时主要用c语言撸代码,前段时间因工作需要,接触到了ARM架构下的汇编指令,之前学过51单片机的汇编指令,早已经还给老师了,且ARM汇编 ...

  8. ARM 汇编的操作 设置CPU寄存器BASEPRI

    前言 RTOS 移植到ARM平台上时,使用了较多的ARM汇编指令,需要修改 CPU 寄存器 BASEPRI BASEPRI 是什么 基础优先级屏蔽寄存器,设置为 0x00时,不屏蔽 任何异常 这里使用 ...

  9. 1.15.ARM汇编指令3之逻辑指令

    ARM汇编指令之逻辑指令:and & orr & eor & bic * and 逻辑与操作指令,将operand2的值与寄存器Rn的值按位逻辑与操作,结果保存到Rd中. 指令 ...

  10. ARM汇编指令学习---基于启动文件startup.S分析

    本文主要是基于启动文件startup.s对ARM汇编指令进行学习分析. 以 . 开头一般是伪汇编/操作指令,形如: .section伪操作来定义一个段,形如: .section .testsectio ...

最新文章

  1. JobTracker节点后台线程之RetireJobs
  2. WebStorm添加多个项目到当前工程目录
  3. 思科认证网络工程师CCNA(更新完毕)
  4. JAVA通信编程(一)——串口通讯
  5. 前端工程化:围绕Jenkins打造工作流的过程
  6. python创建虚拟环境报错typeerror_解决Python中报错TypeError: must be str, not bytes问题
  7. 2014校招 百度试题及答案
  8. vue = 什么意思_Vue导入模块import xxx from '@/xxx'中的@是什么含义?
  9. 用DirectX Audio和DirectShow播放声音和音乐(3)
  10. sonarqube汉化
  11. 电脑硬盘分区合并_简单扩容电脑C盘,无需U盘重装系统
  12. 【综述】Google团队发布,一文概览Transformer模型的17大高效变种
  13. SQLServer2008 去除换行符
  14. 发几个iphone助手相关代码,供大家参考
  15. 【FPGA教程案例33】通信案例3——基于FPGA的BPSK调制信号产生,通过matlab测试其星座图
  16. 设置MyEclipse2015黑色主题背景及删除主题
  17. 最短剩余时间调度算法_LRTF:最长剩余时间优先调度算法
  18. python io操作不被打断_PyAPNs抛出IOError操作不受devi支持
  19. html网页打开很小,IE浏览器打开链接新窗口很小如何解决?
  20. Sonic安装部署之——iOS设备接入

热门文章

  1. Linux/Ubuntu 单机安装配置 zookeeper
  2. 解决由于sz rz导致抓包时文件容量增加
  3. Linux上简体繁体文件的相互转换
  4. android adb音频采集,android adb
  5. gentry同态加密算法_基于Gentry全同态加密算法公钥个数优化的研究
  6. 错误: 无法生成项目输出组“内容文件来自WebApplication1(活动)”
  7. Lua虚拟机中的数据结构与栈
  8. 使用Maven自动部署Java Web项目到Tomcat问题小记
  9. struts2中页面访问action的url问题,或许很简单
  10. 一步一步SharePoint 2007之十五:实现Form认证(5)——更改认证的Provider