00-基础知识

  • 编译器:将 Source language 翻译为 Target language

    • 前端:源文件内容 -> IR

      • Lexical Analysis 词法分析:通过 Pattern 找到 Lexeme(词素),转换为 Token Token = <class, attribute>

      • Syntax Analysis 语法分析:生成 AST

      • Semantic Analysis 语义分析:检查类型、范围等语义问题,修饰 AST

      • IR Generation 生成中间表示:将 AST 转换为 IR

    • 中端:机器无关优化,IR -> IR

      • 相较于源文件,IR 更容易处理

      • 相较于汇编,IR 与机器无关

    • 后端:机器相关优化,生成目标,IR -> asm

      • 分配寄存器

      • 选择指令:机器相关

      • 安排指令:利用并行的硬件资源

  • 解释器:直接解析 Source language 里面的声明

  • 链接器:将多个编译单元链接为单一文件

  • 函数式编程:没有副作用,不改变数据和状态,函数作为参数……

  • 逻辑编程:声明 facts 和 rules,通过推理得到结果

  • 静态/动态类型:编译时/运行时检查类型

  • 强/弱类型:是否允许隐式类型转换

  • 静态/动态作用域:编译时/运行时解析变量

  • 值/引用传递:传递值/传递指针

  • 虚函数:可被子类重写的函数

最后更新于