主要区别
汇编程序和编译器的区别在于编译器获取源代码并将其转换为汇编代码,而汇编程序则获取编译器生成的汇编代码并将其转换为机器代码。
汇编程序(assembler) vs. 编译器(compiler)
在程序执行中起着最重要作用的两个术语是编译器和汇编程序。编译器的工作是获取经过预处理的源代码并将其转换为汇编代码。然后汇编程序的工作就是从编译器中获取汇编代码并将其转换为机器代码。如果我们讨论主要的区别,那么汇编程序和编译器的主要区别是编译器获取源代码并将其转换为汇编代码,而汇编程序使用编译器生成的汇编代码并将其转换为机器代码。用源语言编写的程序由编译器读取。编译器是一个计算机程序,它将源代码转换为汇编语言,并将汇编语言代码发送给汇编程序。编译器的类型有单通道编译器、多通道编译器、加载和执行编译器以及调试和优化编译器。汇编程序获取编译器生成的汇编代码并将其转换为机器代码。汇编程序的主要工作是将数据作为输入,形成可重定位的机器代码。有编译器可以执行汇编程序的任务并直接生成机器代码,但这并不意味着我们不能研究汇编程序的功能。汇编代码和机器代码有很多不同。所有这些不同类型的编译器执行不同的功能,并且根据工作的不同而不同。汇编代码是机器代码的助记符版本,而机器代码使用二进制代码来表示内存地址的操作。在汇编程序中有两个过程,第一个过程标识汇编代码并将代码存储在符号表中,第二个过程再次扫描代码并对代码执行操作。编译有两个步骤,一个步骤是分析部分,在这一部分中,源代码被分成几部分并执行中间表示。在合成部分,目标代码形成中间表示。编译器的阶段包括词法分析器、语法分析器、语义分析器、中间代码生成、代码优化器、代码生成器、符号表和错误处理程序。
比较图
什么是编辑者(a compiler)?
用源语言编写的程序由编译器读取。编译器是一个计算机程序,它将源代码转换为汇编语言,并将汇编语言代码发送给汇编程序。编译器的类型有单通道编译器、多通道编译器、加载和执行编译器以及调试和优化编译器。所有这些不同类型的编译器执行不同的功能,并且根据工作的不同而不同。编译有两个步骤,一个步骤是分析部分,在这一部分中,源代码被分成几部分并执行中间表示。在合成部分,目标代码形成中间表示。编译器的阶段包括词法分析器、语法分析器、语义分析器、中间代码生成、代码优化器、代码生成器、符号表和错误处理程序。
汇编程序和编译器不是相同的进程,但是它们执行的工作与生成源程序的对象代码并将其交给链接器所做的工作相同。链接器的主要过程是在链接器完成此工作后,获取对象代码并生成程序的可执行代码,并将代码分配给加载程序。有一些内置的库和头文件,它们使用高级语言。在内置库中定义了一些库函数。这些函数由链接器链接到库函数。如果找不到特定函数的库函数,则会通知编译器。当有一个大程序时,它被分成更小的程序,即模块。对象模块是在编译或组装这些模块时生成的。链接器必须将整个程序合并在一起。链接器有两种类型:一种是链接编辑器,它生成重新定位的可执行模块,另一种是一种动态链接器,将外部模块链接到加载模块生成为止。必须执行的程序存在于主内存中。加载程序,在操作系统中加载可执行文件。加载程序将内存空间分配给主内存中的可执行模块。有三种类型的装载机:绝对装载机、可重定位装载机和动态运行时加载。这三种装载机有不同的加载方式,即绝对加载法、可重定位加载法和动态运行时加载法。绝对加载程序将程序的可执行文件加载到相同的主内存位置。在绝对装载程序中,程序员必须知道分配。重新定位加载程序编译或组装实际的主内存地址。动态运行时加载程序,绝对内存程序是在执行指令时生成的。
什么是汇编程序(assembler)?
汇编程序获取编译器生成的汇编代码并将其转换为机器代码。汇编程序的主要工作是将数据作为输入,形成可重定位的机器代码。有编译器可以执行汇编程序的任务并直接生成机器代码,但这并不意味着我们不能研究汇编程序的功能。汇编代码和机器代码有很多不同。汇编代码是机器代码的助记符版本,而机器代码使用二进制代码来表示内存地址的操作。在汇编程序中有两个过程是预成型的,第一个过程标识汇编代码并将代码存储在符号表中,然后第二个过程再次扫描代码并对代码执行操作。
主要区别
- 汇编程序是一种将编译器生成的汇编代码转换成机器代码的计算机程序,而编译器则是一种获取源代码并将其转换为汇编代码的计算机程序。
- 汇编程序输入汇编语言代码,而编译器输入源代码。
- 汇编程序的阶段是第一阶段和第二阶段,编译器的阶段是词法分析器、语法分析器、语义分析器、生成的中间代码、代码优化器、代码生成器、符号表和错误处理程序。
- 汇编程序的输出是二进制代码,而编译器的输出是代码的助记符版本。