简述将源程序编译成可执行程序的过程

简述将源程序编译成可执行程序的过程,第1张

一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。

预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则如下:

1、删除所有的#define,展开所有的宏定义。

2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。

3、处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。

4、删除所有的注释,“//”和“//”。

5、保留所有的#pragma 编译器指令,编译器需要用到他们,如:#pragma once 是为了防止有文件被重复引用。

6、添加行号和文件标识,便于编译时编译器产生调试用的行号信息,和编译时产生编译错误或警告是能够显示行号。

扩展资料:

编译过程中语法分析器只是完成了对表达式语法层面的分析,语义分析器则对表达式是否有意义进行判断,其分析的语义是静态语义——在编译期能分期的语义,相对应的动态语义是在运行期才能确定的语义。

其中,静态语义通常包括:声明和类型的匹配,类型的转换,那么语义分析就会对这些方面进行检查,例如将一个int型赋值给int型时,语义分析程序会发现这个类型不匹配,编译器就会报错。

 程序设计语言的执行方式包括编译执行和解释执行两种。

高级语言按照计算机执行方式的不同可分为两类:静态语言和脚本语言。这里所说的执行方式是指计算机执行一个程序的过程,静态语言采用编译执行,脚本语言采用解释执行。无论哪种执行方式,用户的使用方法可以是一致的。

编译是将源代码转换成目标代码的过程,通常,源代码是高级语言代码,目标代码是机器语言代码,执行编译的计算机程序称为编译器(Compiler)。

解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。执行解释的计算机程序称为解释器(Interpreter)。

解释和编译的区别在于编译是一次性地翻译,一旦程序被编译,不再需要编译程序或者源代码。解释则在每次程序运行时都需要解释器和源代码。这两者的区别类似于外语资料的翻译和实时的同声传译。

采用编译方式有如下好处:对于相同源代码,编译所产生的目标代码执行更快;目标代码不需要编译器就可以运行,在同类型 *** 作系统上使用灵活;

采用解释方式有如下好处:解释执行需要保留源代码,程序纠错和维护十分方便;只要存在解释器,源代码就可以在任何 *** 作系统上运行,可移植性好。

1、编译执行,编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。

2、解释执行,它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

源程序,就是你的源代码,也就是程序员的语言。

目标程序,即编译后的dll和exe,也就是程序的机器语言。

汇编程序,是指怎么把程序员的语言变成机器语言的程序。

可执行程序,是编译后的exe部分,双击就能运行。

以上就是关于简述将源程序编译成可执行程序的过程全部的内容,包括:简述将源程序编译成可执行程序的过程、程序设计语言包括哪两种执行方式、高级语言源程序有哪两种执行方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9665775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存