ARM 微处理器7 种处理器模式
ARM 微处理器以经典的 ARMv4/v5/v6 架构为例如 ARM7、ARM9支持7 种处理器模式。这些模式是为了应对不同类型的异常和任务提供不同级别的访问权限和独立的寄存器组。以下是这 7 种模式的详细说明模式简称进入方式特点与用途用户模式usr系统上电后默认进入的模式或通过异常返回进入。普通程序执行模式。属于非特权模式不能直接访问某些系统资源如进行软件配置也不能随意切换模式。系统模式sys从特权模式如管理、快中断等中修改 CPSR 进入。与用户模式共用寄存器组但是特权模式。用于运行操作系统等需要访问系统资源的任务。快速中断模式fiq当处理器接收到 FIQ 信号时自动进入。专为需要极快响应的中断设计。拥有自己独立的 R8~R12 寄存器从而避免了压栈操作中断响应速度最快。常用于高速数据传输。外部中断模式irq当处理器接收到 IRQ 信号时自动进入。用于处理普通的外设中断。优先级低于 FIQ。绝大多数的设备中断都在此模式下处理。管理模式svc执行SWI软件中断指令或系统复位时进入。受保护的操作系统模式。通常用于操作系统内核处理系统调用和复位。中止模式abt当指令预取或数据访问失败存储器异常时自动进入。用于处理内存访问异常如缺页、非法访问等。分为指令预取中止和数据访问中止。未定义模式und当处理器执行到一条未定义指令时自动进入。用于软件模拟硬件协处理器或处理未定义指令异常。关键补充说明特权模式与非特权模式特权模式除用户模式外的 6 种可以访问所有系统资源并能自由地切换处理器模式。非特权模式用户模式不能访问某些受保护的资源以保证操作系统的安全稳定。寄存器使用每个模式都拥有独立的 R13SP栈指针和R14LR链接寄存器这保证了在进入异常或中断后能拥有自己独立的堆栈空间而不会破坏用户模式的栈。FIQ 模式最为特殊它拥有独立的 R8~R12这样在中断处理中无需保存和恢复这些寄存器从而实现了最快的上下文切换。模式切换被动切换异常或中断发生时处理器会自动进入对应的模式。主动切换在特权模式下可以通过直接修改当前程序状态寄存器CPSR的模式位来主动切换模式。小结模式名是否为特权模式主要功能用户模式usr❌运行应用程序系统模式sys✅运行操作系统任务快速中断模式fiq✅处理快速中断外部中断模式irq✅处理普通中断管理模式svc✅处理复位、软中断中止模式abt✅处理内存访问异常未定义模式und✅处理未定义指令