随笔分类 - 编译原理
摘要:什么是 DWARF? DWARF(Debugging With Attributed Record Formats)是一种标准的调试信息格式,通常嵌入到二进制文件(如 ELF、Mach-O、PE 等)中。DWARF 由编译器生成,调试器使用它来提供源代码级别的调试信息,如变量名称、类型信息、源代码位
阅读全文
摘要:一. LD 文件的概念 ld 文件通常指的是链接脚本文件,主要用于控制链接器(如 GNU 链接器 ld)的行为。链接器是将编译后的目标文件(object files)和库文件(libraries)结合起来生成可执行文件或共享库的工具。链接脚本允许开发者精确地控制链接过程,例如定义内存布局、设置节(s
阅读全文
摘要:代码形式(Code Shape) 编译器生成IR后,必须将每个源语言语句映射为目标机指令构成的操作序列。编译器必须在许多备选方法中做出选择,以实现语言中的每个结构。编译器所做的选择影响最终代码的质量。 1.分配存储结构 物理寄存器: 目标ISA中一个命名的寄存器 虚拟寄存器: IR使用的一个符号名,
阅读全文
摘要:过程抽象(Procedure Abstract) Algol语言:ALGOL是算法语言(ALGOrithmic Language)的简称,是在计算机发展史上首批清晰定义的高级语言,由欧美计算机学家合力所组成的联席大会于仍是晶体管计算机流行的1950年代所开发。国际计算机学会(ACM)将ALGOL模式
阅读全文
摘要:Intermediate Representation (中间表达式) 一. 概述 IR是编译器从语义分析到生成机器代码的中间过程。编译器可能有一种IR,也可能有多种。 IR可以分为3类: 图IR 线性IR 混合型IR 二. 图IR 与语法相关的树 1. 语法分析树 第3章中已介绍,不赘述 2. 抽
阅读全文
摘要:Context-Sensitive Analysis 1. 概述 假设语义分析已经识别出来了这么一个名词x,上下文敏感性分析需要解决以下几个问题: (1)x存放什么类型的值 (2)x有多大?(占多少长度) (3)如果x是一个函数,它返回的值是什么类型的? (4)x的值要存在多长时间? (5)谁要负责
阅读全文
摘要:Parser (语义分析器) 1. 概述 Parser是编译器front-end的第二步,Parser将Scanner识别出的词语按照语义进行分类,并将词语构建成源编程语言的语法模型。 “ The parser derives a syntactic structure for the progra
阅读全文
摘要:Scanner扫描器(又称 词法分析器) 参考:https://blog.csdn.net/errvv/article/details/50605332?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first
阅读全文
摘要:现代编译器的结构: 上图中,IR: Intermediate Representations:原书的解释:A compiler uses some set of data structures to represent the code that it processes 源代码转换到目标程序,在编
阅读全文