欢迎来到天天文库
浏览记录
ID:44988414
大小:1.26 MB
页数:52页
时间:2019-11-06
《第四讲 ARM指令系统和汇编编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、复习第三讲:ARM编程模型和异常处理ARM指令系统ARM汇编语言编程和优化第四讲ARM指令系统和汇编编程ARM编程模型ARM存储器格式:零地址开始字节线型组合ARM的七种工作模式用户模式:USER系统(高级用户)模式:SYSTEM异常模式:Supervisor,Undef,About,IRQ,FIQ不同的模式对应不同的寄存器资源和权限ARM的寄存器组成影子寄存器的概念R13,R14,R15CPSR/SPSRRegisterOrganizationSummaryUsermoder0-r7,r15,andcp
2、srr8r9r10r11r12r13(sp)r14(lr)spsrFIQr8r9r10r11r12r13(sp)r14(lr)r15(pc)cpsrr0r1r2r3r4r5r6r7Userr13(sp)r14(lr)spsrIRQUsermoder0-r12,r15,andcpsrr13(sp)r14(lr)spsrUndefUsermoder0-r12,r15,andcpsrr13(sp)r14(lr)spsrSVCUsermoder0-r12,r15,andcpsrr13(sp)r14
3、(lr)spsrAbortUsermoder0-r12,r15,andcpsrThumbstateLowregistersThumbstateHighregistersNote:SystemmodeusestheUsermoderegistersetARM异常总结异常改变指令正常执行的顺序ARM有7种异常复位数据中止(ABOUT)快速中断请求普通中断请求预取指中止(ABOUT)软件中断(SWI)未定义指令中止(UNDEF)一旦异常发生,处理器进入特定模式,跳转到向量表中的异常处理程序入口每种异常都有一个优
4、先级中断是一种特殊的异常VectorTableVectortablemaybeplacedat0xFFFF0000onARM720TandARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x00异常处理Whenanexceptionoccurs,theARM:CopiesCPSRintoSPSR_5、e>SetsappropriateCPSRbitsIfcorecurrentlyinThumbstatethenARMstateisentered.ModefieldbitsInterruptdisablebits(ifappropriate)StoresthereturnaddressinLR_SetsPCtovectoraddressToreturn,exceptionhandlerneedsto:RestoreCPSRfromSPSR_RestorePCfromLR_Th6、iscanonlybedoneinARMstate.异常返回时候PC指针的调整SWI和未定义指令异常是由当前执行的指令产生的,当SWI和未定义指令异常产生时,程序计数器PC的值还未更新,它指向当前指令后面第2条指令:MOVPC,LR当IRQ和FIQ异常产生时,程序计数器PC的值已经更新,它指向当前指令后面第3条指令。SUBSPC,LR,#4当发生指令预取中止异常时,程序要返回到该有问题的指令处,重新读取并执行该指令。因此指令预取中止异常处理程序返回到产生该指令预取中止异常的指令处SUBSPC,LR,#4数据访问中7、止异常是由数据访问指令产生的,当数据访问中止异常产生时,程序计数器PC的值已经更新,它指向当前指令后面的第3条指令。SUBSPC,LR,#8复习第三讲:ARM编程模型和异常处理ARM指令系统ARM汇编语言编程和优化第四讲ARM指令系统和汇编编程ARM指令集的特点所有的ARM指令都是32位宽,在存储器中以4字节的边界对齐3地址的数据处理指令(即两个源操作数和结果寄存器都独立设定)LOAD/STORE架构,包含非常强大的多寄存器Load和Store指令能够在单时钟周期的单条指令来完曾一项普通移位操作和一项普通的ALU8、操作可以通过协处理器来扩展新的寄存器和数据类型指令可条件执行ARM指令的分类数据处理指令分支指令数据传送指令(访问存储器)软件中断SWI指令程序状态寄存器指令条件执行NZCVConditioncodeInstructionCPSR缺省情况下,数据处理指令不影响条件码标志,但是条件码标志可由“S”来设置,CMP不需要加“S”SUBSr1,r1,#1r1减1并设置标志BNEl
5、e>SetsappropriateCPSRbitsIfcorecurrentlyinThumbstatethenARMstateisentered.ModefieldbitsInterruptdisablebits(ifappropriate)StoresthereturnaddressinLR_SetsPCtovectoraddressToreturn,exceptionhandlerneedsto:RestoreCPSRfromSPSR_RestorePCfromLR_Th
6、iscanonlybedoneinARMstate.异常返回时候PC指针的调整SWI和未定义指令异常是由当前执行的指令产生的,当SWI和未定义指令异常产生时,程序计数器PC的值还未更新,它指向当前指令后面第2条指令:MOVPC,LR当IRQ和FIQ异常产生时,程序计数器PC的值已经更新,它指向当前指令后面第3条指令。SUBSPC,LR,#4当发生指令预取中止异常时,程序要返回到该有问题的指令处,重新读取并执行该指令。因此指令预取中止异常处理程序返回到产生该指令预取中止异常的指令处SUBSPC,LR,#4数据访问中
7、止异常是由数据访问指令产生的,当数据访问中止异常产生时,程序计数器PC的值已经更新,它指向当前指令后面的第3条指令。SUBSPC,LR,#8复习第三讲:ARM编程模型和异常处理ARM指令系统ARM汇编语言编程和优化第四讲ARM指令系统和汇编编程ARM指令集的特点所有的ARM指令都是32位宽,在存储器中以4字节的边界对齐3地址的数据处理指令(即两个源操作数和结果寄存器都独立设定)LOAD/STORE架构,包含非常强大的多寄存器Load和Store指令能够在单时钟周期的单条指令来完曾一项普通移位操作和一项普通的ALU
8、操作可以通过协处理器来扩展新的寄存器和数据类型指令可条件执行ARM指令的分类数据处理指令分支指令数据传送指令(访问存储器)软件中断SWI指令程序状态寄存器指令条件执行NZCVConditioncodeInstructionCPSR缺省情况下,数据处理指令不影响条件码标志,但是条件码标志可由“S”来设置,CMP不需要加“S”SUBSr1,r1,#1r1减1并设置标志BNEl
此文档下载收益归作者所有