嵌入式学习day45-硬件—汇编

1、ARM 内核工作模式有哪些,分别是在什么情况下被切换?

ARM 内核有 7 种基本工作模式:

  1. User 模式:正常的用户程序运行模式。

  2. FIQ 模式:快速中断模式(Fast Interrupt),响应高速数据传输或通道处理。

  3. IRQ 模式:普通中断模式(Interrupt Request)。

  4. Supervisor 模式:管理模式,通常在复位(Reset)或执行系统调用(SVC 指令)时进入。

  5. Abort 模式:存储器访问出错(如地址无效)时进入。

  6. Undefined 模式:遇到未定义指令时进入。

  7. System 模式:特权级模式,和 User 模式寄存器相同,但拥有管理权限。

模式切换通常发生在 异常/中断/系统调用 时,由硬件自动完成。

2、异常向量表是什么?

  • 异常向量表(Exception Vector Table)是存放 异常入口地址 的一段内存区域。

  • 当发生 复位、中断或异常 时,CPU 会根据异常类型跳转到对应的入口地址执行。

  • ARM 默认异常向量表基地址为 0x00000000(有些芯片可重映射到 0xFFFF0000)。

3、什么是立即数?如何判断某数是非法是12位立即数?

  • 立即数(Immediate Number):直接写在指令里的常数,而不是存放在寄存器或内存中的数据。

  • 在 ARM 指令集中,立即数通常是 12 位编码,由 8 位有效数(imm8)和 4 位旋转值(rot)组成。把某个数展开成2进制,该数必须存在一种循环右移(偶数位),使得移位后高24位全0,低8位即为有效imm8;

4、b,bl,bx指令的区别是什么?

  • B label

    • 无条件跳转到 label 地址。

    • PC ← label。

  • BL label

    • 带返回地址的跳转(函数调用)。

    • LR ← 下一条指令地址,PC ← label。

  • BX reg

    • 跳转到寄存器 reg 的地址,同时可切换 ARM/Thumb 状态(根据地址最低位)。

    • 常用于函数返回或混合 ARM/Thumb 程序跳转。

5、ARM内核采用的栈是哪种栈?

ARM 支持 全递减栈/满减栈(Full Descending Stack, FD):

  • 栈向低地址增长(SP 递减)。

  • Push:先减 SP,再存数据。

  • Pop:先取数据,再加 SP。

相关推荐
Star(up up up)37 分钟前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
乌暮3 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
蒸蒸yyyyzwd8 小时前
从邓明学习的后端笔记
笔记·学习
机器学习之心8 小时前
基于变量相关图与残差学习的 GCN 多变量回归方法——混凝土 28 天抗压强度预测
学习·回归·gcn
SomeOtherTime8 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编
Rabitebla20 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件21 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿21 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石1 天前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖1 天前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习