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

ARM基础概念 day51

ARM

一:基础概念

ARM采用的是32位架构.
ARM 约定:Byte :8 
bitsHalfword :16 bits (2 byte)
Word :32 bits (4 byte)
Doubleword 64-bits (8byte)(Cortex-A处理器)

构成:RAM:随机存储 访问速率快 掉电数据丢失

ROM :只读存储 访问速率慢 掉电数据不丢失

​ RAM类:RAM SRAM(静态,最快,主要是晶体管构成) DRAM(动态,主要是电容构成)

​ SSRAM SDRAM:都带有同步时钟

​ ROM类:PROM(可编程) EPROM(可擦除) EEPROM(电)

flash:结合RAM和ROM的优点

CPU :中央处理单元

ALU:运算单元,实现基本的运算

RO~R12:寄存器,存储数据

PC:程序计数器,指向正在执行的下下条指令,上电后值为0,默认做自加运算

LR:链接寄存器,保存函数的返回地址

SP:栈指针寄存器,指向栈顶

CPSR:当前程序状态寄存器,运算的结果为0、正、负等,运算中产生的进位、借位等;中断使能,工作状态、工作模式。

Cache 位于 CPU 核心与主存(RAM)之间,用于存放近期频繁访问的数据/指令,访问速率高于内存

Cache:缓存原则;1.长时间没有替换,2.用得少替换

I-Cache(指令缓存) 和 D-Cache(数据缓存)。
它们是 L1 Cache 最常见的两种分离方式(Harvard 架构思想在 CPU 内部的延伸),都是独立存储的,是哈佛形式。

​ 哈佛:指令和数据分开存储冯诺伊曼:指令和数据一块存储

MMU:-内存管理单元,做虚拟地址到物理地址的转换

一:关于ALU的运算赋值给sp指针问题

  1. ALU 的作用
    • 负责对 SP 做加/减运算(+ 宽度 或 - 宽度),运算结果写回 SP 寄存器。
    • 加数:出栈(POP),SP 向高地址移动。
    • 减数:入栈(PUSH),SP 向低地址移动。
  2. 栈的地址结构
    • 栈底:高地址(stack base)
    • 栈顶:低地址(stack top)
    • 栈向低地址生长。
  3. 初始状态
    • 空栈时,SP 指向栈底(高地址)。
  4. 入栈(PUSH)
    • ALU 做 SP = SP - 数据宽度(负方向)
    • 新 SP 指向栈顶位置 → 数据写入该位置。
  5. 出栈(POP)
    • 从 SP 指向的栈顶位置读取数据
    • ALU 做 SP = SP + 数据宽度(正方向)

换句话说:

ALU 改变的是 SP 的值,方向由加减符号决定,SP 的变化方向对应了栈的生长或收缩方向

ARM有37个32-Bits长的寄存器
1 个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30个通用寄存器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二:CPSR寄存器 32位

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

E位:大小端控制位

A位:A=1禁止不精确的数据异常

条件位(状态的记录)

	N = Negative result from ALU​	Z = Zero result from ALU​	C = ALU operation Carried out or borrow​	V = ALU operation oVerflowed

Mode位:处理器模式位(7种模式)

	`10000 User mode`非权限用户(其他都是特权模式)	​	`10011 SVC mode`//管理模式,复位或软中断指令执行时将会进入这种模式​	`10010 IRQ`低优先级中断			    `10001 FIQ mode;`高优先级(中断)​	`10111 Abort mode`//取异常时将会进入这种模式		​	`1011 Undfined mode` //执行未定义指令时会进入这种模式,读取到不能识别的指令​	`11111 System mode;`//系统模式,用和User模式相同寄存器集的特权模式

T位J位

T= 0;J=0 //处理器处于ARM状态

T= 1;J=0 //处理器处于Thumb状态

T= 1;J=1 //处理器处于ThumbEE状态

中断禁止位

​ I =1: //禁止 IRQ

​ F= 1: //禁止 FIQ

三:CPSR/SPSR操作指令

mrs r0,CPSR		//把CPSR现在的状态读在mrs中
msr CPSR,r0		//把r0的值写入CPSR
.textmov r0,#3	//用常量赋值要符号#	
--------------------------------------------------------
cmp r0,#1	//r0和1比较	本质上就是r0 - 1 的值标志位	名称	触发条件(R0 - 1 的结果)N	Negative	结果为负数(R0 - 1 < 0)Z	Zero	结果为零(R0 == 1)C	Carry	无借位(R0 >= 1,即减法未借位)V	Overflow	有符号溢出(极少见,通常忽略)
--------------------------------------------------------
add r1,r0,#5	//把5加到r0中,然后把结果放进r1
mov r1,r0
mov r3,#0xD0	
mov cpsr,r3	//必须经过中介才能传过去
swi  1	//软件模拟中断,返回之前状态 
http://www.xdnf.cn/news/1279387.html

相关文章:

  • Redis应⽤-缓存与分布式锁
  • Vue3从入门到精通:3.1 性能优化策略深度解析
  • 基于SpringBoot+Uniapp的血压监控小程序(Echarts图形化分析)
  • OV5640 相机开发流程
  • Apollo平台下相机和激光雷达手眼联合标定
  • 游戏引擎(Unreal Engine、Unity、Godot等)大对比:选择最适合你的工具
  • 2025世界机器人大会,多形态机器人开启商业化落地浪潮
  • ubuntu24.04设置登陆背景图片
  • 工业相机与智能相机的区别
  • word的正则替换
  • 《解锁 C++ 进阶密码:引用补充与内联函数、nullptr 核心用法》
  • 【测试报告】SoundWave(Java+Selenium+Jmeter自动化测试)
  • 2025 年国内可用 Docker 镜像加速器地址
  • 前端组件库双雄对决:Bootstrap vs Element UI 完全指南
  • Flink TableAPI 按分钟统计数据量
  • Spring AI赋能图像识别:大数据模型驱动下的智能化变革
  • SAE J2716多协议网关的硬件架构与实时协议转换机制解析
  • calamine读取xlsx文件的方法比较
  • 华为虚拟防火墙配置案例详解
  • 未来物联网大模型:物联网硬件+底层驱动+AI 自动生成和调优LUA脚本,
  • 数据备份与进程管理
  • TikTok登录时显示“访问太频繁,请稍后再试”该怎么办?
  • 【数据库】如何使用一款轻量级数据库SqlSugar进行批量更新,以及查看最终的Sql操作语句
  • 【车联网kafka】Kafka核心架构与实战经验(第三篇)
  • Python FastAPI + React + Nginx 阿里云WINDOWS ECS部署实战:从标准流程到踩坑解决全记录
  • 2025面试题——(12)
  • docker部署elasticsearch-8.11.1
  • <typeAliases>
  • 李宏毅2025《机器学习》-第十讲:AI“思想钢印”:深入解析大模型的知识编辑技术
  • k8s 命令记录