计算机基础知识
操作系统作用
- 对软硬件进行统一的管理
- 为APP开发者提供应用接口
从下图可以看到,操作系统位于应用软件与硬件层之间,操作系统屏蔽了软件应用层的差异,比如我使用的硬件改变了,这只需要更改驱动层的函数实现,并不需要去更改应用层的软件,这是操作系统提供应用接口的实例。

计算机的组成
- 输入设备
- 输出设备
- 外存(硬盘之类的非易失性存储器)
- 内存(程序运行的缓存)
- 中央处理器CPU(由运算器以及控制器组成)
这是传统的计算机结构,嵌入式设备中我想到了XIP,即程序可以在非易失性存储器直接运行,而不需要加载到ram上,但对于安全性是一个考量

编程语言的发展
计算机语言由原来的二进制到汇编,再到高级语言,我们现在学的高级语言,都是站在巨人的肩膀上更上一层楼,没必要打破砂锅问到底,毕竟历经了几十年的发展,学不完的,做一个了解即可,术业有专攻
- 机器语言是最早的计算机语言, 所谓的程序就是控制cpu按照指定指令运行的代码,由于太难记了,产生了助记符,即汇编。
- 汇编语言相较与机器语言好记很多,但是还是不太符合人类的思想,以及对于不同设备之间的可移植性太差了。
- 高级语言符合人类的编程思维,并且提高了可移植性,我们应该感谢前人的辛苦耕耘,让我们降低触碰计算机的门槛。

- 代码是编译出来的,编译出最终得到的是机器码,0101这样的,X86和arm的区别在于指令不同,我写一段代码,需要不同的编译器去编译,得到对应处理器能够理解的指令。
- 如果用x86编译器 编译出的文件放ARM上跑, ARM: who are you ?

的确越底层是越难,我们的工作都是基于某个语言去实现某个功能,

推荐一个学习汇编的平台: 能够选择不同编译工具链生成特定汇编编码,支持ARM,x86以及RISC-V 如下图
