1、编译
编译过程又可以被分为两个阶段:编译、汇编。
编译是指编译器读取字符流的源程序,对其进行词法与语法的分析,将高级语言指令转换为功能等效的汇编代码。
汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可。
2、链接
链接的主要内容是将各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接。链接又分为静态链接和动态链接:
静态链接是指在编译阶段直接把静态库加入到可执行文件中去,这样可执行文件会比较大;
动态链接则是指链接阶段仅仅只加入一些描述信息,而程序执行时再从系统中把相应动态库加载到内存中去。
3、装载
程序在经过链接后,得到了可执行文件,下一步就需要将可执行程序加载到内存中。
由于现代 *** 作系统均采用分页的方式来管理内存,所以 *** 作系统只需要读取可执行文件的文件头,之后建立起可执行文件到虚拟内存的映射关系,而不需要真正的将程序载入内存。
4、运行
加载器将可执行目标文件中的代码和数据从磁盘复制到内存中,然后通过跳转到程序的第一条指令或入口点来运行程序。
在程序的运行过程中,CPU发现有些内存页在物理内存中并不存在并因此触发缺页异常,此时CPU将控制权限转交给 *** 作系统的异常处理函数, *** 作系统负责将此内存页的数据从磁盘上读取到物理内存中。
首先说明一下KEIL只能编译程序,生成hex文件,它可以检查你的程序是否有语法错误,关于能不能实现你想实现的功能就不能测试了,那样只有把hex文件导入到protel里面的电路仿真中,才能检测你的程序是否跟你想的一样。KEIL测试你可以先打开keil软件,先新建一个工程,在新建一个文件,把程序写入文件,这时候注意要将文件导入到工程中,要生成hex文件的话,就右键点击工程。选择属性,在里面勾选上生成hex文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)