文章插图
端根据完成任务不同,可以将编译器的组成部分划分为前端(Front End)与后端(Back End) 。前端主要指与源语言有关但与目标机无关的部分,包括词法分析、语法分析、语义分析与中间表示生成 。后端主要指与目标机有关的部分,包括代码最佳化和目标代码生成等 。"端"概念的提出对于编译技术的发展起到了至关重要的作用,它使编译器的框架更明晰,更利于集成与构造 。语言目标代码是机器语言或彙编语言,彙编语言可以通过彙编器生成机器码 。彙编语言的定义取决于CPU的体系架构,目前主要有三种:x86/x64, ARM, MIPS 。中间代码是虚拟机的机器语言,虚拟机目前主要有四种:CLR, JVM, Parrot, LLVM 。CLR用于.Net平台,JVM用于Java语言,这两个是基于栈的虚拟机 。Parrot用于脚本语言,比如Perl,Python,Ruby等;LLVM用于C、C++等语言,这两个是基于暂存器的虚拟机 。在性能上比较而言,基于暂存器的虚拟机优于基于栈的虚拟机 。标準Pascal语言作为设计蓝本,主要有如下几个原因:(1)Pascal语言是一门严谨且优美的程式设计语言 。(2)Pascal语言功能非常强大,适合各种系统软体、套用软体设计 。(3)Pascal语言数据类型非常丰富 。例如,集合类型、函式类型、指针类型等 。(4)Pascal语言的语义複杂度不如C语言,故有利于编译器设计与实现 。同时,便于初学者学习理解 。正由于上述优点,Pascal仍然是算法设计的主要描述语言,也是IOI(国际奥林匹克信息学竞赛)三种参赛程式设计语言之一 。
- 听钟桥
- 河南省产业升级和结构转型研究:河南省发展和改革委员会产?
- OTN网路管理体系结构
- 低压结构发泡注塑
- 结构化异常处理
- 包装机械结构与设计
- 新闻结构
- 社会组织结构
- 有源相控阵雷达天线结构设计
- β桶形结构