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

author author     2023-03-29     379

关键词:

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

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

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

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

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

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

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

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

扩展资料:

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

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

参考技术A 编好的代码(源代码)经过编译,链接,生成可执行的文件,然后就可以执行。即编辑的代码要最重生成可执行的程序(可执行的文件),需要经过编译、链接两个步骤。编译的作用是对代码进行语法检查,而链接的作用是链接代码中用到的编译器提供的资源。所以,通常通过编译、链接后形成的只形成一个可执行的文件。 参考技术B 编辑 编译 链接 执行又或者预处理 编译 链接才能确保程序正确执行。 参考技术C 编译和链接装配

简述java程序从编写到运行的基本步骤,并说明java的基本工作原理

...括编译、下载、解释和执行几个部分。Java编译程序将Java源程序翻译为JVM可执行代码?字节码。这一编译过程同C/C++的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在... 查看详情

第一章练习题(代码片段)

练习答案简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型.答:编译型语言:使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并... 查看详情

qt如何编译成可执行程序,像vc的静态编译,可以在脱离qt的环境中运行

参考技术Aqt如何编译成可执行程序,像vc的静态编译,可以在脱离qt...开源版本不允许静态编译可以将dll打包,就能再其他的机器上运行了.榵彨廀峓朢桸潂椺壱检挰洏煠愝噐 查看详情

实验3编程编译连接跟踪

...个汇编语言程序从写出到执行的简要过程:一:编写汇编源程序;二:对源程序进行编译连接;可执行文件包含两部分内容:1.程序(指令机械码)和数据(程序定义的数据)、2.相关信息描述三:执行可执行文件中的程序课本P9... 查看详情

pycharm将python程序制作成可执行程序的方法

参考技术Apycharm将python文件转换为小程序的方法1、打开pycharmidea,按快捷键(Alt+F12)打开teminal窗口;2、安装模块pyinstaller;命令:pip3installpyinstaller3、确定安装成功之后,在终端中输入“pyinstaller-F-w文件名”,回车后开始打包文... 查看详情

小结练习及答案(代码片段)

...mdash;——>输出解释型语言:使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。特点:解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即... 查看详情

简述java程序的编辑编译和运行过程

JAVA考试简答题,速度第一步(编译):创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。如果... 查看详情

java程序运行机制

...言的运行机制计算机高级语言按程序的执行方式可以分为编译型和解释型两种。编译型语言是指使用专门的编译器,针对特定平台,也就是操作系统将某种高级语言源代码一次性翻译成可被该平台硬件执行的机器码,... 查看详情

c语言如何把c程序编译成可执行的exe文件

...示,编辑一段简单的输出语句。2、依次点击菜单栏内的编译→组建→执行,确保这段成率可以正确执行。3、从运行结果来看程序正确,没有问题,然后找到exe可执行程序看其是否有闪退现象。4、将C语言代码保存后打开代码所... 查看详情

c#.net写的winfrom程序怎么编译成可执行的exe文件

C#.net写的winfrom程序怎么编译成可执行的exe文件(我用的是vs2005,前提是别人的机子上没装vs2005),请问有没有可以编译的工具?参考技术A写完了代码。按Ctrl+Shift+B(编译程序)就会编译成Exe程序。位置:先找到你项目存放的位... 查看详情

qt如何编译成可执行程序,像vc的静态编译,可以在脱离qt的环境中运行

qt开源版本不允许静态编译可以将DLL打包,就能再其他的机器上运行了.追问debug版依赖的库太大了,140多M。我还遇到了个问题,编译成debug版本功能都能运行得非常好,但是,编译成release版后,有些功能就不执行了,点击按钮硬... 查看详情

将winform程序及dll打包成可执行的exe

使用场景通常开发的Winform程序,引用了其他类库后,在输出目录下都会产生很多DLL文件,exe执行时必须依赖这些DLL。想要Winform程序只有一个可执行exe文件,又不想打包成安装包,就可以采用该方法。 方案一利用ILMerge将exe及... 查看详情

gcc编译过程与动态链接库和静态链接库(代码片段)

...的是.lib.dlllinux上对应的是.a.so在这里先介绍下Linux下的gcc编译的几个选项g++-chellospeak.cpp会将hellospeak.cpp选项-c用来告诉编译器编译源代码但不要执行链接,输出结果为对象文件。文件默认名与源码文件名相同,只是将其后缀变为.o... 查看详情

c程序编译执行过程

...行的代码。连接---->将目标代码与C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序)。执行----->在特定的机器环境下运行C程序。 如果用一个图来表示: &nbs 查看详情

gcc编译过程简述

 在linux系统上,从源文件到目标文件的转化是由编译器完成的。以hello.c程序的编译为例,如下:[email protected]:gcc-ohellohello.c在这里,gcc编译器读取源文件hello.c,并把它翻译成一个可执行文件hello。这个翻译过程可分为四个... 查看详情

存储管理

...不同编译、链接、装载与地址定位过程。编译:编译器将源程序转换成可重定位代码。其有三个逻辑地址块:代码段(机器指 查看详情

编程编译连接跟踪

实验任务(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe(2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容(3)PSP的头两个字节是CD20,用debug加载t1.exe,查看PSP的内容  查看详情

20165232第二周学习总结

...重要的知识点是程序翻译的过程,分为四部分:用cpp将.c源程序翻译成.i文本文件;用ccl翻译成.s文本(c-汇编);用as翻译成.o二进制文件;用ld翻译成可执行的二进制程序。总结:gcc-(Esc)hello.c-----hello(iso)制定库文件所在的目录名1、... 查看详情