小 C 编译器生成 ELF 可执行文件,支持 JIT 执行
AMaCC 是一款从头开始构建的 32 位 Arm 架构编译器。它是 C 的精简版本,旨在作为编译器、链接器和加载器的教学工具。AMaCC 实现了两种执行模式:
通过合作的 stmt() 和 expr() 解析函数生成简单的基于栈的抽象语法树 (AST),这两个函数都由生成标记的函数提供输入。expr() 函数执行了一些字面常量优化。通过 gen() 函数将 AST 转换为基于栈的 VM 中间表示 (IR)。可以通过命令行选项查看 IR。最后,codegen() 函数从 IR 生成 Arm32 指令,可以通过 jit() 或 elf32() 可执行文件生成来执行。
AMaCC 结合了经典的递归下降和运算符优先解析。当使用语法生成来定义运算符优先级时,运算符优先解析器比递归下降解析器 (RDP) 要快得多。
暂无开放 Issues,或尚未同步最近议题。