📜  编译器技术的应用

📅  最后修改于: 2022-05-13 01:57:01.923000             🧑  作者: Mango

编译器技术的应用

编译器是一种将高级编程语言源代码转换为机器代码的软件。它将用一种编程语言编写的代码翻译成另一种而不改变其含义。此外,编译器针对性能和内存使用优化最终代码。

编译器技术的应用:

1. 高层编程的实现

高级编程语言定义了编程抽象:程序员在语言中指定算法,编译器必须将其翻译成目标语言。高级编程语言有时更容易开发,但效率低下,因此目标应用程序运行速度较慢。低级语言程序员可以更好地控制他们的计算,并且原则上可以设计更高效的代码。另一方面,较低级别的程序更难构建,也更难维护。它们的可移植性较差,更容易出错,并且管理起来更复杂。优化的编译器采用方法来提高生成代码的性能,补偿高级抽象的低效率。

实际上,使用 register 关键字的程序可能会降低效率,因为程序员并不总是对寄存器分配等极低级别问题的最佳判断。理想的寄存器分配方法非常依赖于机器的设计。硬连线低级资源管理决策(如寄存器分配)实际上可能会损害性能,尤其是如果应用程序在不适合它的机器上执行时。

2. 计算机架构的优化

除了计算机体系结构的快速发展之外,对新的编译器技术的需求也永无止境。几乎所有高性能计算机都将并行性和内存层次结构作为基本方法。可以在两个级别上找到并行性:在指令级别,其中许多操作同时执行,以及在处理器级别,其中同一程序的不同线程在不同处理器上执行。内存层次结构解决了能够产生极快存储或极大存储的基本问题,但不能同时产生两者。

3. 新计算机架构的设计

在计算机体系结构设计的早期,编译器是在机器建成后创建的。现在情况并非如此。因为高级编程是常态,所以计算机系统的性能不仅取决于其绝对速度,还取决于编译器对其功能的使用程度。编译器是在当代计算机体系结构开发的处理器设计阶段创建的,生成的代码用于使用模拟器评估提议的体系结构特征。

4.节目翻译:

编译通常被认为是从高级语言到机器级别的翻译,但同样的方法可以用于翻译多种语言。以下是软件翻译技术的一些最常见的应用。

  • 编译模拟
  • 二进制翻译
  • 硬件合成
  • 数据库查询解释器

5. 软件生产力工具

程序可能是有史以来最复杂的技术对象;它们由大量的小元素组成,每个元素都必须准确,程序才能函数运行。因此,软件错误很常见;错误可能导致系统崩溃、生成错误结果、使系统面临安全威胁,甚至导致关键系统发生灾难性故障。测试是发现程序缺陷的最常用方法。

一个引人入胜且有趣的补充选项是使用数据流分析来静态发现问题(即在程序运行之前)。与程序测试不同,数据流分析可能会发现任何可能的执行路径上的漏洞,而不仅仅是输入数据集使用的漏洞。许多最初为编译器优化而开发的数据流分析技术可用于构建帮助程序员履行其软件工程职责的工具。