编译原理概述(第一次作业)

(1)简述编译程序与翻译程序、汇编程序的联系与区别

编译程序是由编译器将高级语言(例如c++,c等)转变成汇编语言。

汇编程序是由汇编器将汇编语言转变成目标语言(也就是机器语言)。

而翻译程序是将一种高级语言(例如c++)由翻译器转变成另一种高级语言(例如c语言)。

(2)编译过程包括哪几个主要阶段及每个阶段的主要功能。

编译过程主要包括预编译处理(.c) -->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)--> 链接程序(.exe、.elf、.axf等)这四个阶段。

这四个阶段的主要功能分别如下:

 预编译 

将.c 文件转化成.i文件 使用的gcc命令是:gcc–E 对应于预处理命令cpp 

编译: 

将.c/.h文件转换成.s文件 使用的gcc命令是:gcc–S 对应于编译命令 cc –S

汇编 :

将.s 文件转化成.o文件 使用的gcc 命令是:gcc–c 对应于汇编命令是 as

 链接:

将.o文件转化成可执行程序 使用的gcc命令是: gcc 对应于链接命令是 ld

(3)简述解释程序与编译程序的区别。

编译程序是专指将高级语言变成低级语言,而解释程序是指接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。

编译程序是将源程序进行编译之后最终转变成目标程序然后输入数据执行得出计算结果。而解释程序则是同时输入数据和源程序进行解释然后得出计算结果。

这二者各有优劣,说不上谁更好,只是在不同的时候适用。

编译器:工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。大多数PL采用此种方法翻译

解释器:工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。早期的Basic和现在的Java等。

猜你喜欢

转载自www.cnblogs.com/zghs/p/11451746.html