我的笔记

高端向量:

  一些ARM允许异常向量的定位由32位地址空间低端的正常地址范围0x00000000~0x0000001c移到接近于地址空间高端的另一地址范围0xffff0000~0xffff001c。这些改编后的地址位置称为高端向量。由IMPLEMENTATION DEFINED决定是否支持高端向量。如果支持,则在输入硬件配置时选择是使用正常向量还是高端向量。

 

进入异常的操作:

(1)降下一条指令的地址保存在相应的LR寄存器中。

(2)将CPSR复制到相应的SPSR中。

(3)迫使CPSR模式位设置成取决于异常的值。

(4)迫使PC从相关的异常向量取下一条指令,也可以设置中断禁止位来阻止其他无法处理的异常嵌套。如果再异常发生时处理器是在Thumb状态下,那么当用中断异常向量地址加载PC时,自动切换进入ARM状态。

 

ARM7TDMI:

T:表示支持16位压缩指令集Thumb。

D:表示支持片上Debug。

M:表示内嵌乘法器。

I:表示嵌入式ICE。支持片上断点和调试点。

 

从寻址方式的地址计算方法分,加载/存储指令有以下4种形式:

(1)零偏移。

(2)前索引偏移。再数据传送之前,将偏移量加载到Rn中,其结果作为传送数据的存储地址。若使用后缀“!”,则结果写回到RN中,且Rn的值不允许为R15。

(3)程序相对偏移。程序相对偏移是前索引形式的另一个版本。汇编器由PC寄存器计算偏移量,并将PC寄存器作为Rn生成前索引指令。不能使用“!”指令。

(4)后索引偏移。

 

LDM和STM-多寄存器加载/存储指令:

  LDM和STM指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为夹在多个寄存器:STM 为存储多个寄存器。允许一条指令传送16个寄存器的任何子集。

  LDM{cond}<模式>Rn{!},reglist{^}

LDM/STM的主要用途是现场保护,数据恢复和参数传递。

**指令格式中,寄存器Rn为基址寄存器,装有传送数据的初始地址,Rn不允许为R15,后缀”!“表示最后的地址写回到Rn中。寄存器列表reglist可包含多于一个寄存器或包含寄存器范围,使用”,“分开。后缀"^"不允许用户模式或系统模式下使用。若在LDM指令且寄存器列表中包含有PC时使用,那么除了正常的多寄存器传输外,将SPSR也复制到CPSR中,可用于异常处理返回。使用后缀"^"进行数据传送且寄存器列表不包含PC时,加载/存储的是用户模式的寄存器,而不是当前模式下的寄存器。 

   当Rn在寄存器列表中且使用后缀"!"时,对于STM指令,若Rn为寄存器列表中的最低数字的寄存器,则会将Rn的初值保存;其他情况下Rn的加载值和存储值不可预知的。

 

 ARM数据处理指令:(数据处理指令只能对寄存器的内容进行操作)

 - 数据传送指令

 - 算术逻辑运算指令

 - 比较指令

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值