ARM工作模式、汇编学习

一、ARM工作

(一)处理器工作模式,ARM内核工作模式有哪些,分别是在什么情况下被切换?

(二)工作模式:cpsr(1),spsr(5),pc(1),sp和lr(6)

(三)ARM寄存器个数

1.Corte系列:40

2.ARM系列:37

(四)程序状态寄存器(10000 User mode)

(五)异常处理,异常向量表是什么?

1.SPSR:保存CPSR

2.LR:保存PC

二、汇编

(一)启动

学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有:

1、初始化异常向量表;

2、初始化各工作模式的栈指针寄存器;

3、开启arm内核中断允许;

4、将工作模式设置为user模式;

5、完成上述工作后,引导程序进入c语言主函数执行;

(二)KEIL:伪指令

area reset,code,readonly

code32

entry ;运行代码

....

end

(三)什么是立即数?如何判断某数是非法12位立即数?

1.立即数:可以直接通过mov写入通用寄存器的常量值。指在指令中直接嵌入的常量值,通常用于算术运算、逻辑运算或数据加载等操作。

2.判断方法:

①写成二进制数值,判断前24位是否为0

②若前24位为0,则是立即数

③若前24位不是0,判断循环右移偶数次后是否满足前24位为0

④倒数8到12位写移位次数除2的值

(四)b,bl,bx指令的区别是什么?

1.b:直接跳转到b后面的标志地方执行,与goto类似

2.bl:用于函数调用,跳转前将pc指针中的地址存入链接寄存器(LR)中

3.bx:将链接寄存器LR中的地址赋于pc寄存器中

(五)ARM内核采用的栈是那种栈?

1.栈分类:满减、空减、满增、空增

2.满和空的区别

栈针指向的栈内容为空:空栈,先赋值再移位

栈针指向的栈内容不为空:满栈 ,先移位再赋值

3.增和减

增长方向从高地址向低地址:减栈

增长方向从低地址向高地址:增栈

4.ARM内核中采用的栈:满减栈,0x40000000,大小为0x1000,所以指向0x40001000

三、RAM的细分

(一)IRAM (Integration RAM)

IRAM是一种将处理器和内存集成在同一芯片上的技术,主要目的是减少处理器与内存之间的延迟。IRAM通常使用DRAM或SRAM作为存储单元,但其核心特点是高度集成,适合嵌入式系统或高性能计算场景。

(二)DRAM (Dynamic RAM)

DRAM是一种动态随机存取存储器,需要定期刷新以保持数据。它的存储单元由电容和晶体管组成,结构简单,密度高,成本低,但速度较慢且功耗较高。DRAM通常用于主内存(如计算机的RAM)。

(三)SRAM (Static RAM)

SRAM是一种静态随机存取存储器,不需要刷新即可保持数据。它的存储单元由6个晶体管组成,速度快、功耗低,但成本高、密度低。SRAM通常用于高速缓存(如CPU的L1、L2缓存)。

(四)MRAM (Magnetoresistive RAM)

MRAM利用磁阻效应存储数据,具有非易失性、高速和无限次写入的优点,但成本较高,目前主要用于特定领域(如航空航天)。

(五)SDRAM (Synchronous DRAM)

SDRAM是与系统时钟同步的DRAM,通过同步操作提高数据传输效率。常见的DDR系列内存(如DDR4、DDR5)均基于SDRAM技术。

(六)PRAM (Phase-change RAM)

PRAM利用相变材料的电阻变化存储数据,结合了DRAM和闪存的优点,具有非易失性和较高的读写速度。

(七)RRAM (Resistive RAM)

RAM通过改变材料的电阻值存储数据,具有高密度、低功耗和快速读写的潜力,目前仍在研发阶段。

(八)NVRAM (Non-Volatile RAM)

NVRAM泛指所有非易失性RAM,如MRAM、PRAM和RRAM,断电后仍能保留数据,适合需要持久化存储的场景。

相关推荐
dear_bi_MyOnly2 小时前
【MyBatis 操作数据库】
java·数据库·学习·mybatis·学习方法
一只小菜鸡..3 小时前
南京大学 操作系统 (JYY) 学习笔记:从 UNIX 到 Linux 与庞大的应用生态
笔记·学习·unix
MartinYeung54 小时前
[论文学习]迈向自主医疗人工智能智能体:MIRA系统深度分析
人工智能·学习
熊猫钓鱼>_>5 小时前
ArkTS 装饰器总览:V1 / V2 / 通用装饰器完整学习笔记
笔记·学习·华为·交互·harmonyos·arkts·arkweb
KOAN凯擎小妹8 小时前
无源晶振为什么有串联谐振和并联谐振?MCU为什么使用并联晶体?
单片机·嵌入式硬件·晶振·元器件
茯苓gao9 小时前
嵌入式开发笔记:CAN与CAN FD完全指南——从帧格式差异到MCU选型实战
网络·笔记·stm32·嵌入式硬件·学习·汽车
木木_王9 小时前
嵌入式学习 | STM32 裸板驱动开发(Day06) | DHT11温湿度传感器超详解(单总线时序+全套驱动代码+智能温湿度报警项目)
驱动开发·stm32·学习
FellAveal10 小时前
【Go语言入门学习笔记】Part19.速率控制、原子计数器、互斥锁(Mutex)、状态协程
笔记·学习·golang
你怎么知道我是队长10 小时前
经典蓝牙(Bluetooth Classic / BR/EDR)学习计划
学习
论迹复利10 小时前
蓝牙 OTA 升级断连、升级失败底层链路问题定位
嵌入式硬件·安全·bt