单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Confidential,ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、中止模式、未定义模式和系统模式,ARM7TDMI完全支持这七种模式。,2.5,处理器模式,处理器模式,说明,备注,用户,(usr),正常程序工作模式,不能直接切换到其它模式,系统,(sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断,(fiq),支持高速数据传输及通道处理,FIQ,异常响应时进入此模式,中断,(irq),用于通用中断处理,IRQ,异常响应时进入此模式,(svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止,(abt),用于支持虚拟内存和,/,或存储器保护,在,ARM7TDMI,没有大用处,未定义,(und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,处理器模式,说明,备注,用户,(usr),正常程序工作模式,不能直接切换到其它模式,系统,(sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断,(fiq),支持高速数据传输及通道处理,FIQ,异常响应时进入此模式,中断,(irq),用于通用中断处理,IRQ,异常响应时进入此模式,管理,(svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止,(abt),用于支持虚拟内存和,/,或存储器保护,在,ARM7TDMI,没有大用处,未定义,(und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,除用户模式外,其它模式均为特权模式。ARM内部存放器(如CPSR)和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能自由切换到别的模式。,未定义,(und),中止,(abt),管理,(svc),中断,(irq),快中断,(fiq),系统,(sys),2.5.1,特权模式,它们之间的区别在于有些操作只能在特权模式下才被允许,如直接改变模式和中断使能等;系统模式实际上相当于用户模式的特权方式,处理器模式,说明,备注,用户,(usr),正常程序工作模式,不能直接切换到其它模式,系统,(sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断,(fiq),支持高速数据传输及通道处理,FIQ,异常响应时进入此模式,中断,(irq),用于通用中断处理,IRQ,异常响应时进入此模式,管理,(svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止,(abt),用于支持虚拟内存和,/,或存储器保护,在,ARM7TDMI,没有大用处,未定义,(und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,未定义,(und),中止,(abt),管理,(svc),中断,(irq),快中断,(fiq),这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的异常模式。每种异常模式都有一些独立的存放器,以防止异常退出时用户模式的状态不可靠。,2.5.2,异常模式,当特定的异常出现的时候,程序就会进入到相应的异常模式中。不同的模式 对应于应用程序的 不同的阶段:比方正常运行,中断等,处理器模式,说明,备注,用户,(usr),正常程序工作模式,不能直接切换到其它模式,系统,(sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断,(fiq),支持高速数据传输及通道处理,FIQ,异常响应时进入此模式,中断,(irq),用于通用中断处理,IRQ,异常响应时进入此模式,管理,(svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止,(abt),用于支持虚拟内存和,/,或存储器保护,在,ARM7TDMI,没有大用处,未定义,(und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,这两种模式都不能由异常进入,而且它们使用完全相同的存放器组。,系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的存放器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源,而不必担忧异常出现时任务状态变得不可靠。,系统,(sys),用户,(usr),2.5.3,用户和系统模式,在ARM7TDMI处理器内部有37个用户可见的存放器。,在不同的工作模式和处理器状态下,程序员可以访问的存放器也不尽相同。,2.6 ARM状态下内部存放器,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_,svc,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,2.6.1 ARM状态各模式下的存放器,SPSR_fiq,SPSR_irq,SPSR_und,SPSR_abt,SPSR_svc,CPSR,R15,R14_fiq,R14_irq,R14_und,R14_abt,R14_svc,R14,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,R7,R6,R5,R4,R3,R2,R1,R0,所有的37个存放器,分成两大类:,31个通用32位存放器;,6个状态存放器。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,无,CPSR,R15,R14,R13,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,用户,无,CPSR,R15,R14,R13,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,系统,SPSR_svc,CPSR,R15,R14_svc,R13_svc,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,管理,SPSR_abt,CPSR,R15,R14_abt,R13_abt,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,中止,SPSR_und,CPSR,R15,R14_und,R13_und,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,未定义,SPSR_irq,CPSR,R15,R14_irq,R13_irq,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,中断,SPSR_fiq,CPSR,R15,R14_fiq,R13_fiq,R12_fiq,R11_fiq,R10_fiq,R9_fiq,R8_fiq,R7,R6,R5,R4,R3,R2,R1,R0,快中断,2.6.2 ARM状态各模式下可以访问的存放器,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_svc,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,2.6.3 一般的通用存放器,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,R7,R6,R5,R4,R3,R2,R1,R0,在汇编语言中存放器R0R12为保存数据或地址值的通用存放器。它们是完全通用的存放器,不会被体系结构作为特殊用途,并且可用于任何使用通用存放器的指令。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_f