当前位置:首页 > 单片机 > 单片机
[导读] 我在这里,将我在学习这篇文章时遇到的疑问及理解和大家分享一下 LPC2300.S文件中的相关软中断代码如下: EXPORT SWI_Handler extern EnableIrqFunc ;使能中断函数名,用C语言实现 extern DisableI

我在这里,将我在学习这篇文章时遇到的疑问及理解和大家分享一下 LPC2300.S文件中的相关软中断代码如下:

EXPORT SWI_Handler
extern EnableIrqFunc ;使能中断函数名,用C语言实现
extern DisableIrqFunc ;禁止中断函数名,用C语言实现
SWI_Handler
STMFD SP!, {R0,R12,LR} ;入栈
LDR R0, [LR,#-4] ;取指令
BIC R0,R0,#0xFF000000 ;取软件中断命令号
CMP R0,#0 ;和0比较,因为我的使能中断用了软件中断命令0,禁止中断使用了软件中断命令1
BLEQ EnableIrqFunc ;为零调用使能中断函数
BLNE DisableIrqFunc ;不为零调用禁止中断函数
LDMFD SP!,{R0,R12,PC} ;出栈 我的疑问主要在:STMFD SP!, {R0,R12,LR} ;入栈
LDR R0, [LR,#-4] ;取指令 入栈的过程怎样,他是如何入栈的?为什么LDR R0, [LR,#-4] 表示的是取指令? 入栈的过程:ARM规定,sp始终是指向栈顶位置的,STM指令把寄存器列表中索引最小的寄存器存在最低地址,所以R0在最低地址,向上依次是R0,R1,R2,...R12,LR。完成后SP指向保存R0的地址。


详解:对于大多数的设计来说都是把栈底设置在高地址,栈顶设置在低地址,即是说上面所说的首先要SP=SP-14×4,这里理解了之后就好理解了,那么执行这条指令后,栈中的数据顺序从栈底到栈顶为LR ,R12,R6,R5,R4,R3,R2,R1,R0,此时SP-->R0,即栈顶,这和堆栈的定义没有冲突,如果SP指向的是LR的话栈就没有用了哦,其实这里STMFD有两种方法处理的:(STMFD的用法详见上一篇博文)第一种先计算总共压入的数据个数,直接一次更改指针SP=SP-4*(number)并从低地址向高地址存入数据第二种就是每压入一次就把SP=SP-1*4,同时一个一个的把数据从高地址向低地址压入注意点:R0、R1....LR等寄存器是没有地址的,它们只有保存在里面的数据,所以如上图中:LR对应基址-4是将LR里面的值放入基址减4中,这里的减4与LDR R0, [LR,#-4]的减4不是同一个概念。那么LDR R0, [LR,#-4]为什么解释为取指令呢?将存储器地址为(LR-4)的字数据读入寄存器R0。 这里你必须对ARM7的3级流水线过程做一个了解: PC 代表程序计数器,流水线使用三个阶段,因此指令分为三个阶段执行:1.取指(从存储器装载一条指令);2.译码(识别将要被执行的指令);3.执行(处理 指令并将结果写回寄存器)。 而R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定 将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址 加8字节的地址,即:PC值=当前程序执行位置+8;

ARM指令是三级流水线,取指,译指,执行时同时执行的,现在PC指向的是正在取指的地址,那么cpu正在译指的指令地址是PC-4(假设在ARM状态 下,一个指令占4个字节),cpu正在执行的指令地址是PC-8,也就是说PC所指向的地址和现在所执行的指令地址相差8。

在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2,对于ARM指令是减4,对于Thumb指令是减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。 
在异常发生时,LR保存的是PC-4,而执行指令是PC-8,所以LDR R0, [LR,#-4]解释为取指令!


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭