《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式

2.1 编译器、解释器及其工作方式
就目前计算机的硬件发展水平而言,硬件只能识别由0、1字符串组成的机器指令序列,即机器指令程序或目标程序。在计算机发明的早期,计算机只能按照输入的机器指令程序进行简单的计算。但是,机器指令程序不易被人类理解,用它编写程序不仅困难而且还容易出错。于是后来就引入了代替0、1字符串的由助记符号表示的指令,即汇编指令,汇编指令的集合被称为汇编语言,汇编指令序列被称为汇编语言程序。汇编程序实际上与机器语言程序是一一对应的,都要求程序员按照指令工作的方式来思考和解决相关问题,也就是说,两者之间并无本质区别。因此,它们都被称为面向机器的语言或低级语言,以此与更高级的语言相区别,当然,早期并不知道高级别的语言是否能设计和实现。
计算机的发展和普及超乎人们的想象,应用需求的大量增长导致程序员的需求也大幅增长,但是,能够用机器语言或汇编语言编程的人员数量却不多,满足不了这种需求;同时,许多不同领域的科技工作者也想自己动手编写程序来直接解决问题。因此,抽象度更高、功能更强的语言来作为程序设计语言就成为必然,于是就产生了面向各类应用的便于人类理解与运用的程序设计语言,即高级语言。尽管人类可以借助高级语言来编写程序,但计算机硬件真正能够识别和理解的语言还是0、1组成的机器语言,这就需要在高级语言与机器语言之间建立转换系统,使得高级语言能够自动转换为机器语言。也就是说需要若干“翻译”,把各类高级语言翻译成机器语言。程序设计语言通常被分成三个层次:高级语言、汇编语言、机器语言。高级语言可以翻译成机器语言,也可以翻译成汇编语言,这两种翻译都被称为编译。汇编语言到机器语言的翻译称为汇编。编译和汇编属于正向工程,有时还需要将机器语言翻译成汇编语言或高级语言,这通常被称为反汇编或反编译,属于逆向工程范畴。
高级语言的工作方式有两种,一种是编译器工作方式,另一种是解释器工作方式。
在编译器工作方式下,源程序的翻译和翻译后程序的运行处于两个相互独立的阶段。用户输入源程序,编译器对该源程序进行编译,生成目标程序,这个阶段称为编译阶段。目标程序在适当的输入下执行,最终得到运行结果的过程称为运行阶段。
解释器是另一种形式的翻译器。它把翻译和运行结合在一起进行,边翻译源程序,边执行翻译结果,而这种工作方式被称为解释器工作方式。
形象地说,编译器的工作相当于翻译一本原著,原著与源程序对应,译著与目标程序对应,计算机的运行相当于阅读一本译著,这时,原著和翻译人员并不需要在场,译著是主角。解释器的工作相当于在进行现场翻译,外宾和翻译都要在场,翻译一边听外宾讲话,一边翻译给听众,翻译是听众关注的主角。解释器与编译器的最本质区别是:运行目标程序时的控制权在解释器而不是目标程序,也就是说,运行的是解释器,目标程序是解释器的输入。

时间: 2024-09-25 18:55:30

《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式的相关文章

《编译与反编译技术实战》——导读

前 言 "编译技术"是从事软件开发和信息安全相关工作的技术人员必须掌握的基础性技术,也是高等院校计算机科学与技术和软件专业的一门必修专业课,这是理论与实践结合非常强的领域,对提升开发人员的技术水平和大学生科学思维的养成.解决实际问题能力具有重要作用."反编译技术"则是近几年发展起来的新兴技术,许多计算机软件或信息安全从业者非常关心该技术的发展,但目前这方面的书籍较少,与"编译技术"结合起来讲解的书也很少,从实践角度来剖析的更是少见.本书就是在这种

《编译与反编译技术实战 》一导读

前 言 "编译技术"是从事软件开发和信息安全相关工作的技术人员必须掌握的基础性技术,也是高等院校计算机科学与技术和软件专业的一门必修专业课,这是理论与实践结合非常强的领域,对提升开发人员的技术水平和大学生科学思维的养成.解决实际问题能力具有重要作用."反编译技术"则是近几年发展起来的新兴技术,许多计算机软件或信息安全从业者非常关心该技术的发展,但目前这方面的书籍较少,与"编译技术"结合起来讲解的书也很少,从实践角度来剖析的更是少见.本书就是在这种

《编译与反编译技术实战 》一 第2章 编译器实践概述

第2章 编译器实践概述 人与计算机之间的交流也是通过语言进行的,但人类能理解的语言与机器可以理解的语言是不同的,中间需要翻译,因此,相应的编译器诞生了.编译技术所讨论的问题就是如何把符合人类思维方式的意愿(即源程序)翻译成计算机能够理解和执行的形式(即目标程序),而实现从源程序到目标程序转换的程序被称为编译程序或编译器.最早的编译器是20世纪50年代后期的Fortran编译器,该编译器也为后续高级语言和编译器的涌现奠定了基础.与编译技术相反,反编译技术所讨论的问题就是如何把计算机能够理解和执行的

《编译与反编译技术实战》——第1章 实践的环境与工具 1.1 实践环境概述

第1章 实践的环境与工具 本书致力于通过实践及案例,从正反向两个角度介绍编译系统的一般构造原理和基本实现技术,本章首先对书中内容涉及的环境与工具进行简单介绍,这些工具都是编译与反编译过程中常用的工具. 1.1 实践环境概述 在编译过程中所涉及的环境主要是编译环境及工具链,常用的工具有词法分析生成器.语法分析生成器.编译器.汇编器.链接器等.在反编译过程中主要涉及反汇编器.静态或动态的调试与分析工具.下面对近年来流行的编译与反编译工具逐一进行简单介绍.

《编译与反编译技术实战 》一 第1章 实践的环境与工具

第1章 实践的环境与工具 本书致力于通过实践及案例,从正反向两个角度介绍编译系统的一般构造原理和基本实现技术,本章首先对书中内容涉及的环境与工具进行简单介绍,这些工具都是编译与反编译过程中常用的工具. 1.1 实践环境概述 在编译过程中所涉及的环境主要是编译环境及工具链,常用的工具有词法分析生成器.语法分析生成器.编译器.汇编器.链接器等.在反编译过程中主要涉及反汇编器.静态或动态的调试与分析工具.下面对近年来流行的编译与反编译工具逐一进行简单介绍.

《编译与反编译技术实战》——第2章 编译器实践概述 2.1 编译器、解释器及其工作方式

第2章 编译器实践概述 人与计算机之间的交流也是通过语言进行的,但人类能理解的语言与机器可以理解的语言是不同的,中间需要翻译,因此,相应的编译器诞生了.编译技术所讨论的问题就是如何把符合人类思维方式的意愿(即源程序)翻译成计算机能够理解和执行的形式(即目标程序),而实现从源程序到目标程序转换的程序被称为编译程序或编译器.最早的编译器是20世纪50年代后期的Fortran编译器,该编译器也为后续高级语言和编译器的涌现奠定了基础.与编译技术相反,反编译技术所讨论的问题就是如何把计算机能够理解和执行的

《编译与反编译技术实战》——第1章实践的环境与工具

第1章实践的环境与工具本书致力于通过实践及案例,从正反向两个角度介绍编译系统的一般构造原理和基本实现技术,本章首先对书中内容涉及的环境与工具进行简单介绍,这些工具都是编译与反编译过程中常用的工具.

《编译与反编译技术实战》——1.1节实践环境概述

1.1 实践环境概述在编译过程中所涉及的环境主要是编译环境及工具链,常用的工具有词法分析生成器.语法分析生成器.编译器.汇编器.链接器等.在反编译过程中主要涉及反汇编器.静态或动态的调试与分析工具.下面对近年来流行的编译与反编译工具逐一进行简单介绍.

《编译与反编译技术》—第2章2.1节词法分析器的需求分析

本节书摘来自华章出版社<编译与反编译技术>一书中的第2章,第2.1节词法分析器的需求分析,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 第2章 词法分析的理论与实践 词法分析是编译过程的第一步,也是编译过程必不可少的步骤.编译过程中执行词法分析的程序称为词法分析器.本章主要介绍词法分析器的手动构造和自动构造的原理. 2.1 词法分析器的需求分析 本节首先介绍词法分析器的功能及其输出的单词符号的表示方式,然后研究将词法分析独立出来的原因.