- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
关于ARM寄存器组及工作模式知识
(周方辉)
?
?
2012/8/10
?
编改记录
编写日期
内容概要
2012-08-10
创建
?
?
?
?
?
?
?
?
目??录
1??参考文献??2
1.1??内部参考文献??2
1.2??外部参考文献??2
2??名词解释??2
3??ARM核工作模式??2
3.1??程序状态寄存器??3
3.2??寄存器分组??4
3.3??何为特权(异常)模式??6
3.4??各种模式工作机制??7
3.5??各种模式工作返回用户模式机制??9
4??ARM核工作模式初始化参考代码??11
1参考文献
1.1内部参考文献
内部参考文献指的是周方辉自生的百度博文中的文件。
无内部参考文献。
1.2外部参考文献
外部参考文献指的是相对于上述内部参考文献以外的文件。
《ARMv8_ISA_PRD03-GENC-010197-24-0.pdf》
《cortex_a8_r3p2_trm.pdf》
《CortexA8TechRefManul.pdf》
2名词解释
cpsr:??当前程序状态寄存器,其数值反映出当前程序运行的一些状态指示。
SPSR:??保存程序状态寄存器,在程序调用等情况下,需要保存一下当前程序状态寄存器的值(SPSR=CPSR),便于日后回复。
SP:??堆栈指针寄存器,其值用于执行当前堆栈栈顶(或栈底)位置。
PC:???程序指针寄存器,其值用于指向要执行的程序代码地址。
LR:????连接返回寄存器,保存要返回的地址,PC=LR。
3ARM核工作模式
常规CPU工作核心模块都是由:寄存器组和ALU两大模块组成,ALU完成数据的加工处理,寄存器用来保存数据,这些数据是直接参与ALU运算。ARM的处理器也不例外。
ARM处理器的寄存器分成许多组,不同的组完成不同环境下的工作,不过它们都共用一套ALU数据处理模块。ARM寄存器一般用了37个,CortexA8的ARM核的寄存器多大40个。
我们学习ARM工作模式需要了解和解决下面问题:
ARM寄存器为什么要分组?又是如何分组?
各组与CPU工作模式是如何关联?
各个组或工作模式是如何切换的?
我们在学习ARM寄存器分组工作模式之前,先来看一下很特殊的一个寄存器——PSR程序状态寄存器。
3.1程序状态寄存器
程序状态寄存器是一个32bits的寄存器,它记录和指示出当前程序运行状态。
格式如下:
31
30
29
28
27
26-25
24
23-20
19-16
15-10
9
8
7
6
5
4-0
N
Z
C
V
Q
IT[1:0]
J
DNM
GE[3:0]
IT[7:2]
E
A
I
F
T
M[4:0]
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
条件状态位:
N:Negative/Lessthan,负数/小于0,而置1。
Z:Zero,为0时该位置1。
C:Carry/Borrow/Extend,发生了进位/借位/扩伸,该位将置1。
V:Overflow,溢出时该位置1。
它们之间关系:
指令中的条件编码码
记助符
PSR中标志位
用意
0000
EQ
Z=1
相等
0001
NE
Z=0
不相等
0010
CS
C=1
=(无符号数)
0011
CC
C=1
(无符号数)
0100
MI
N=1
负数
0101
PL
N=0
正数或为零
0110
VS
V=1
溢出
0111
VC
V=0
未溢出
1000
HI
C=1,且Z=0
(无符号数)
1001
LS
C=0,且Z=1
=(无符号数)
1010
GE
N=V
=(带符号数)
1011
LT
N!=V
(带符号数)
1100
GT
Z=0,且Z==V
(带符号数)
1101
LE
Z=1,或N!=V
=(带符号数)
1110
AL
忽略
无条件执行
?
?
?
?
Q:Stickyoverflow,饱和计算溢出标志。(有符号运算,确保数的极性不会翻转)发生时溢出,该位置1。例如:假设8bits符号数据,125+9=127,133超过127成为负数,而Q算法保持127最大数,确保不会变成负数。
IT[7:0]:[7:2]用于IF….ELSE…条件执行状态位。
GE[3:0]:用于SIMD指令,大于或等于。
使能控制位:
A:A=1时,禁止不确定数据异常。
I:IRQ中断使能位,当其置1时,禁止IRQ发生。
F:FIQ中断使能位,当其置1时,禁止FIQ中断。
指令类别状态位:
J:Javastatebit,当T为1时,J=0,表示执行Thumb指令状态,J=1表示执行ThumbEE指令状态。
T:当其为1
您可能关注的文档
最近下载
- 部编初中语文教材单元教学存在的问题及对策研究.pdf
- 《电子竞技概论》—教学教案.docx VIP
- 2024年日历-卡通温馨-日历-月历-年历.pdf VIP
- 透明度报警器课程设计报告.docx
- 党纪法规知识测试题附有答案.docx VIP
- 2024化工企业安全生产月主题宣贯课件PPT_人人讲安全、个个会应急_畅通生命通道.pptx
- 在线网课学习课堂《交响音乐赏析(西安交通大学)》单元测试考核答案.docx
- 中华人民共和国煤炭行业标准煤与瓦斯突出矿井通风技术条件.pdf
- 强化使命担当-推动国有经济高质量发展研讨发言.docx VIP
- 2024版国开电大本科《政府经济学》在线形考(形考任务1至4)试题及答案.pdf VIP
文档评论(0)