您的位置 首页 电源

ARM寄存器的7种作业形式和几种寻址方法

ARM寄存器的7种工作模式CPSR[5:0]10000user10001FIQ10010IRQ10011SVC10111中止11011未定义11111系统用这两个指令读写CPRS的…

ARM寄存器的7种作业形式
CPSR[5:0]
10000 user
10001 FIQ
10010 IRQ
10011 SVC
10111 间断
11011 未定义

11111 体系

用这两个指令读写CPRS的值

msr

mrs

如:

MRS R1,CPSR ; 将CPSR状况寄存器读取,保存到R1中
MRS R2,SPSR ; 将SPSR状况寄存器读取,保存到R2中
MSR R1,CPSR ; 将R1状况寄存器读取,保存到CPSR中
MSR R2,SPSR ; 将R2状况寄存器读取,保存到SPSR中

作业形式
ARM微处理器支撑7种作业形式,分别为:
1、用户形式(Usr)
用于正常履行程序
2、快速间断形式(FIQ)
用于高速数据传输
3、外部间断形式(IRQ)
用于一般的间断处理
4. 管理形式(svc)
操作体系运用的维护形式
5. 数据拜访停止形式(abt)
当数据或指令预取停止时进入该形式,可用于虚拟存储及
存储维护。
6. 体系形式(sys)
运转具有特权的操作体系使命。
7. 未定义指令间断形式(und)
当未定义的指令履行时进入该形式,可用于支撑硬件

ARM微处理器的运转形式能够经过软件改
变,也能够经过外部间断或反常处理改动。
应用程序运转在用户形式下,当处理器运转
在用户形式下时,某些被维护的体系资源是
不能被拜访的。

除用户形式以外,其他的一切6种形式称之为
非用户形式,或特权形式(Privileged
Modes);其间除掉用户形式和体系形式以
外的5种又称为反常形式(Exception
Modes),常用于处理间断或反常,以及需

要拜访受维护的体系资源等状况。

所谓寻址方法便是处理器依据指令中给出的地址信息来寻觅物理地址的方法。

当即寻址
当即寻址也叫当即数寻址,这是一种特别的寻址方法,操
作数自身就在指令中给出,只需取出指令也就取到了操作
数。这个操作数被称为当即数,对应的寻址方法也就叫做
当即寻址。例如以下指令:
ADD R0,R0,#1 ;R0←R0+1
ADD R0,R0,#0x3f ;R0←R0+0x3f
在以上两条指令中,第二个源操作数即为当即数,要求以
“#”为前缀,关于以十六进制表明的当即数,还要求在
“#”后加上“0x”或“&”。

寄存器寻址

寄存器寻址便是运用寄存器中的数值作为操作
数,这种寻址方法是各类微处理器常常选用的
一种方法,也是一种履行功率较高的寻址方
式。
ADD R0,R1,R2 ;R0←R1+R2
该指令的履行作用是将寄存器R1和R2的内容
相加,其成果存放在寄存器R0中。

寄存器直接寻址

寄存器直接寻址便是以寄存器中的值作为操作数的地
址,而操作数自身存放在存储器中。例如以下指令:
ADD R0,R1,[R2] ;R0←R1+[R2]
LDR R0,[R1] ;R0←[R1]
在第一条指令中,以寄存器R2的值作为操作数的地
址,在存储器中获得一个操作数后与R1相加,成果存
入寄存器R0中。第二条指令将以R1的值为地址的存储
器中的数据传送到R0中。

基址变址寻址

基址变址寻址便是将寄存器(该寄存器一般称作基址寄存器)
的内容与指令中给出的地址偏移量相加,然后得到一个操作数
的有用地址:
LDR R0,[R1,#4] ;R0←[R1+4]
LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4
LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4
LDR R0,[R1,R2] ;R0←[R1+R2]

多寄存器寻址

选用多寄存器寻址方法,一条指令能够完结多个寄存器值的传
送。这寻址方法能够用一条指令完结传送最多16个通用寄存器
的值。以下指令:
LDMIA R0,{R1,R2,R3,R4}

;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12]
该指令的后缀IA表明在每次履行完加载/存储操作后,R0按字长
度添加,因而,指令可将接连存储单元的值传送到R1~R4。

相对寻址

与基址变址寻址方法相相似,相对寻址以程序计数器PC的当
前值为基地址,指令中的地址标号作为偏移量,将两者相加
之后得到操作数的有用地址。以下程序段完结子程序的调用
和回来,跳转指令BL选用了相对寻址方法:
BL NEXT ;跳转到子程序NEXT处履行
……
NEXT
……
MOV PC,LR ;从子程序回来

仓库寻址

仓库是一种数据结构,按先进后出(First In
Last Out,FILO)的方法作业,运用一个称作堆
栈指针的专用寄存器指示当时的操作方位,仓库
指针总是指向栈顶。
递加仓库:向高地址方向成长
递减仓库:向低地址方向成长
满仓库:仓库指针指向最终压入仓库的有用数据项
空仓库:仓库指针指向下一个要放入数据的空方位

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/276818.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部