嵌入式linux学习笔记之之arm工作模式

本文的原文来自国嵌视频,

arm工作模式

1、工作状态

从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
• 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令。
• 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。

当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

2、存储器格式

ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。

ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。
• 大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
• 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

3、指令长度

ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。

4、工作模式

ARM微处理器支持7种工作模式,分别为:
1、用户模式(Usr)                             用于正常执行程序
2、快速中断模式(FIQ)                          用于高速数据传输
3、外部中断模式(IRQ)                          用于通常的中断处理

4. 管理模式(svc)                               操作系统使用的保护模式
5. 数据访问终止模式(abt)                      当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
6. 系统模式(sys)                               运行具有特权的操作系统任务。
7. 未定义指令中止模式(und)            当未定义的指令执行时进入该模式,可用于支持硬件

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。
大多数应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。

除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(PrivilegedModes);其中除去用户模式和系统模式以外的5种又称为异常模式(Exception
Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

arm寄存器

ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个状态寄存器都是可访问的。

在ARM工作状态下,任一时刻可以访问16个通用寄存器和一到两个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器, 具体见下页图:

寄存器(Thumb状态)

Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄
存器(LR)和CPSR。具体见下页图:

寄存器对应

Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:
v Thumb状态下和ARM状态下的R0~R7是相同的。
v Thumb状态下和ARM状态下的CPSR和SPSR是相同的。
v Thumb状态下的SP对应于ARM状态下的R13。
v Thumb状态下的LR对应于ARM状态下的R14。
v Thumb状态下的程序计数器PC对应于ARM状态下R15。

通用寄存器

§ R0~R15
§ R13_svc、R14_svc
§ R13_abt、R14_abt
§ R13_und、R14_und
§ R13_irq、R14_irq
§ R8_fiq ~ R14_fiq

其中:

不分组寄存器(The unbanked registers)    R0-R7
v分组寄存器(The banked registers)          R8-R14
v程序计数器:                                                R15(PC)                             

R0-R7是不分组寄存器。这意味着在所有处理器模式下,访问的都是同一个物理寄存器。未分组寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可
以使用未分组寄存器。

v分组寄存器R8-R12
1. FIQ模式分组寄存器R8-R12
2. FIQ以外的分组寄存器R8-R12
v分组寄存器R13、R14
1. 寄存器R13通常用做堆栈指针SP
2. 寄存器R14用作子程序链接寄存器(Link  Register-LR),也称为LR,指向函数的返回地址

寄存器R15被用作程序计数器,也称为PC 。其值等于当前正在执行的指令的地址+8(因为在取址和执行之间多了一个译码的阶段)。

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值