ARM处理器存储格式与模式详解
需积分: 9 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 架构的优势,编写高效且可靠的代码。
2019-12-21 上传
2008-03-04 上传
2022-05-21 上传
2013-10-15 上传
2013-07-16 上传
2011-06-23 上传
2013-09-22 上传
2013-01-16 上传
fendouc
- 粉丝: 51
- 资源: 1
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫