zoukankan      html  css  js  c++  java
  • 编译原理第一课

    一、编译程序与翻译程序、汇编程序的联系与区别:

    翻译程序是指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。

    编译程序是翻译程序的一种,将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。翻译程序的另一种是解释程序.

    汇编程序:也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序

    编译程序与汇编程序的区别:如果源语言是例如C、C++、Java等“高级语言”,而目标语言是汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。

     

    二、编译过程包括哪几个主要阶段及每个阶段的主要功能。

    编译过程通常分为6个主要阶段:

      词法分析、语法分析、语义分析、中间代码生成、代 码优化和目标代码生成

    各个阶段的主要功能如下:

      词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分 解,识别出一个个单词,并表示成计算机内部的形式(TOKEN 字)。

      语法分析阶段:在词法分析的基础上,将单词序列分解成各类语法 短语,如“表达式”、“语句”、“程序”等,确定整个输入串是否构成语法上正确的程序。

      语义分析阶段:审查源程序有无语义错误,为代码生成阶段收集类 型信息。

      中间代码生成阶段:将源程序翻译成一种复杂性介于源程序与目标 程序之间的内部形式(中间代码)。

      代码优化:对前阶段产生的中间代码进行等价变换,目的是使将来 生成的目标代码更为高效。

      目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可 重定位的指令代码或汇编指令代码。

     

    三、简述解释程序与编译程序的区别

    编译程序:是将高级语言程序源代码作为输入,翻译生成出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果编译程序工作时,先分析,后综合,从而得到目标程序,另外,大多数扫描直接生成机器语言的目标代码,但是有的也生成汇编语言的目标代码,进而在转化为机器语言的目标代码

     

    解释程序同样将源代码(如basic语言)的程序作为输入,解释一句就提交计算机执行一次,并不形成目标文件,就想口语交际的翻译,说出一句翻译一句,或者是终端的dos窗口,在终端输入一条命令语句,解释程序立刻返回给终端若干句。

     

    区别

      1、解释程序的执行速度相对较慢,不生成任何目标代码;编译程序编译后生成目标文件,再次运行时只需要运行目标文件,速度较快。

      2、编译程序在程序未翻译完成前是不能运行的,解释程序则不需要。

     

     

  • 相关阅读:
    海量数据中,寻找最小的k个数。
    快速排序
    反转一个单链表,分别以迭代和递归的形式来实现
    N个大小不等的自然数排序,时间复杂度为O(n),空间复杂度为O(1)
    堆排序
    两个已经排好序的链表合并为一个有序链表
    字符串过滤空格、回车、tab
    求一个浮点数的连续子序列最大乘积 (2013 小米校园招聘笔试题)
    单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列
    给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
  • 原文地址:https://www.cnblogs.com/ccla/p/11452034.html
Copyright © 2011-2022 走看看