百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
A

amacc

> 编程语言
开源

小 C 编译器生成 ELF 可执行文件,支持 JIT 执行

1.1K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

小 C 编译器生成 ELF 可执行文件,支持 JIT 执行

AMaCC = 可争议的极简主义 Arm C 编译器

简介

AMaCC 是一款从头开始构建的 32 位 Arm 架构编译器。它是 C 的精简版本,旨在作为编译器、链接器和加载器的教学工具。AMaCC 实现了两种执行模式:

  • 适用于 Arm 后端的即时 (JIT) 编译器。
  • 使用可执行和链接格式 (ELF) 生成有效的 GNU/Linux 可执行文件。 值得一提的是,AMaCC 旨在使用上述执行模式编译必要的 C 子集,以实现自主安装。例如,它支持全局变量,尤其是全局数组。

通过合作的 stmt() 和 expr() 解析函数生成简单的基于栈的抽象语法树 (AST),这两个函数都由生成标记的函数提供输入。expr() 函数执行了一些字面常量优化。通过 gen() 函数将 AST 转换为基于栈的 VM 中间表示 (IR)。可以通过命令行选项查看 IR。最后,codegen() 函数从 IR 生成 Arm32 指令,可以通过 jit() 或 elf32() 可执行文件生成来执行。

AMaCC 结合了经典的递归下降和运算符优先解析。当使用语法生成来定义运算符优先级时,运算符优先解析器比递归下降解析器 (RDP) 要快得多。

  • 支持所有 C89 语句,除 typedef 之外。 * 支持所有 C89 表达式运算符。 * 数据类型:char、int、enum、struct、union 和多级指针 - 类型修饰符、限定符和存储类指定符目前不受支持,尽管此类关键字通常不被常用,可以通过简单的替代结构来轻松解决。 - AMaCC 中不支持结构/联合赋值,例如 s1 = s2。 这也适用于函数的返回值和参数。建议传递和返回指针。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Carmarmv7accompiler

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言