您的当前位置:首页正文

编译原理(1)——概述

来源:花图问答

目录

计算机语言发展

 机器语言 machine language

 汇编语言 assemble language

 高级语言 high level language

高级语言分类

 命令式语言 imperative language

 函数(应用)式语言

 逻辑式语言

 面向对象式语言

翻译系统

 翻译程序 Translator

翻译程序

 解释程序 Interpreter

解释程序

 编译程序 compiler

编译程序

 其他

  • 诊断编译
  • 优化编译
  • 交叉编译
  • 可变目标
  • 并行编译
  • 汇编程序
  • 交叉汇编
  • 反汇编

编译系统功能分析

 分析

词法、语法、语义

 翻译

语句的翻译、代码生成

编译程序总体结构

编译程序总体结构

 1.词法分析

  • 输入:字符串
  • 输出:(种别码,属性值)——序对属性值——token的机内表示

 2.语法分析

  • 输入:Token序列
  • 输出:语法成分

 3.语义分析

 4.中间代码生成 intermediate code

  • 输入:语法成分
  • 输出:中间代码

 5.代码优化

  对中间代码的优化处理:对代码进行等价变换以求提高执行效率——提高运行速度和节省存储空间。

  与机器无关的优化

  1. 局部优化
  • 常量合并:常数运算在编译期间完成,如8+5
  • 公共子表达式的提取:基本块内
  1. 循环优化
  • 强度削减
  • 代码外提

  与机器有关的优化

  1. 寄存器的利用
    将常用量放入寄存器,以减少访问内存的次数

  2. 体系结构
    MIMD、SIMD、SPMD、向量机、流水机

  3. 存储策略
    根据算法访存的要求安排:Cache、并行存储体系——减少访问冲突

  4. 任务划分
    按运行的算法即体系结构,划分子任务(MPMD)

  • 输入:中间代码
  • 输出:优化过的中间代码

 6.目标代码生成

  将中间代码转换成目标机上的机器指令代码或汇编代码

  • 输入:中间代码
  • 输出:指令代码或汇编代码

 7.表格管理

  管理各种符号表(常数、标号、变量、过程、结构……)

 8.错误处理

  进行各种错误的检查、报告、纠正,以及相应的续编译处理(如:错误的定位与局部化)

编译程序的生成

  如何实现编译器?

打赏作者

码文不易,希望支持,谢谢->

微信支付 微信支付

再次感谢,大家对本人的支持。

本文引用