首页 ARM工作状态

ARM工作状态

举报
开通vip

ARM工作状态ARM工作状态 ARM工作状态 从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令。 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。 存储...

ARM工作状态
ARM工作状态 ARM工作状态 从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令。 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。 存储器格式 ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。 存储器格式 ARM体系结构可以用两种方式存储字数据,称之为大端格式和小端格式。 大端格式:字数所的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节高地址存放的是字数据的高字节。 工作模式 ARM微处理器支持7种工作模式,分别为: 1、​ 用户模式(Usr):用于正常执行程; 2、​ 快速中断模式(FIQ):用于高速数据传输; 3、​ 外部中断模式(IRQ):用于通常的中断处理; 4、​ 管理模式(svc):操作系统使用的保护模式; 5、​ 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可以用虚拟存储及存储保护。 6、​ 系统模式(sys):运行具有特权的操作系统任务; 7、​ 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件。 ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断异常处理改变。应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。 除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。 指令长度 ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。 ARM寄存器 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决于ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14-R0、程序计数器PC、一个状态寄存器都是可访问的。 在ARM工作状态下,任一时刻可以访问16个通用寄存器和一到两个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器,具体见下页图: 通用寄存器 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 在不同模式下,寄存器是相同的 分组寄存器(the banked registers) R8 – R14 在不同模式下,寄存器是不同的 程序计数器 R15(PC) 寄存器R13在ARM模式下作为堆栈指针SP 寄存器R14用作子程序链接寄存器(Link Register - LR),也称为LR,指向函数的返回地址 寄存器R15被用作程序计数器,也称为PC。其值等于当前正在执行的指令的地址+8(因为在取址和执行之间多了一个译码的阶段) 状态寄存器 CPSR SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq 在用户模式下CPSR,当进入其它模式时,CPSR内的值会保存到SPSR中去,在异常模式结束之后,SPSR内的值再还原给CPSR,使其恢复。 CPSR的低5位用于记录ARM处理器的工作模式, V:在作运算时,数据太大而溢出,overflow位会变化 寻址方式 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就是指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令: 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】 ADD 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)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 递增堆栈:向高地址方向生长 递减堆栈:向低地址方向生长 满堆栈:堆栈指针指向最后压入堆栈的有效数据项; 空堆栈:堆栈指针指向下一个要放入数据的空位置。
本文档为【ARM工作状态】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_803811
暂无简介~
格式:doc
大小:251KB
软件:Word
页数:5
分类:互联网
上传时间:2010-09-23
浏览量:41