网易首页 > 网易号 > 正文 申请入驻

1902 Star,7000行纯汇编写出的编译器,编译一个程序只要2毫秒

0
分享至

你写的每一行 C、Go、Java,最后都会变成汇编指令。

有人把这件事推到了底:连编译器本身,也用汇编写了。

7143 行 .s 文件,没有一个 C 文件,没有一个第三方库

仓库的语言统计第一项就是 Assembly——不是"带点汇编",是全部。

我把它 clone 下来,在我这台 4 核 Linux(binutils 2.42)上从头编了一遍。不是为了学一门新语言,是想看清楚一件事:当你把 libc、把 LLVM、把整个工具链全拿掉,一个编译器还剩下什么。

先看数字,我先跑了一遍

所有数都是本机实测,命令在后面

编译它自己只要两步:as src/main.s,然后ld。出来的 rubix_compiler 是65680 字节的静态 ELF,strip 完49536 字节。README 头部写的"~42 KB"是旧数,它自己的验证命令里写的 64K/49K 才对得上。

编一个 .ix 程序:hello world 的前端耗时1 毫秒,那个 203 行的压测用例2 毫秒。走完整条链路(生成汇编 → as → ld)是18 毫秒 / 21 毫秒。

同一台机器上,gcc -O2编一个 hello world 要47 毫秒,加-static要 83 毫秒。也就是说全链路它比 gcc 快一倍多,但"2 毫秒"那个数只算前端——真正的耗时在 as 和 ld 里,不在它自己身上。

产物才是最好看的部分:hello world 出来12560 字节,ldd 对着它只回一句 not a dynamic executable 。同样的 C 程序,动态链接 15.6 KB,静态链接767 KB。

更狠的是加-t windows,在 Linux 上用 ld -m i386pep 直接产出一个PE32+ 的 exe,12244 字节,不需要 MinGW,不需要 .lib 导入库。

仓库自带 test.sh,我跑了一遍:19 项全过,包括 Windows 目标和 -c 分开编译。

项目仓库自带标识,整条编译链路就是"汇编进、汇编出、系统链接器收尾"

它为什么这么快:因为它什么都不做

没有优化 pass,是它快的唯一原因

链路很短:lexer 切 token → 递归下降 parser(带 Pratt 式运算符优先级)→ 符号表管作用域栈 → codegen 直接吐 .intel_syntax noprefix 的汇编。然后交给系统的 as 和 ld。

所以"零依赖"这个词要拆开看:它是零 libc,不是零工具链。README 写"直接编译成机器码",实际是三段式。这不影响它酷,但你得知道自己在量什么。

一个编译器真正的成本不在"编译得多快",在"它生成的代码有多好"。前者是 2 毫秒的事,后者是几十年的积累。

我拿一段试除法数素数(20 万以内)对比了一下:Rubix 出来的程序90 毫秒,gcc -O260 毫秒,gcc -O0 也就 71 毫秒。差 50%,没崩。

但这恰恰说明问题:这段代码是纯循环加内存读写,本来就没有优化空间。换成能向量化、能内联的代码,差距会是几倍。没有优化器不是"另一种风格",是"少了一整层"。

能带走的三样东西,比这门语言值钱

你不需要用它写业务,你需要用它校准自己的理解

第一,它生成的汇编是一份 ABI 教材。没有优化,函数序言和尾声原样躺在那里:参数按 rdi、rsi、rdx、rcx、r8、r9 传,第 7 个开始走栈,返回值在 rax。

面试被问"函数调用的时候到底发生了什么",多数人只能背"压栈出栈"。你真读过一份,就能说到寄存器级——这比背十道八股有用。

第二,零 libc 的程序怎么活。Linux 上 rax = 1 就是 write,直接 syscall 进内核;Windows 上走 gs:[0x60] 拿到 PEB,遍历 kernel32 的导出表找函数地址,所以它不要 .lib。

链接器到底在干什么、动态链接为什么要 PLT,这些问题看一眼它的 runtime.s 就通了。

第三,报错应该长什么样。我故意写坏了两个文件,它给的是这种:

Rubix Compiler Error: Unterminated string literal

--> line 3

3 | let s = "abc

行号、源码、脱字符,Rust 那套学到了。但脱字符固定钉在第 1 列,不指真正出错的那个引号——诊断"够用",但没打磨。这个细节比它 19 项测试全过更能说明它的成熟度。

边界也要说清楚,别拿去上线

1902 Star,2 个 fork,1 个 watcher

这个数字比例很说明问题:收的人多,真动手的人少。它适合读,不适合当依赖。

语言本身很小:没有泛型,没有闭包,没有 GC,堆是 64KB 的 arena bump allocator;macOS 目标要交叉链接器,机器上没有就只给你一个 .o。

整数溢出是硬陷阱:9223372036854775807 再加 1,直接Rubix Runtime Error: integer overflow,退出码 1(走的 jo 指令)。说停就停,不给你回绕。

还有个细节:我写 let x = 10 忘了分号,它照样编过了。解析器宽松是好事,也是信号——说明边角上的用例还没被覆盖满。

总结——

它的价值不在"用汇编写了个语言",在于它把平时藏在黑盒里的三层掀开了:源码到汇编、汇编到目标文件、目标文件到可执行。

每一层你都能看到实物,每一层都能对上一个你背过的概念。

你每天敲的那几行,最后到底变成了什么?大多数时候我们不知道,也不需要知道。但偶尔花一个晚上把它看穿,你对"性能"和"抽象"的判断会往回调一格。

(本文数据均为 10 月 23 日在 4 核 Linux 机器上实测,binutils 2.42,gcc 13。)

你上一次认真看自己代码生成的汇编,是什么时候?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
一名入伍才三个月的俄军逃兵,在乌东村落枪杀了五名熟睡的乌军无人机操作员,得手后端着枪一头扎进了乌克兰控制的百万人口大城市

一名入伍才三个月的俄军逃兵,在乌东村落枪杀了五名熟睡的乌军无人机操作员,得手后端着枪一头扎进了乌克兰控制的百万人口大城市

扶苏聊历史
2026-10-26 11:49:51
亚马尔叔叔炮轰金球奖:我侄子世界第1!凯恩啥都没干只是进球多

亚马尔叔叔炮轰金球奖:我侄子世界第1!凯恩啥都没干只是进球多

我爱英超
2026-10-27 08:11:30
信访新规强调:越级上访就问责!可如果基层不受理,该到哪说理去

信访新规强调:越级上访就问责!可如果基层不受理,该到哪说理去

细说职场
2026-10-26 12:52:07
杭州一高架上风筝线割坏两辆车,车主称找不到肇事者只能自行出险赔偿

杭州一高架上风筝线割坏两辆车,车主称找不到肇事者只能自行出险赔偿

现代快报
2026-10-26 22:37:20
女义工被要求陪客、酒后搂抱;深夜民宿老板试图开门闯入,结伴仓皇出逃……警惕以工换宿“义工旅行”

女义工被要求陪客、酒后搂抱;深夜民宿老板试图开门闯入,结伴仓皇出逃……警惕以工换宿“义工旅行”

都市快报橙柿互动
2026-10-27 02:27:03
刚2-1掀翻巴萨!皇马赛后传来穆里尼奥消息,姆巴佩说的很实在

刚2-1掀翻巴萨!皇马赛后传来穆里尼奥消息,姆巴佩说的很实在

画夕
2026-10-26 12:34:01
美国入境新规!11月3日起赴美航班旅客都要签声明,绿卡、公民也不例外

美国入境新规!11月3日起赴美航班旅客都要签声明,绿卡、公民也不例外

北美省钱快报
2026-10-27 03:58:37
马斯克:人类在ASI面前是黑猩猩,未来所有钱和工作都将清零!

马斯克:人类在ASI面前是黑猩猩,未来所有钱和工作都将清零!

新智元
2026-10-26 12:45:44
特朗普突然发现致命漏洞:只要不碰中国,全世界没一个能打的

特朗普突然发现致命漏洞:只要不碰中国,全世界没一个能打的

纪史行者
2026-10-27 00:50:07
张雪到重庆大学进行校招演讲称“风浪越大鱼越贵”,入职后年薪10万起,学生:张总说一年后大部分能涨薪20%

张雪到重庆大学进行校招演讲称“风浪越大鱼越贵”,入职后年薪10万起,学生:张总说一年后大部分能涨薪20%

极目新闻
2026-10-26 21:18:09
中国富豪补税大追缴

中国富豪补税大追缴

凤眼论
2026-10-26 17:45:07
Anthropic科学家宣布:全球博士生职业生涯一夜清零!

Anthropic科学家宣布:全球博士生职业生涯一夜清零!

新智元
2026-10-27 02:27:43
刘嘉玲估计头都大了,这是管不了还是假装看不见?

刘嘉玲估计头都大了,这是管不了还是假装看不见?

喜欢历史的阿繁
2026-10-27 04:28:25
33岁凯恩首获金球奖!拜仁近45年首人 创8大纪录 一举终结3大等待

33岁凯恩首获金球奖!拜仁近45年首人 创8大纪录 一举终结3大等待

我爱英超
2026-10-27 06:59:39
国际乒联227家乒协收举报信!核心内容曝光:直指刘国梁+王楠夫妇

国际乒联227家乒协收举报信!核心内容曝光:直指刘国梁+王楠夫妇

念洲
2026-10-27 08:11:32
【环时深度】俄乌战场上的雇佣兵命运有多惨

【环时深度】俄乌战场上的雇佣兵命运有多惨

环球网资讯
2026-10-27 06:37:07
博索纳罗拒绝承认败选,要求废除选举结果,中方:尊重巴西人民的选择

博索纳罗拒绝承认败选,要求废除选举结果,中方:尊重巴西人民的选择

政知新媒体
2026-10-26 15:58:29
亲眼目睹藏族少女天葬之行,参加全过程后心悸:颠覆我对生死的认知

亲眼目睹藏族少女天葬之行,参加全过程后心悸:颠覆我对生死的认知

古怪奇谈录
2025-09-09 14:36:35
沪指涨0.19%收盘报3697.52点,主板缩量3500亿元,游戏行业领涨!

沪指涨0.19%收盘报3697.52点,主板缩量3500亿元,游戏行业领涨!

终南听雨
2026-10-26 15:59:20
此处不留爷便另寻去处!伊藤美诚告别日本国家队,踏上全新征程

此处不留爷便另寻去处!伊藤美诚告别日本国家队,踏上全新征程

史鹷的生活科普
2026-10-27 04:48:45
2026-10-27 10:11:00
呼呼历史论
呼呼历史论
分享有趣的历史
877文章数 18522关注度
往期回顾 全部

科技要闻

Anthropic最硬气招股书,先把丑话说在前头

头条要闻

披露缅北电诈的自媒体人已遇害 在广州被劫持遗弃山上

头条要闻

披露缅北电诈的自媒体人已遇害 在广州被劫持遗弃山上

体育要闻

13年后重回诺坎普,穆里尼奥又滑跪了

娱乐要闻

胡歌杨幂刘诗诗袁弘陈龙结伴去埃及

财经要闻

金价跌回8字头

汽车要闻

云辇-M上车 第二代海豹07让驾驶者也能爱上的家用车

态度原创

游戏
健康
房产
公开课
军事航空

曝《寂静岭1重制》2027年发售!首批演员阵容曝光

痘痘能根治吗?皮肤科医生说实话

房产要闻

海甸岛26万人,还缺一个年轻人“待得住”的地方

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

高清大图!歼-15红蓝对抗训练最新画面

无障碍浏览 进入关怀版