您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
svc什么意思(svc增强模式是什么意思)
模式,寄存器,地址svc什么意思(svc增强模式是什么意思)
发布时间:2020-12-06加入收藏来源:互联网点击:
很多朋友想了解关于状态寄存器的一些资料信息,下面是小编整理的与状态寄存器相关的内容分享给大家,一起来看看吧。很多朋友想了解关于数据寄存器的一些资料信息,下面是小编整理的与数据寄存器相关的内容分享给大家,一起来看看吧。
1.臂组件:组件中的IA、IB、DA、DB和FD、ED、FA和EA。
2.ARM处理器9种模式详解
3.夫人和MSR指示的详细解释
4.嵌入式DDR布线分析DDR信号布线介绍
5.嵌入式学习中IRQ和FIQ的区别
在ARM指令的多数据传输(STM,LDM)中提到多寄存器加载和存储指令分为两组:一组用于数据存储和读取,对应IA,IB,DA,DB,另一组用于堆栈操作,对应FD,ed,FA,EA,
两组中相应的指令具有相同的含义。
IA:之后增加;表示数据传输后地址增加IB:da前增加:后减少3360前减少
即:
STMIB(地址先增后完成操作)STMFA(全增栈)STMIA(全增栈后地址增)STMEA(空增栈)STMDB(地址先减后完成操作)STMFD(全减栈)STMDA(全减栈后地址减)STMED(空减栈)以上两组指令含义相同,但应用场合不同。类似地:
1、LDMIB、LDMED
2、LDMIA、LDMFD
3、LDMDB、LDMEA
4、LDMDA、LDMFA .
IA模式指示:每次传输后的地址4;(增加后)
DB模式指示:每次传输前的地址-4;(减少前)
多寄存器加载/存储指令有8种模式(4种用于数据块传输,4种用于堆栈操作)。
一般来说,STMDB和LDMIA指令是成对使用的,STMDB用于将寄存器压入堆栈,LDMIA用于将寄存器弹出堆栈,后者用于保存使用过的寄存器。
例子,
命令:stmdb sp!{r0-r12,lr}含义:sp=sp-4,先按lr,sp=lr(即把lr的内容放入sp指向的内存地址)。Sp=sp-4,再按r12,sp=r12。Sp=sp-4,再按r11,SP=R11,SP=SP-4,最后按r0,sp=r0。
如果要弹出r0-r12和lr,可以使用ldmia命令:ldmia sp!{r0-r12,lr}示例
比如STMIA,当前r0指向的内存地址是0x1000,STMIA R0!{r1-R7}首先将r1存储在0x1000中,然后将r2存储在0x1004中,然后将r3存储在0x1008中。如果是32位处理器,就是一次加4个字节,以此类推,然后把r1-r7存储在递增地址中。这个r0!意思是从r0的地址存入。STMDB是从r0开始递减的地址,依次存储。
例子
LDMIA:LDM表示多寄存器访问。以下参数用“,”分隔,第一个参数是第一个地址。第二个参数是寄存器列表,用“{}”括起来。LDMIA R0!{ R1-R4 };R0表示要操作的存储空间的第一个地址。要操作的数据数量由寄存器列表决定。现在是R1到R4,有4个数据(每个数据32位)。
具体地,地址为R0的存储空间中的数据被分配给R1的地址为R0 4的存储空间中的数据,R2的地址为R0 8的存储空间中的数据,以及R3的地址为R0 12的存储空间中的数据被分配给R4。
执行前所有样本指令的存储器空间和寄存器条件:mem 32[0x 1000 c]=0x 04 mem 32[0x 10008]=0x 03 mem 32[0x 10004]=0x 02 mem 32[0x 10000]=0x01r 0=0x 00010000 R1=0x 000000 R3=0x
器变化:r0 = 0x00010010r1 = 0x01r2 = 0x02r3 = 0x03r4 = 0x042、ARM处理器的9种模式详解
ARM的处理器模式分几种要看是ARM的哪个系列,但是以现在的系列来说,有九种模式,这九种模式就是CPU在运算的时候,本来在读程序,突然系统发生异常,比如说蓝屏,这个时候操作系统肯定有相关的处理,同时我们也需要CPU一些信号,那么我们就可以通话CPU的切换来进行处理,这样实际上是在最低级别上考虑到的方式来完成了安全控制和效率控制,还有节能控制,所以这就是我们为什么要模式切换的原因,它模式与模式之间相对而言是比较独立的。
Cortex-A九种处理器模式
1,user模式:用户模式,大部分程序运行时候的非特权模式。
2,FIQ模式:快速中断模式,进入FIQ中断异常,中断也会分类,除了硬件中断还有软件中断,中断的时候也会有消息传过来,这个消息可能数据量比较大,而且要求还很大,还有的消息数据量比较小,它要求就会很小,这种要求大的中断我们就称为快速中断,比较小的我们就称为一般中断。
3,IRQ模式:一般中断模式。
4,Supervisor(SVC)模式:超级管理员,它主要是用来管理调用指令被执行或者reset的时候,这个模式的权限级别非常大,所以一般情况下是不能随便用的。
5,Monitor(MON)模式:监视模式,就像后台服务,就像监测网络信号,其实CPU不需要去处理一些用户中断,这个模式主要用来安全扩展模式,只用于安全。
6,Abort(ABY)模式:退出模式,通常开始发生了用户级别的开始,就会出现这样的退出,这个时候CPU就会说暂停下面的代码运行,就直接退出。
7,Hyp(HYP)模式:是一个超级的监视者,它比超级管理员要稍微低一点,它主要是用来做一些虚拟化的扩展。
8,Undef(UND)模式:它就是未定义的指令执行的时候,比如说一条指令是CPU不识别的,就叫做未定义。
9,System(SYS)模式:系统模式,当系统自己异常的时候,就会发生这样的模式,它有一个特点就是可以进行各个模式的切换,在不同的状态的时候,访问的寄存器就有可能不一样,这个模式用到的寄存器与用户模式是共享的,只是访问级别不一样。这九种模式里面User模式称为非特权模式,其他的全部称为特权模式。
3、MRS,MSR指令详解
在ARM处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。
例如:
MRS R1,CPSR ; 将CPSR状态寄存器读取,保存到R1中
MRS R2,SPSR ; 将SPSR状态寄存器读取,保存到R2中
通过MRS指令可以取得状态寄存器里的值,然后比较其模式位M[4:0]的值判断当前所处模式,当然也可以比较其它相应位了解当前CPU的状态。
同样,在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。
由于xPSR寄存器代表了CPU的状态,其每个位有特殊意义,在执行对xPSR状态寄存器写入时(读取时不存在该用法),为了防止误操作和方便记忆,将xPSR里32位分成四个区域,每个区域用小写字母表示:
c 控制域屏蔽 psr[7..0]
x 扩展域屏蔽 psr[15..8]
s 状态域屏蔽 psr[23..16]
f 标志域屏蔽 psr[31..24]
注意:区域名必须为小写字母
向对应区域进行执行写入时,使用xPSR_x可以指定写入区域,而不影响状态寄存器其它位,如:
使能IRQ中断:
ENABLE_IRQ
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |