- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
各种异常地址相对应的址
ARM异常向量表P66
Reset:0x0
Und:0x4
Swi:0x8
Abt(指令预取):0xc
Abt(dA):0x10
Irq:0x18
Fiq:0x1c
高端地址:0xffff0000
合法立即数是怎么组成的
一、立即数指令码的组成ARM公司将32bit指令码分为如下两部分:
指令编码部分(20bit)
立即数部分(12bit)
D31——D12
D11——D0
?
D11——D8
D7——D0
?
ROR值
Imm8值
32bit立即数通过Imm8值循环右移ROR值*2bit得到。即:shifter_operand = immed_8 Rotate_Right (rotate_imm * 2)。二、如何判断一个数是否是合法立即数?
首先将这个数转换为32bit16进制形式,例如218=0xDA=0x000000DA
除零外,仅有一位数为合法立即数。
除零外,仅有二位数,并且相邻(包括首尾,如0x1000000A)的为合法立即数。
除零外,仅有三位数,并且相邻(包括中间有0相间,例如0包括首尾相邻,如:0,这三位数中,最高位取值仅能为1、2、3,最低位取值仅能为4、8、C,中间位0x0~0xF。这种组合的为合法立即数。
除了以上三种,其他基本是非法立即数。
三、非法立即数如何输入?
利用LDR伪指令可将任意32bit的立即数赋给寄存器。
格式:LDR RD,=#Imm32
编译时,编译器会优先使用MOV或者MVN指令来加载立即数,以便提高代码运行效率,如不行,则一般编译成如下形式:
LDR RD,[PC,#offset]
....
PC+OFFSET:.word Imm32
1.如十六进制数在0x00到0xFF之间,则它一定是合法的1.若十六进制数0XFF则将十六进制的数转化成十进制2.如果这个十进制数能够被4整除则这个十六进制的立即数和合法的,否则是非法的3例如:0x101=257/4=64.25 非法 0x104=260/4=65 合法
Arm指令
特权模式(2-7),异常模式(2-7除掉5)
ARM有七种工作方式:
1、用户模式(usr):正常的程序执行状态
2、快速中断模式(fiq):
3、中断模式(irq):
4、管理模式(svc):操作系统使用的保护模式
5、系统模式(sys):运行具有特权的操作系统任务
6、数据访问终止模式(abt):数据或指令预取终止时进入该模式
7、未定义指令终止模式(und):未定义的指令执行时进入该模式
可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式。 除用户模式外,其余6种工作模式都属于特权模式。 特权模式中除了系统模式以外的其余5种模式称为异常模式。 大多数程序运行于用户模式。 进入特权模式是为了处理中断、异常、或者访问被保护的系统资源。
未定义指令终止摸式:虚拟存储和存储保护
系统模式:主要运行操作系统
数据访问终止模式:用来支持用软件仿真硬件协处理器
除用户模式外均是特权模式,特权模式之间模式可以任意切换,访问全局资源,但是由用户进入到特权模式需异常中断;这6种模式中,除了系统模式,其余的又是异常模式,
当相应程序发生异常时就进入相应的模式,每种模式有自己的堆栈和寄存器。
系统模式即不是通过异常进入的,但是也可以进行全局的数据访问;和用户 是一样的寄存器;也是特权模式的一种;同时也可以切换模式,
异常向量表:共8*4大小的空间,共七种异常向量源,除上面4种异常模式外,增加了复位项,同时增加了指令预取异常和软中断
0x00
复位
0x04
指令未定义
0x0b
软中断
0x0c
指令预取异常
0x10
数据异常
0x14
保留
0x18
IRQ
0x1c
FIQ
各种异常返回的指令 eg subs pc,lr_irq,#4
? Reset
? Und
? Swi
? Pabt
? Dabt
? Irq
? fiq
掌握各种异常下相应的工作模式
一、ARM体系的CPU有以下7种工作模式:
1、用户模式(usr):正常的程序执行状态
2、快速中断模式(fiq):
3、中断模式(irq):
4、管理模式(svc):操作系统使用的保护模式
5、系统模式(sys):运行具有特权的操作系统任务
6、数据访问终止模式(abt):数据或指令预取终止时进入该模式
7、未定义指令终止模式(und):未定义的指令执行时进入该模式
注解:
可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式;
除用户模式外,其余6种工作模式都属于特权模式;
特权模式中除了系统模式以外的其余5种模式称为异常
文档评论(0)