ARM内核的CPU架构模型

1.引言

程序员在编码的时候,如果想有进一步的提升,我认为还是要深入底层理解程序运行原理才好。最近看了一些ARM架构的讲解,总结了如下。虽然是以ARM为原型画的图形,但是对于C和C++的编程,还是有一些参考价值的。

2. ARM内核架构(硬件层面)

3.简述以上图形

程序运行起来时,会把编译后的机器码程序从flash(或硬盘中)中加载到RAM中。CPU内核中的PC寄存器指向的机器码地址,就会运行这些指令,就是汇编里常常提到的MOV,ADD,LDR等命令。这些指令的执行会使通用寄存器(R0~R15)和内存RAM产生交互。ARM的CPU处理器有7中运行模式,我们熟悉的是用户模式,其他6种模式是异常模式,每一种模式下都分别对应有自己的一套通用寄存器,当然有一些寄存器在所用模式下都是共通的。加上CPU状态寄存器,7中运行模式对应有37个通用寄存器。

  • 程序运行时,从数据交互上就是使用通用寄存器和RAM交互的过程。
  • 程序运行时随着函数调用,RAM中会有动态变化的栈产生,也有数据堆产生,数据堆中的数据资源一般在程序中会有指针指向,便于操作数据资源。
  • 内存RAM中一些高频访问的资源,为了提升访问效率,在CPU内核中会部署一些数据缓存区,分为L1,L2和L3。
相关推荐
汉克老师3 小时前
GESP2024年6月认证C++三级( 第二部分判断题(1-10))
c++·数组·位运算·补码·gesp三级·gesp3级
无限进步_4 小时前
【C++】只出现一次的数字 II:位运算的三种解法深度解析
数据结构·c++·ide·windows·git·算法·leetcode
网域小星球4 小时前
C 语言从 0 入门(十七)|结构体指针 + 动态内存 + 文件综合实战
c语言·开发语言·文件操作·结构体指针·动态内存·综合项目
小贾要学习4 小时前
【Linux】TCP网络通信编程
linux·服务器·网络·c++·网络协议·tcp/ip
哎嗨人生公众号5 小时前
手写求导公式,让轨迹优化性能飞升,150ms变成9ms
开发语言·c++·算法·机器人·自动驾驶
code_whiter5 小时前
C++6(模板)
开发语言·c++
lcj25115 小时前
【C语言】数据在内存中的存储
c语言·数据结构
一只旭宝5 小时前
【C++ 入门精讲1】初始化、const、引用、内联函数 | 超详细手写笔记(附完整代码)
开发语言·c++
旖-旎5 小时前
哈希表(字母异位次分组)(5)
数据结构·c++·算法·leetcode·哈希算法·散列表
无限进步_5 小时前
【C++】多重继承中的虚表布局分析:D类对象为何有两个虚表?
开发语言·c++·ide·windows·git·算法·visual studio