美文网首页
编译和解释

编译和解释

作者: 可能性之兽 | 来源:发表于2022-10-05 18:22 被阅读0次

解释程序,也称解释器;直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。

编译程序,也称编译器;将源程序翻译成目标语言程序,然后再计算机上运行目标程序。

两者的根本区别:编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高;解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序,边解释边执行,执行效率较低。即:解释方式,翻译程序不生成独立的目标程序,而编译方式则生成独立保持的目标程序。

编译过程:

(1)词法分析阶段:是编译过程的第一阶段,其任务是对源程序从前到后(从左到右)逐个字符扫描,从中识别出一个个“单词”符号。词法分析过程的依据是语言的词法规则,即描述“单词”结构的规则。词法错误:非法字符,关键字或标识符拼写错误。

(2)语法分析阶段:其任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。通常语法分析是确定整个输入串是否构成一个语法上正确的程序。一般来说,通过编译的程序,不存在语法上的错误。语法错误:语法结构出错,()不匹配,缺分号。

(3)语义分析阶段:其任务主要检查源程序是否包含静态语义错误(动态语义错误在执行过程中才能发现),并收集类型信息供后面的代码生成阶段使用。语义分析的一个主要工作是进行类型分析和检查。语义错误:死循环,零除数,其它逻辑错误。

(4)中间代码生成:其任务是根据语义分析的输出生成中间代码。此阶段不是必须的。常见的中间代码有:树、后缀式、三地址码(四元式)。

(5)代码优化:其任务是优化中间代码。此阶段不是必须的。

(6)目标代码生成:是编译器工作的最后一个阶段。其任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。本阶段与具体机器密切相关。

(7)符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。符号表的存在可以贯穿编译所有阶段。

相关文章

  • js设计原理

    js是解释型语言 语言分编译型和解释型语言 解释器和编译器

  • 编译、解释和脚本

    在学习各种高级编程语言的过程中,我们总会遇到一些语言类型的名词,理解这些名词对我们理解高级语言的运行机制有很大帮助...

  • python面试答题笔录

    1.简述解释型和编译型编程语言 解释型语言是指逐行读取解释代码,不用进行编译,它们有专门的解释型工具,python...

  • java解释和jit编译

    Just In Time即时编译器。当JVM发现某个方法或代码块运行频繁时,就会把这段代码认定为热点代码,通过JI...

  • JVM(十六:编译器优化)

    解释器与编译器 解释器与编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间...

  • 编译原理

    编译原理 标签(空格分隔): 编译原理 编译和解释 编译 整个程序全部翻译结束之后,程序才能开始运行;编译和运行是...

  • Java解释执行与编译执行

    问题 Java语言是解释执行还是编译执行 答案 Java是解释执行和编译执行共同存在的 过程 Java源代码文件首...

  • Python面试题合集

    Python基础 1. 简述解释型和编译型编程语言?解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器...

  • 浅析Python解释器的设计(二)

    从现代编译器的角度看,解释器和编译器的边界已经相当的模糊。我们后面的讨论说到的编译器就是Python的解释器,没有...

  • JavaScript之解释型语言与编译型语言

    概览 JavaScript是一门解释型的编译语言。 内容 解释型语言 vs 编译型语言 解释型语言与编译型语言的本...

网友评论

      本文标题:编译和解释

      本文链接:https://www.haomeiwen.com/subject/iaepartx.html