一、什么是程序
1、程序的结构
指令、数据
2、指令
操作CPU的一段指令集合,更详细的说,是对数据的加载,移动,以及需要进行的计算的集合。指令存储在 非易失存储器(一般指:硬盘)。
3、数据
上述指令集合中指令的执行需要操作的数据。数据存储在 易失存储器中(一般指:内存)。
二、程序的运行基础
1、CPU
解析指令,执行指令
2、硬盘(ROM)
存储指令
3、内存(RAM)
存储运行中需要用到的数据(事实上,在计算机(电脑)执行一个程序的时候,也会将指令加载到内存)
三、一个 C 程序从编写到执行的过程
1、编辑源代码
使用 C 语言,编写需要计算机执行的操作
2、将源代码翻译成二进制代码
2.1 预处理
加载程序中所包含的头文件到源代码之中,条件编译,并将宏定义展开(.i文件)。
注:在使用gcc -S 选项时,文件的后缀必须为.i
原因:本人在使用gcc -E 选项生成的文件后缀为.a时,再使用gcc -S选项时,报警告并且没有生成.s文件,警告如下:
gcc: warning: MD5.a: linker input file unused because linking not done
2.2 编译
将经过预编译处理过的源代码翻译为 汇编代码(.s文件)。
2.3 汇编
将汇编代码翻译为二进制代码(.o文件)。
2.4 链接
将二进制代码链接成一个完整的可执行程序(.exe)
3、程序的运行
3.1 单片机
需要烧录到MCU的Flash或外部存储器之中,当单片机上电之后,先初始化硬件,分区,初始化中断,之后从main开始运行。
3.2 计算机(电脑)
需要操作系统中的装入程序将程序装入内存,并为程序开辟一个新的进程,同时为其运行创建执行环境,当时间片轮转到此程序时,操作系统进行上下文切换,从程序的入口处(main)开始执行。