• 编译原理绪论


    基本概念

    • 编译:将高级语言翻译成汇编语言或机器语言的过程

      image-20200314112205898

    • 预处理器:聚合不同文件中的源程序;将宏转换为原始语句;

    • 加载器:修改可重定位地址;绝对地址 = 起始位置 + 相对地址;

    • 连接器:连接多个可重定位的机器代码文件;解决外部内存地址问题;

    编译系统结构

    image-20200314173201181

    词法分析器

    • 扫描源程序,识别各个单词并确定其类型,将其转换为统一的机内表示:词法单元(token)形式

    • token:<种别码,属性值>

    语法分析器

    • 从词法分析器输出的token序列中识别出各类短语,并构造语法分析树

    语义分析器

    • 收集标识符属性信息:种属、类型、储存位置、长度、值、作用域、参数和返回值
    • 语义检查

    中间代码生成器

    • 常用中间表示形式:
      • 三地址码:类似汇编语言;最多三个操作数;
        • 四元式(op,y,z,x)
        • 三元式
        • 间接三元式
      • 语法结构树/语法树

    代码优化器

    • 使代码运行更快,占空间更少的等价程序变换

    目标代码生成器

    • 输入源程序的中间表示形式,并把它映射到目标语言
    • 为程序中使用的变量合理分配寄存器
  • 相关阅读:
    将博客搬至CSDN
    规范化设计的范式的个人理解
    Codeforces Round #422 (Div. 2) D题要补的知识点
    Codeforces第一次rated比赛
    Codeforces 818B Permutation Game
    USACO Dynamic Programming (1)
    关于数据库中除法的一个小问题
    USACO hamming
    USACO Healthy Holsteins
    USACO Sorting a Three-Valued Sequence
  • 原文地址:https://www.cnblogs.com/localhost-ha/p/12493777.html
Copyright © 2020-2023  润新知