ARM处理器存储格式与模式详解

需积分: 9 1 下载量 19 浏览量 更新于2024-09-14 收藏 227KB DOC 举报
"ARM 学习笔记概述" 在深入探讨 ARM 架构之前,首先要明白的是,ARM 处理器采用两种主要的工作状态:ARM 和 Thumb 模式,这两种模式决定了指令集的不同,但并不意味着存在两种存储格式。存储器在 ARM 处理器中的布局和访问方式对于理解和编写有效的程序至关重要。 1. **ARM 存储器结构** - **程序存储器**:ARM 指令必须存储在可以被 4 字节整除的地址上,以确保 32 位指令的对齐。Thumb 指令则需存储在 2 字节边界上,即地址的最低位为 0。不遵循此规则可能导致访问错误或不可预测的行为。 - **数据存储器**:在顺序执行时,ARM 不会遇到非对齐访问的问题,但在跳转指令如 b、bl、blx、bx 的使用中可能会发生。如果将非对齐的 32 位地址加载到 R15(程序计数器),在 ARM 状态下,结果是不确定的;而在 Thumb 状态下,地址的末尾 0 将被忽略。 2. **ARM 处理器模式** - **用户模式**:这是最常见的运行模式,应用程序通常在此模式下运行,具有有限的系统访问权限。 - **特权模式**:包括管理模式和其他异常模式,如 FIQ(快速中断)、IRQ(普通中断)、ABT(访问异常)、UND(未定义指令)和 SVC(服务模式)。特权模式允许访问更多系统资源,如初始化设置、中断处理等。 - **系统上电或复位后,处理器通常会进入管理模式**,进行必要的初始化工作,然后通过修改 CPSR(当前程序状态寄存器)的 m4-m0 位切换到用户模式。 3. **ARM 状态下的寄存器** - **通用寄存器**(R0-R7):在所有模式下都可使用,是真正的通用寄存器,但中断服务程序中使用它们时要注意保护,以防数据丢失。 - **特殊用途寄存器**(R13-R14):R13 通常用作堆栈指针(SP),不同模式下有不同的 R13 实例,每个对应一个特定的异常模式。R14 通常用作链接寄存器(LR),在子程序调用和返回时保存返回地址。 - **程序计数器(PC)**:与传统的单片机不同,ARM 的 PC 是可读写的,这意味着程序员可以直接修改程序的执行流程。 理解这些基础知识是学习 ARM 架构的第一步。ARM 的灵活性和高效性使其广泛应用于嵌入式系统、移动设备和服务器领域。深入学习还包括了解 ARM 的寻址模式、指令集、异常处理机制以及与之相关的工具链和调试技术。熟悉这些概念将有助于开发者更好地利用 ARM 架构的优势,编写高效且可靠的代码。