ARM汇编指令(ARM工作模式、寄存器)
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)通用寄存器
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工作模式、寄存器)相关推荐
- ARM汇编指令以及伪指令
文章目录 ARM寄存器 ARM指令的一般编码格式 ARM指令的条件域 ARM寻址方式 数据处理指令的操作数寻址方式 立即数寻址方式 寄存器寻址方式 寄存器移位寻址方式 字或无符号字节的Load/Sto ...
- 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 : -- A ...
- ARM汇编指令调试方法
学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...
- arm汇编指令详细整理及实例详解
目录 一.简介 二.ARM 汇编指令说明 2.1 32位数据操作指令 2.2 32位存储器数据传送指令 2.3 32位转移指令 2.4 其它32位指令 三.实例讲解 3.1 MRS 3.2 MSR 3 ...
- arm汇编指令——分析问题的利器
文章目录 arm汇编指令为什么重要 1. 主导问题 2. arm汇编指令分类介绍 通用寄存器 状态寄存器 数据转移指令 寻址格式 运算指令 比较指令 跳转指令 3. 反汇编接口 4. 反汇编分析举例 ...
- 嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总
嵌入式工程师到底要不要学习ARM汇编指令? 网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言. 而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精.搞 ...
- 常用的ARM汇编指令总结
第一次写博客,请各路大神多多关照. 本人从事软件开发相关的工作,平时主要用c语言撸代码,前段时间因工作需要,接触到了ARM架构下的汇编指令,之前学过51单片机的汇编指令,早已经还给老师了,且ARM汇编 ...
- ARM 汇编的操作 设置CPU寄存器BASEPRI
前言 RTOS 移植到ARM平台上时,使用了较多的ARM汇编指令,需要修改 CPU 寄存器 BASEPRI BASEPRI 是什么 基础优先级屏蔽寄存器,设置为 0x00时,不屏蔽 任何异常 这里使用 ...
- 1.15.ARM汇编指令3之逻辑指令
ARM汇编指令之逻辑指令:and & orr & eor & bic * and 逻辑与操作指令,将operand2的值与寄存器Rn的值按位逻辑与操作,结果保存到Rd中. 指令 ...
- ARM汇编指令学习---基于启动文件startup.S分析
本文主要是基于启动文件startup.s对ARM汇编指令进行学习分析. 以 . 开头一般是伪汇编/操作指令,形如: .section伪操作来定义一个段,形如: .section .testsectio ...
最新文章
- JobTracker节点后台线程之RetireJobs
- WebStorm添加多个项目到当前工程目录
- 思科认证网络工程师CCNA(更新完毕)
- JAVA通信编程(一)——串口通讯
- 前端工程化:围绕Jenkins打造工作流的过程
- python创建虚拟环境报错typeerror_解决Python中报错TypeError: must be str, not bytes问题
- 2014校招 百度试题及答案
- vue = 什么意思_Vue导入模块import xxx from '@/xxx'中的@是什么含义?
- 用DirectX Audio和DirectShow播放声音和音乐(3)
- sonarqube汉化
- 电脑硬盘分区合并_简单扩容电脑C盘,无需U盘重装系统
- 【综述】Google团队发布,一文概览Transformer模型的17大高效变种
- SQLServer2008 去除换行符
- 发几个iphone助手相关代码,供大家参考
- 【FPGA教程案例33】通信案例3——基于FPGA的BPSK调制信号产生,通过matlab测试其星座图
- 设置MyEclipse2015黑色主题背景及删除主题
- 最短剩余时间调度算法_LRTF:最长剩余时间优先调度算法
- python io操作不被打断_PyAPNs抛出IOError操作不受devi支持
- html网页打开很小,IE浏览器打开链接新窗口很小如何解决?
- Sonic安装部署之——iOS设备接入
热门文章
- Linux/Ubuntu 单机安装配置 zookeeper
- 解决由于sz rz导致抓包时文件容量增加
- Linux上简体繁体文件的相互转换
- android adb音频采集,android adb
- gentry同态加密算法_基于Gentry全同态加密算法公钥个数优化的研究
- 错误: 无法生成项目输出组“内容文件来自WebApplication1(活动)”
- Lua虚拟机中的数据结构与栈
- 使用Maven自动部署Java Web项目到Tomcat问题小记
- struts2中页面访问action的url问题,或许很简单
- 一步一步SharePoint 2007之十五:实现Form认证(5)——更改认证的Provider