c4_source
1. 概述
c4是500行代码实现一个c语言编译器
简单暴力,适合了解基础的编译器原理
2. 主流程
1.建立系统符号表
2.读取源代码
3.一次遍历源代码,同时进行词法分析,语法分析和中间代码生成。
4.执行中间代码
3. 中间代码
3.1. 基础
中间代码 | 操作 | 意义 |
---|---|---|
LEA 2 | 将栈往上的2个位置变量加载到寄存器 | 加载本地变量 |
IMM | 将代码区位置指定的代码加载到寄存器 | 加载到全局变量 |
JMP 2 | 将代码区跳转到2这个位置 | 跳转 |
JSR 2 | 将下一个代码区位置保存到栈顶,并将代码区跳转到2这个位置 | 跳转到子程序 |
BZ 2 | 如果全局变量为a,则跳转到下一个代码区域,否则跳转到2这个位置 | 零跳转 |
BNZ 2 | 如果全局变量不为a,则跳转到下一个代码区域,否则跳转到2这个位置 | 非零跳转 |
ENT 2</ |