单片机存储器和C程序编译过程

1、 单片机存储器

只读存储器不是并列关系,是从ROM发展到FLASH的过程

|---------------------|----------------------|
| RAM | ROM |
| 随机存储器 | 只读存储器 |
| CPU直接存储和访问 | 只读可访问不可写 |
| 临时存数据,存的是CPU正在使用的数据 | 永久存数据,存的是操作系统启动程序或指令 |
| 断电易失 | 断电不易失 |
| 由CPU直接访问 | 数据需要传到RAM才访问 |
| RAM容量大,以KM为单位,价格比较贵 | 容量低,以MB为单位,价格低 |

2、编译过程

①预处理(宏替换、头文件展开、删除注释、条件编译)xx.i文件

②编译阶段(语法检测,将预处理后文件编译生成汇编文件)xx.s文件

③汇编(将汇编文件生成目标文件(二进制文件))xx.o文件

④链接(将目标文件(二进制可执行指令文件)链接为可执行程序)xx.out文件

CPU把xx.out复制到RAM,然后执行可执行文件

CPU:①直接存在RAM②ROM->RAM->执行③磁盘->RAM->执行

相关推荐
SomeB1oody9 分钟前
【RustyML入门】3.8. 正则化与归一化层
开发语言·后端·机器学习·rust·教程
__zRainy__12 分钟前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript
鬼手点金1 小时前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json
Mr. zhihao1 小时前
深度解析:为什么Java序列化需要搭配ByteArrayOutputStream?IO装饰器模式的精妙设计
java·开发语言·装饰器模式
格林威1 小时前
多相机并行采图最佳实践:Task.WhenAll + 异常处理 + 资源释放
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·机器视觉
djjjx.1 小时前
【 C++ 】多态
开发语言·c++·多态
夜雪一千1 小时前
Python如何使用XPath定位没有特征的元素?无id、无class通用定位技巧
开发语言·python
艾莉丝努力练剑1 小时前
【QT:解决问题】Qt5Core.dll:无法定位程序输入点
java·开发语言·qt·学习·面试
流浪0012 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·python
光影少年2 小时前
react离线缓存、图片缓存方案
开发语言·前端·javascript·react native·react.js·缓存·前端框架