发布时间:2026/8/18 16:59:28
一个编译器7大目标:B语言编译器bext-lang/b多后端架构全解析 一个编译器7大目标B语言编译器bext-lang/b多后端架构全解析【免费下载链接】bCompiler for the B Programming Language implemented in Crust项目地址: https://gitcode.com/gh_mirrors/b8/b想知道一门来自1970年代的古老语言如何跑上现代x86芯片、Apple芯片、甚至任天堂同款6502处理器吗本文为你深度解析B语言编译器bext-lang/b 的多后端架构看它如何用一个前端对接7大目标平台把一次编写、处处编译变成现实。这个用 RustCrust实现的编译器项目既是一次复古编程的浪漫实验也是一堂精彩的编译器架构课。B语言编译器是什么从贝尔实验室到现代重生B语言诞生于1970年代初的贝尔实验室由 Ken Thompson 和 Dennis Ritchie 开发是 C 语言的前身深刻影响了整个编程世界。bext-lang/b 正是为这门历史语言打造的现代编译器——它用 Rust 生态中的 Crust 实现前端负责把源代码解析成中间表示IR后端则从 IR 生成各种平台的可执行程序。有趣的是项目在 README 中坦诚地写道编译器尚未完全实现不适合严肃的软件开发但它是娱乐编程Recreational Programming的绝佳玩具。这种谦逊又硬核的气质正是复古计算爱好者的心头好。多后端架构的核心设计前端与后端彻底解耦bext-lang/b 的编译器架构遵循经典的分层思想前端只负责词法分析、语法分析并产出统一的中间表示IR后端则专注于把 IR 翻译成目标平台的汇编或字节码。这种松耦合设计在 docs/bgen.md 中有详细说明它的直接好处就是——添加新目标平台极其容易。在这个架构里有两个关键概念概念说明Target目标通过-t参数选择的编译平台Codegen代码生成器一组目标的集合放在src/codegen/目录下比如 x86_64 平台的三个目标Linux、Windows、Darwin共享同一个 codegen只在函数调用参数传递的 ABI 规范上有所不同避免了大量重复代码。编译器目标平台逐个数7大后端全解析bext-lang/b 目前支持7个编译器目标平台覆盖了现代主流架构与复古硬件用-tlist参数即可查看全部清单。我们逐一来看1-3. gas-x86_64 系列现代PC的完整覆盖 这是最日常的目标组对应 x86_64 架构包含三个平台gas-x86_64-linux最常用的 Linux 桌面/服务器目标gas-x86_64-windowsWindows 平台目标支持交叉编译gas-x86_64-darwinmacOSIntel平台目标它们共用 gas_x86_64 这一个 codegen生成的汇编交给系统的ccGCC/Clang完成汇编和链接所以依赖极其简单只要装有 Rust 和任意 C 编译器就能跑起来。4-5. gas-aarch64 系列Apple Silicon 与 ARM 服务器随着 ARM 架构崛起aarch64 支持成为现代编译器的标配gas-aarch64-linux适配树莓派、ARM 云服务器等设备gas-aarch64-darwin适配 Apple SiliconM1/M2/M3 等Mac这一组特别值得一提Darwin 平台对变参函数的调用约定与普通函数不同因此项目引入了__variadic__(函数名, 固定参数个数)扩展语法让编译器能正确选择调用约定细节记录在 docs/bext.md 中。6. uxn 目标极简虚拟机上的复古艺术uxn 是一台设计极简、强调可移植性的小型虚拟机来自 Hundred Rabbits 社区。bext-lang/b 能直接把 B 语言程序编译成 uxn 字节码在uxnemu/uxncli模拟器中运行。配合 examples/uxn/ 下的示例你可以体验复古游戏机的编程乐趣。7. 6502-posix 目标为传奇芯片写程序MOS 6502 是 Atari 2600、NES 红白机、Apple II、Commodore 64 等传奇硬件的心脏。由于 6502 裸机环境千差万别项目团队创建了 posix6502 模拟器把一些 POSIX 功能暴露给运行在 6502 上的程序作为测试和玩耍用的目标平台。写一段 B 代码编译后在 6502 模拟器上跑起来这种穿越感确实妙不可言。可插拔代码生成器第三方也能自定义后端bext-lang/b 最酷的设计之一是可插拔 Codegen 机制。任何放在 src/codegen/ 目录下的合法 Rust 模块都会被构建系统自动识别并注册为新的代码生成器。这意味着你只需把它当作独立 git 仓库 clone 进去重新make一个新目标平台就诞生了社区已经贡献了多个第三方后端比如 .NET/Mono 的ilasm-mono目标、Casio 计算器SH4AL-DSP、自定义 Bext 字节码、MSVC 后端等等。想了解实现细节可以阅读 docs/bgen.md 中关于Pluggable Codegen Format的说明以及极简参考实现 noop.rs。测试矩阵一次编译、全平台验证多目标平台意味着测试复杂度成倍上升为此项目内置了btest工具。它会在所有目标平台上自动编译并运行 tests/ 目录下的全部测试用例生成一份测试矩阵报告——每个用例在哪个平台通过、哪个平台失败一目了然。更贴心的是你可以灵活切片测试矩阵./build/btest -t gas-x86_64-linux只测指定平台./build/btest -c upper只跑指定用例./build/btest -t *linux -c asm*支持 glob 通配符组合筛选错误也不会让 btest 崩溃它会收集所有平台的测试状态再统一汇总方便开发者快速掌握编译器的整体健康度。详细用法见 docs/btest.md。快速上手30秒体验多后端编译想要亲自感受这个B语言编译器的多后端威力只需三步$ make $ ./build/b -run ./examples/hello_world.b $ ./build/b -t uxn ./examples/hello_world.b第一条命令用 Rust 和系统cc构建编译器本体第二条在本地默认 gas-x86_64-linux 目标编译并运行 Hello World第三条则把同一份源码编译到 uxn 虚拟机目标。仓库地址https://gitcode.com/gh_mirrors/b8/bexamples/ 目录还准备了大量循序渐进的学习案例从最基础的 hello_world.b 到炫酷的 mandelbrot.b、snake.b 和 donut.b按文件大小排序阅读即可从易到难。总结为什么这个编译器值得一看bext-lang/b 用一套清晰的多后端架构把 1970 年代的语言带到了 2020 年代的芯片上。它的意义远不止能用架构示范前后端解耦 可插拔 codegen是学习编译器设计的绝佳教材复古情怀在 NES 同款 6502 和极简 uxn 虚拟机上运行 B 代码乐趣无穷社区生态第三方后端不断涌现证明了插件机制的健壮性如果你对编译器原理、复古计算或 B 语言本身感兴趣不妨 clone 下来亲手编译一个目标试试。记住这门编译器的哲学是好玩至上别拿它写生产代码用它探索编程的源头吧【免费下载链接】bCompiler for the B Programming Language implemented in Crust项目地址: https://gitcode.com/gh_mirrors/b8/b创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/18 16:59:28

JoliCi 排错指南:5 个高频问题的终极解决方案

JoliCi 排错指南:5 个高频问题的终极解决方案 【免费下载链接】JoliCi :white_check_mark: JoliCi - Run your TravisCi builds locally 项目地址: https://gitcode.com/gh_mirrors/jo/JoliCi JoliCi 是一款用 PHP 编写的开源持续集成(CI&#xf…

2026/8/18 16:59:28

免费AI修图神器IOPaint:三步去除图片中的任何元素

免费AI修图神器IOPaint:三步去除图片中的任何元素 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on y…

2026/8/18 18:04:39

天翼云盘CLI基础操作:cloudpan189-go最常用的10个命令详解

天翼云盘CLI基础操作:cloudpan189-go最常用的10个命令详解 【免费下载链接】cloudpan189-go 天翼云盘命令行客户端(CLI),基于GO语言实现 项目地址: https://gitcode.com/gh_mirrors/cl/cloudpan189-go cloudpan189-go 是一款基于 Go 语言开发的天…

2026/8/18 18:04:39

gOSINT路线图与社区:v0.5dev之后的开源情报工具如何进化

gOSINT路线图与社区:v0.5dev之后的开源情报工具如何进化 【免费下载链接】gOSINT OSINT Swiss Army Knife 项目地址: https://gitcode.com/gh_mirrors/go/gOSINT gOSINT 是一款用 Go 语言打造的开源情报工具(OSINT Swiss Army Knife)&…

2026/8/17 10:49:52

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 6:58:27

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/18 0:02:05

Qwen3.8-27B本地部署实战:17GB内存运行270亿参数大模型

1. 这篇文章真正要解决的问题 你是否曾对动辄需要上百GB显存才能运行的百亿参数大模型望而却步?是否觉得在个人电脑上部署一个功能强大的语言模型是天方夜谭?最近,通义千问团队发布的 Qwen3.8-27B 模型,宣称仅需 17GB 内存即可在本…

2026/8/18 0:02:05

ME3169 36V,8A,180KHz 恒压Buck DC-DC 转换器

概述ME3169 是一款180KHz,PWM 模式恒压Buck DC-DC 转换器,8V 到36V 宽工作电压范围,低纹波,内置低导通电阻功率MOS。ME3169 内置环路补偿电路,可以减少外围元器件数量。内部设计有恒压环路,可以通过外部电阻…

2026/8/17 15:07:41

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/17 17:27:06

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/18 7:12:40

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…