编译器设计中的语言处理系统是什么?
在一个语言处理系统中,源代码首先进行预处理。修改后的源程序由编译器处理,形成目标汇编程序,然后由汇编器翻译成可重定位的目标代码,再由链接器和加载器处理,最终生成目标程序。它基于翻译器接受的输入和产生的输出,语言翻译器可以定义为以下任何一种。
高级语言 − 如果程序包含 #define 或 #include 指令(包括 #include 或 #define),则称为高级语言 (HLL)。
预处理器 − 预处理器通过包含名为文件包含的文件来终止所有 #include 指令,并使用宏展开来终止所有 #define 指令。预处理器可以实现以下功能:
宏处理 − 预处理器可以使用户定义宏,宏是高级结构的简写。
文件包含 − 预处理器可以将头文件包含到程序文本中。
理性预处理器 − 这些预处理器用额外的当前控制流和数据结构设施来增强早期语言。
语言扩展 − 这些预处理器试图通过特定数量的宏构造来向语言中插入功能。
纯高级语言 − 这意味着程序不包含任何 # 标记。这些 # 标记也称为预处理器指令。
汇编器 − 汇编器是一个程序,它以汇编语言程序作为输入,并将其转换为类似的机器语言代码。
汇编语言 − 它是一个中间状态,是一系列机器指令和实现所需的其他有益记录。它不是 0 和 1 的形式。
汇编语言的优点
阅读更容易。
地址是符号的,程序员无需担心地址。
它是助记符。例如,在汇编语言中,我们使用 ST 代替存储指令的 01010000。
易于查找和纠正错误。
可重定位机器代码 − 这意味着您可以将机器代码加载到计算机的任何位置并运行它。代码中的地址将保持代码移动不变。
加载器/链接器 − 这段代码以可重定位程序作为输入,编译库函数、可重定位对象记录,并创建其类似的绝对机器程序。
加载包括获取可重定位机器程序,更改可重定位地址,并将修改后的指令和信息放置在内存的合适区域。
链接使我们能够从多个可重定位机器程序文档中创建一个单一程序。这些文档可能是不同编译的结果,一个或多个可能是系统支持的库例程,任何需要它们的代码都可以使用。