当前位置: 首页 > news >正文

ARM架构中的重要知识点的详细解释

1. ARM可以工作的模式名字
ARM处理器可以工作在以下几种模式:
- User 模式:正常程序执行模式。
- FIQ 模式(Fast Interrupt Request):快速中断处理模式,优先级最高。
- IRQ 模式(Interrupt Request):普通中断处理模式。
- Supervisor 模式:操作系统的保护模式,通常用于处理系统调用和异常。
- Abort 模式:用于处理内存访问异常。
- Undefined 模式:用于处理未定义指令异常。
- System 模式:特权模式,类似于User模式,但可以访问更多系统资源。

2. ARM核有多少个寄存器?
ARM架构核心有37个寄存器,其中包括:
- 31个通用寄存器(R0-R15,多个模式中可能存在“银行化”寄存器)
- 6个状态寄存器(CPSR和SPSR等)

3. 什么寄存器用于存储PC和LR寄存器?
- PC(Program Counter,程序计数器):用于存储当前执行指令的地址,通常由**R15**寄存器表示。
- LR(Link Register,链接寄存器):用于存储子程序返回地址,通常由**R14**寄存器表示。

4. R13通常用来存储什么?
-R13通常用作SP(Stack Pointer,栈指针),用于指向当前栈的位置,管理函数调用中的局部变量和返回地址。

5. 哪种模式使用的寄存器最少?
- User 模式和System 模式使用的寄存器最少,通常只使用通用的R0-R14寄存器和PC、CPSR,不会涉及银行化寄存器。

6. 在Thumb 指令集中,哪些寄存器处于Low group?
- 在Thumb指令集中,寄存器**R0-R7**被称为**Low group**寄存器,因为它们可以由大多数Thumb指令直接访问。

7. CPSR的哪一位反映了处理器的状态?
- CPSR(Current Program Status Register)**的**第5位**(T位)反映了处理器的状态:
  - T=0:表示处理器处于ARM状态。
  - T=1:表示处理器处于Thumb状态。

8. 所有的Thumb指令采取什么对齐方式?
- 所有的Thumb指令都采用半字对齐(2字节对齐),即指令地址必须是2的倍数。

9. ARM有哪几个异常类型?
ARM处理器有以下几种异常类型:
1. 复位(Reset):当处理器复位时触发,模式为Supervisor。
2. 未定义指令(Undefined Instruction):执行未定义指令时触发,模式为Undefined。
3. 软件中断(Software Interrupt,SWI):通过SWI指令触发,模式为Supervisor。
4. 预取中止(Prefetch Abort):当指令预取发生异常时触发,模式为Abort。
5. 数据中止(Data Abort):数据访问发生异常时触发,模式为Abort。
6. IRQ(Interrupt Request):外部中断时触发,模式为IRQ。
7. FIQ(Fast Interrupt Request):快速中断时触发,模式为FIQ。

10. 为什么FIQ的服务程序地址要位于0X1C?
- FIQ(Fast Interrupt Request)的服务程序地址位于0x1C,这是为了确保在中断发生时能够以最快的速度跳转到FIQ处理程序。FIQ具有最高优先级,且在银行化寄存器的支持下,切换到FIQ模式不需要保存太多寄存器,可以更快响应中断。

11. 在复位后,ARM处理器处于何种模式、何种状态?
- 在复位后,ARM处理器会进入Supervisor模式,并且处于ARM状态,即32位ARM指令集模式(CPSR的T位为0)。

哪些ARM指令可以有条件地执行?

ARM架构的特点之一是大多数指令可以有条件地执行,具体通过条件代码来控制。这些条件码位于ARM指令的高4位,允许指令仅在某些条件下执行。例如:
- EQ:等于(Zero标志为1)
- NE:不等于(Zero标志为0)
- LT:小于(N标志 != V标志)
- GT:大于(Z标志 = 0 且 N标志 = V标志)
- LE:小于等于(Z标志 = 1 或 N标志 != V标志)
- GE:大于等于(N标志 = V标志)

几乎所有标准ARM指令都可以通过附加条件码来有条件地执行,包括**MOV、ADD、SUB、AND、ORR**等。带有条件码的指令只在特定的条件满足时执行,否则将被忽略。

下面的指令完成什么工作?
`MOVNES r2, r3, ASR #2`

- MOVNES:该指令是MOV(移动)指令的变种,其中NE条件码表示“当不相等时执行”(即当Zero标志为0时)。
- r2:目标寄存器。
- r3:源寄存器。
- ASR #2:表示对源寄存器r3进行算术右移(Arithmetic Shift Right,ASR),移位2位。

解释:
该指令的功能是在条件为NE(不等于,即Z标志为0)时,将寄存器r3的值**算术右移2位**的结果,移动到r2。如果Zero标志(Z)不为0,该指令将不执行。

效果:
- 仅在Z标志为0(上次运算结果不等于0)时执行。
- r2 = r3 >> 2(算术右移两位)。

Thumb代码与ARM代码比较的两大优势?

1. 代码密度更高:
   - Thumb指令集的指令长度为16位,而ARM指令集的指令长度为32位。因此,Thumb代码通常能比ARM代码节省更多的存储空间,在内存受限的系统(如嵌入式系统)中具有优势。

2. 更高的效率和低功耗:
   - 由于指令更短,Thumb代码可以更高效地利用指令缓存(I-Cache)和存储器带宽,这有助于提升整体性能并降低功耗。特别是在微控制器和嵌入式系统中,Thumb代码有助于减少内存访问和功耗。

AMBA代表是什么?

AMBA代表Advanced Microcontroller Bus Architecture(高级微控制器总线架构)。

- 由ARM公司开发并推广,用于系统级芯片(SoC)的通信协议和设计标准。AMBA定义了多种总线协议,用于连接处理器、内存和外设,保证系统内不同模块之间的高效通信。
- AMBA最常用的总线协议有:
  1. AHB(Advanced High-performance Bus,高性能总线)
  2. APB(Advanced Peripheral Bus,外设总线)
  3. AXI(Advanced eXtensible Interface,可扩展接口) 


http://www.mrgr.cn/news/29630.html

相关文章:

  • Python →爬虫实践
  • 7.4、实验四:RIPv2 认证和触发式更新
  • Docker 命令总结:从入门到入土
  • 微信小程序=》基础=》常见问题=》性能总结
  • C语言 | Leetcode C语言题解之第554题砖墙
  • 【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
  • python中Web API 框架
  • 力扣之181.超过经理收入的员工
  • 多线程2(gamere)
  • Python 课程16-Pygame
  • spring security 手机号 短信验证码认证、验证码认证 替换默认的用户名密码认证132
  • itk c++ 3D医学图像刚性配准
  • 【与C++的邂逅】--- C++的IO流
  • wifi中的相干带宽
  • Windows系统下使用VS排查内存泄露的两种办法
  • 如何在 Qt 的 QListWidget 中逐行添加和显示数据
  • eNSP简单用法
  • 超级简约的B端页面,B端系统就该如此简化设计。
  • 自动化流程机器人(RPA)
  • Nginx反向代理出现502 Bad Gateway问题的解决方案
  • ram和rom的种类迭代和介绍
  • 【隐私计算篇】不经意传输协议(OT/OTE)的进一步补充
  • 自组织是管理者和成员的双向奔赴
  • 示波器的使用
  • Lucene详解介绍以及底层原理说明
  • maven pom文件中的变量定义