随笔分类 - 编译器
摘要:中间树语言: Tree.c 抽象语法 -> 树语言: Frame.c, MyFrame.c 树语言 (T_xxx) -> IR 中间代码 (Tr_xxx):Translate.c IR 代码中 符号代码( label )沿用不变 int 调用 T_Const(int i ) Tree 模块: 1.
阅读全文
摘要:1. 表达式 A_exp -> T_exp , T_stm struct Tr_exp_{ // Tr_ex 表达式, Tr_nx 无结果语句, Tr_cx 每件语句 enum {Tr_ex, Tr_nx, Tr_cx}kind; union {T_exp exp, T_stm nx, struct
阅读全文
摘要:知识点 T_exp: 有返回值 表达式 T_stm: 无返回值 表达式 struct Cx: 条件表达式 Tr_exp: translate 模块的表达式,增加中间代码逻辑, 分 Tr_ex, Tr_nx, Tr_cx 三种类型, 对接机器 T_exp: tree 模块的表达式,中间代码解析的 表达
阅读全文
摘要:**前端 ** 中间 后端 词法分析 活动记录 优化 语法分析 中间代码 IR 机器语言 语义分析(类型检查) 知识点 T_exp: 有返回值 表达式 T_stm: 无返回值 表达式 struct Cx: 条件表达式 Tr_exp: translate 模块的表达式,增加中间代码逻辑, 分 Tr_e
阅读全文
摘要:静态链 静态链: 调用函数 f() 时,传递给 f() 一个指针,指向静态包含 f() 的那个函数 g(){ ... // 调用 f() 时,传递 g() 的指针 f() { ... } } 静态包含: 在编译器的上下文中,"静态包含"(Static Inclusion)通常指的是在编译时直接将一个
阅读全文
摘要:tips 栈 栈指针 帧 帧指针 Frame 模块: 栈帧相关信息 F_frame : 栈帧 F_access : 表示 寄存器 / 栈帧 的地址偏移, 即位置 Symbol Temp_label : 标识符 F_newFrame(label, boolList) : 生成 符号 label 对应的
阅读全文
摘要:栈帧 栈帧是指函数在被调用时,所拥有的一块独立的用于存放函数所使用的状态和变量的栈空间。 每个函数都对应有至少一个栈帧。 同一个函数多次进入,每次可能会分配到不同的栈帧。整个栈的内容在同一个时刻可以看作是由许多栈帧依序“堆叠”组成的。 两层抽象 Translate 模块 frame.h temp.h
阅读全文
浙公网安备 33010602011771号