您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > ARM处理器编程模型与指令系统
嵌入式系统设计第四章ARM处理器编程模型与指令系统主要内容•4.1ARM微处理器的工作状态•4.2ARM微处理器的运行模式•4.3ARM体系结构的存储器格式•4.4寄存器组织•4.5ARM的异常•4.6ARM微处理器的指令系统基础•4.7ARM指令的寻址方式•4.8ARM指令集•4.9Thumb指令及应用4.1ARM微处理器的工作状态•从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM状态:此时处理器执行32位的字对齐的ARM指令Thumb状态:此时处理器执行16位的、半字对齐的Thumb指令4.1ARM微处理器的工作状态•ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在开始执行代码时,应该处于ARM状态进入ARM状态:当操作数寄存器的状态位(位0)为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。处理器的工作状态例:从ARM状态切换到Thumb状态:LDRR0,=Label+1BXR0从Thumb状态切换到ARM状态:LDRR0,=LabelBXR0主要内容•4.1ARM微处理器的工作状态•4.2ARM微处理器的运行模式•4.3ARM体系结构的存储器格式•4.4寄存器组织•4.5ARM的异常•4.6ARM微处理器的指令系统基础•4.7ARM指令的寻址方式•4.8ARM指令集•4.9Thumb指令及应用4.2ARM微处理器的运行模式•ARM微处理器支持7种运行模式,分别为:1.用户模式(usr):ARM处理器正常的程序执行状态;2.快速中断模式(fiq):用于高速数据传输或通道处理;3.外部中断模式(irq):用于通用的中断处理;4.管理模式(supervisor):操作系统使用的保护模式;5.数据访问终止模式(abort):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护;6.系统模式(system):运行具有特权的操作系统任务;7.未定义指令中止模式(undefined):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。4.2ARM微处理器的运行模式除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(PrivilegedModes);除用户模式和系统模式以外的5种又称为异常模式(ExceptionModes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。处理器模式说明备注用户(usr)正常程序执行模式不能直接切换到其它模式系统(sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式处理器工作模式•ARM处理器有7种工作模式主要内容•4.1ARM微处理器的工作状态•4.2ARM微处理器的运行模式•4.3ARM体系结构的存储器格式•4.4寄存器组织•4.5ARM的异常•4.6ARM微处理器的指令系统基础•4.7ARM指令的寻址方式•4.8ARM指令集•4.9Thumb指令及应用4.3ARM体系结构的存储器格式•ARM体系结构可以用两种方法存储字数据大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。841110910765323124231615870字地址840低地址高地址4.3ARM体系结构的存储器格式•ARM体系结构可以用两种方法存储字数据小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。117891023456013124231615870字地址840低地址高地址示例A.小端存储法(0x01234567)地址0x80000x80010x80020x8003数据(16进制表示)0x670x450x230x01数据(二进制表示)01100111010001010010001100000001B.大端存储法地址0x80000x80010x80020x8003数据(16进制表示)0x010x230x450x67数据(二进制表示)00000001001000110100010101100111主要内容•4.1ARM微处理器的工作状态•4.2ARM微处理器的运行模式•4.3ARM体系结构的存储器格式•4.4寄存器组织•4.5ARM的异常•4.6ARM微处理器的指令系统基础•4.7ARM指令的寻址方式•4.8ARM指令集•4.9Thumb指令及应用4.4寄存器组织4.4.1ARM状态下的寄存器组织通用寄存器:通用寄存器包括R0~R15,可以分为三类:未分组寄存器R0~R7分组寄存器R8~R14程序计数器PC(R15)ARM状态下的寄存器组织R8_figR9_figR14_undR13_undR14_irqR13_irqR14_abtR13_abtR15(PC)R14R13R12R11R10R13_svcR14_figR13_figR12_figR11_figR10_figR14_svcSPSR_undSPSR_irqSPSR_abtSPSR_svcSPSR_figUserFIGSupervisorAbortIRQUndefined状态寄存器CPSR分组寄存器System通用寄存器和程序计数器异常模式特权模式模式R9R8R7R6R5R4R3R2R1R0处理器工作模式•特权模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。未定义(und)中止(abt)管理(svc)中断(irq)快中断(fiq)系统(sys)处理器工作模式•用户和系统模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。系统(sys)用户(usr)寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15状态寄存器R16(CPSR)CPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断ARM状态各
本文标题:ARM处理器编程模型与指令系统
链接地址:https://www.777doc.com/doc-23656 .html