示例工程【免费下载链接】bitwiseBitwise is an educational project where we create the software/hardware stack for a computer from scratch.项目地址https://gitcode.com/gh_mirrors/bi/bitwise点击查看免费下载本文以 Bitwise 项目的发布公告README.md为主线完整梳理这个从零构建计算机教学项目的缘起、交付形式、参与门槛与六个月路线图并结合仓库中已经落地的 Ion 编译器、RISC-V 工具链、Rattle HDL 等源码验证路线图上的哪些环节已经走出了第一步。读完后你将清楚 Bitwise 的设计哲学与整体技术路线并能定位到仓库中对应的实现文件继续深入研究。一、项目缘起为什么从零构建README 开篇引用了费曼的黑板名言What I cannot create, I do not understand凡我不能创造的我就没有真正理解它。项目发起人是 Per Vognsen拥有 15 年以上游戏开发与系统编程经验曾任职于 Epic Games、NVIDIA、RAD Game Tools最近一家是 Oculus。他在 2017 年决定从职业编程中抽身用几年时间完成一个长期梦想通过示例by example展示如何从零构建系统并聚焦低层计算low-level computing。项目核心主张可以归纳为三点简单性优先README 明确指出只要我们强烈地偏向简单性、而不是在功能完整性或性能上追求边际收益这些东西编译器、内核、硬件设计等可以比大多数人想象的更简单、更快速地完成。不竞争目标不是压倒或竞争任何现有产品not to outdo or compete with any existing product而是用真实的硬件和软件展示事情是如何运作的。全免费、公有领域项目产出包括教学视频、文章和软硬件源码全部免费代码进入公有领域public domain人人可研究、可扩展作者以个人储蓄支持项目不要求也不接受资金捐助见 FAQ.md 与 LICENSE.md。参与门槛几乎不需要专用硬件尽管项目以硬件为重点README 特别强调参与 Bitwise 几乎不需要任何特殊硬件或 FPGA 开发板。所有开发都使用免费工具运行在普通的 Windows、Linux 或 Mac 电脑上FPGA 板主要用于调试目的而且项目刻意最小化在真实硬件上花费的时间因为相比仿真simulation真机调试往往更痛苦、更耗时。FAQ.md 进一步解释团队会为主外设如 DDR3 DRAM 和其他 IO 接口创建模拟器和周期精确cycle-accurate模型即便你拥有 FPGA 板开发过程中也不会经常直接使用。如果坚持上真机目标是一块约 100 美元入门级板和一块约 400 美元的高阶板但这不是必须的。二、你将学会构建什么README 列出了六类你将学会构建的东西这是整个项目的能力清单类别内容仓库中已有的对应物HDL 编译器与模拟器自研硬件描述语言及其工具链rattle/rattle.py、rattle/tutorial.pyPython 内嵌 DSL 的逻辑设计实验FPGA 硬件CPU、GPU、HDMI 控制器、Ethernet MAC、DDR3 PHY 等路线图项硬件设计轨尚在展开中内核设备驱动、硬件抽象层、调度器、虚拟内存管理器、文件系统、TCP/IP 栈目标软件暂未出现在当前快照系统库GUI、内存分配器等noir/noir/noir.ion基于 SDL 的 GUI 应用、ion/system_packages/builtin/alloc.ion分配器封装系统应用编译器、汇编器、反汇编器、剖析器、调试器ion/Ion 编译器C99 实现、ion/riscv/assembler.ionRISC-V 静态汇编器测试基础设施基于属性的测试、定向随机测试、模糊测试ion/test.c、ion/generate_test.py值得注意的一条线索是上表中的系统应用列在仓库中已经是最成熟的模块。这正对应 README 路线图中第一个大项目是类 C 系统语言编译器的规划——编译器先于一切其他软件存在因为后续所有工具都用它来写。三、设计哲学简单是刻意选择而非妥协README 反复传达同一个价值观strongly favor simplicity over marginal gains in feature completeness or performance——在简单性与功能/性能边际收益之间坚定选择前者The goal is not to outdo or compete with any existing product; the goal is to show how things work with real hardware and software——目标是教学不是造出最强方案。notes/ion_motivation.md项目对首个核心语言的设计备忘录把这一哲学具体化成了目标与非目标。目标包括易于实现、对 C 程序员零学习曲线、减少不必要的特性、可用于宿主机Windows/Linux/Mac x86/x64与目标机RISC-V双重开发非目标则明确排除史上最佳语言综合征、过度抬升抽象层级、内存/整数溢出安全等。它选择了 C 的类型系统与机器模型但用简单、LL(1)、不依赖符号表的语法替换 C 的解析难题宿主端输出等价的惯用 C 代码、目标端直接输出机器码。这解释了为什么 Bitwise 的语言与工具链可以保持轻量——它是教学优先的刻意取舍而不是能力不足。FAQ.md 中还提到项目的重要思想来源是 Niklaus Wirth 的 Oberon 系统及其工作整体这与路线图中从 RV32I 小核做起、逐步增强的渐进式硬件路线一脉相承。四、项目结构与参与方式README 的 Structure 一节描述了项目的运作节奏原文注明高度取决于社区反馈可能变化全时投入作者计划把 Bitwise 当作持续数年的全职投入避免倦怠avoiding burnout是主要优先事项。直播计划每日或隔日在 Twitch 直播每场一至两小时视频稍后发布到 YouTube。notes/streams.md 的 Day 4 记录显示由于追看视频内容太吃力的社区反馈节奏随后调整为**半日播周一/周三/周五**外加随机加播。博客每周或隔周发布博文总结自上次更新以来的进展。代码评审保证不漏行每次直播以代码评审开场逐一审视自上次直播以来提交的所有 diff即使大量代码必然是在直播外写成的你也不会错过任何一行代码评审结束后把最新变更推送到 GitHub 仓库。多轨道交替为了保持趣味直播频繁在不同开发轨道间切换——某一周可能在主软件任务与主硬件任务之间交替也常有随机副题大多数直播是现场编码live coding少数采用常规演示形式。独立文章在周更总结之外作者会把直播内容提炼成独立文章。文章受众比直播观众大得多能帮助新观众或中断的观众快速追平进度——毕竟对大多数人来说靠看直播回放追进度并不现实。前置要求硬性要求只有 C 语言熟练fluent C programmers。Python 是次要语言但事先会 Python 不是前置条件。节奏很快作者会给出许多主题概览但不可能面面俱到因此会尽可能附上延伸阅读的指引。FAQ.md 补充还需要计算机本科阶段通常会学到的算法与数据结构等基础概念正式前置条件很少但不要期待它容易。配套开发环境来自 FAQ用途工具编译 C 代码任意 C 编译器作者用 Visual C也可用 GCC/ClangVisual Studio Community 对个人免费Python 环境Python 3.6 Conda 包管理器Verilog 仿真开源 Verilator周期精确仿真Xilinx FPGAVivado 免费版WebPACK 版本每周时间投入FAQ 给出两种极端只关心项目动态的轻度参与只需每周约一小时读博客、偶尔看视频把它当高强度大学课程则每天需要数小时看直播、研究代码、自己写代码。项目采用分段式设计与构建你可以在任何自然停驻点退出带走一段自包含的新知识目标让每隔几周出现一个自然里程碑。反过来如果中途加入过往的总结与文章可以帮你快速追平。所有材料在项目结束后也将长期免费可用。排期预期直播时间周一至周五6 PM PDT / 9 PM EDT / 2 AM CET。开播kick-off直播原定 3 月 12 日以概览和问答为主notes/streams.md 记录 Day 0 为 2018 年 3 月 12 日。第一个大项目是类 C 系统语言编译器预计数周完成之后同步启动硬件轨。作者当时位于泰国该时刻表是其在各时区间的折中每年 8 月会在欧洲待一个月届时时刻表会强制轮换也可能把部分直播挪到周六/周日早午场照顾欧洲观众。五、六个月路线图README 的 Roadmap 一节原文注明可能变化但能说明计划方向对应约六个月的预估工作量同时推进软件与硬件两条轨道。硬件轨先学数字逻辑学习如何用 HDL 设计硬件而且将设计一门自研 HDL 及其配套工具链包括软件实现的模拟器和调试工具。小型练手项目沿路会做许多有趣的迷你项目例如纯用逻辑门设计一个 Pong以及实现 Zachtronics 游戏 TIS-100 中玩具并行计算机的变体。从零设计可综合到真实 FPGA 的计算机包括 RISC-V CPU、GPU以及 DDR3 内存、HDMI 音视频、以太网等 IO 接口控制器。软件轨一切从系统语言开始先构建一个简单但强大的类 C 系统编程语言。它最初在宿主机上引导bootstrap之后用它来构建其余所有软件最终大部分宿主工具链都能移植到 Bitwise 计算机本机上运行。CPU 上电阶段当 CPU 首次点亮时用这门语言编写模拟器emulator、汇编器、反汇编器和调试器。汇编级验证用汇编语言写测试程序验证 CPU。编译器后端CPU 可用后为系统语言写一个针对该 CPU 的编译后端开始在它上面运行简单的编译程序。微控制器级操作系统构建一个简单的微控制器级任务切换操作系统并在其上写简单应用。CPU 演进路线初始是一个功能与性能有限、仅带 UART用于与宿主通信的 RV32I 微控制器级核心随后扩展到 RISC-V 的 RV32G profile整数乘除 M 扩展与浮点 F 扩展为提升性能加入指令流水与分支预测在有 DRAM 支持后加入缓存外设方面补齐音视频输出与网络配套软件与硬件进度并行开发。终点形态一个带图形用户界面的桌面级简单操作系统能运行自己写的游戏和其他应用。在实现 MMU 之后可以尝试引导 Linux但这不是主要目标。README 以此收尾而这仅仅是个开始六、仓库源码印证路线图已经走到哪一步以下各小节以当前仓库的实际代码为证据展示路线图各环节的落地形态。所有内容均可直接打开对应文件查看。6.1 Ion 编译器C99 实现的两遍编译器路线图的第一个项目——类 C 系统语言编译器——就是仓库中体量最大的模块 ion/。整体结构印证了 notes/ion_motivation.md 中的设计单一编译单元构建ion/main.c 通过#include依次并入common.c、lex.c、type.c、ast.c、parse.c、resolve.c、gen.c、ion.c、test.c等实现文件main()只是转调ion_main()。这种物理耦合的极简组织方式正是项目简单性优先哲学的直接体现。两遍编译第一遍词法分析与 LL(1) 递归下降解析产出 ASTion/lex.c、ion/parse.c、ion/ast.c第二遍符号解析、类型检查与代码生成ion/resolve.c 约 3000 行ion/gen.c产出 C 代码。语法与词法细节集中在 ion/syntax.txt包含 EBNF 文法示例代码见 notes/example.ion。包系统目录下所有.ion文件自动构成一个包见 notes/example.ion 中import foo的注释说明约定优于配置。#line魔法生成的 C 代码中穿插#line 行号指令使编译报错直接指向 Ion 源文件——对应 notes/ion_motivation.md 中提到的 #line magic。实现在 ion/gen.c可用--nolinesync关闭。从源码结构看编译器入口 ion/ion.c 提供了完整的命令行接口ion/ion.cUsage: ion [flags] main-package -o file 输出文件默认 out_main-package.c -os os 目标操作系统枚举见 targets.c -arch arch 目标机器架构 -check 只做语义检查不生成代码 -lazy 只编译从主包可达的部分 -notypeinfo 不生成 typeinfo 表 -fullgen 对不可达符号也强制全量生成 -nolinesync 禁用 Ion 代码与生成 C 代码之间的 #line 同步 -verbose 输出额外诊断信息以及三组环境变量ion/ion.c、ion/ion.cIONHOMEIon 主目录system_packages所在位置未设置则报错退出IONPATH分号分隔的附加包搜索路径IONOS/IONARCH指定目标操作系统与架构与-os/-arch对应。编译流程还要求主包中定义main入口ion/ion.c默认先解析自然可达符号非--lazy时再强制解析全部符号最后生成 C 文件默认名out_package.c并打印内存使用统计intern/source/AST 字节数与比值。宿主端与目标端的双轨支持也已在源码中体现ion/system_packages/ 下的builtin/提供foreignC 互操作如 alloc.ion 中的foreign(tls_alloc)分配器接口、按平台拆分的types_*.ion/config_*.ionlibc/与sdl/目录则提供对 C 标准库和 SDL 的绑定正是宿主端与 C 及宿主 OS 无缝互操作这一目标的落地。6.2 RISC-V 工具链用 Ion 写汇编器路线图中CPU 上电时编写模拟器、汇编器、反汇编器、调试器这一步仓库已有实质性产出且全部用 Ion 语言编写ion/riscv/riscv.ionRISC-V 指令集定义约 950 行ion/riscv/assembler.ion静态汇编器实现约 2500 行文件内自带align_up_uint、is_pow2等对齐工具函数ion/riscv/dynasm/dynasm.ion动态汇编器对应 notes/streams.md 中 Day 24–26 RISC-V Dynamic/Static Assembler 系列直播notes/asm.txtRISC-V 汇编的笔记约 960 行ion/forth.asm用 RISC-V 汇编实现的 Forth——印证 FAQ 中顺带学会实现 Forth、Lisp 和内嵌脚本语言等其他语言的教学承诺。6.3 RattlePython 内嵌 DSL 的逻辑设计硬件轨的起点学习数字逻辑 自研 HDL对应 rattle/ 目录rattle/rattle.py约 1450 行DSL 核心提供module、input(bit)、output(expr)等原语用 Python 类与表达式描述组合逻辑rattle/tutorial.py约 1300 行一套完整的逻辑设计教程从 Xor/Not/NAND 门电路 起步到真值表转与或式sum of products、多路选择器mux、以及 2 位/3 位加法器、行波进位加法器ADC逐级递进——这正对应 README 中先学数字逻辑再做小项目的硬件轨第一步rattle/experiments.py进一步实验。FAQ 说明自研 HDL 将以 Verilog 作为综合编译器的中间语言Python 同时充当硬件设计相关的万能胶水语言这些 Python 原型正是那条路线的起点。6.4 Noir用 Ion 写的 GUI 应用noir/noir/noir.ion约 800 行是一个用 Ion 语言编写的图形应用通过import sdl {...}与import libc {printf, ...}复用系统包定义了按键到 SDL 扫描码的映射表和基础输入逻辑。它是系统库含 GUI与系统应用两条清单的早期实例也演示了 Ion 包系统与foreign宿主互操作在真实应用中的形态。6.5 进度标尺streams.mdnotes/streams.md 逐日记录了项目直播与工程进展从 Day 0Kickoff2018 年 3 月 12 日一直记录到 Day 53Logic Design, Part 5。可以推断当前仓库快照覆盖的工作进度约到第 53 天即软件轨已完成 Ion 编译器含包、类型内省、代码生成与 RISC-V 静态/动态汇编器硬件轨刚进入数字逻辑教学阶段。这份日志也完整保留了 README 所述直播 博客 仓库三轨并行的运作方式。七、许可、社区与贡献方式许可全部代码、数据、文字及相关原创作品进入公有领域LICENSE.md。若你的工作直接采用了 Bitwise 的部分成果作者会乐意收到一封说明用途的邮件但你没有任何法律义务。资金由作者个人储蓄自持无资金需求FAQ.md。社区规范GUIDELINES.md交流中保持尊重、对新手友好开放式讨论请使用论坛或 Discord 聊天服务器GitHub issues/pull requests 只用于具体的缺陷与修复且须保持中立、建设性的语气针对明显仍在快速变动的新代码提交小 bug 的 PR 通常没有必要因为下一场直播往往会自然覆盖。如何帮忙FAQ 给出的现阶段答案是——看直播、帮忙传播、参与社区作者表示其长期动力很大程度上取决于社区的响应。渠道项目通过 Twitch 直播、YouTube 视频、博客/文章、论坛与 Discord 服务器对外发布内容具体入口见 README.md 的 Links 一节与 FAQ.md。八、小结Bitwise 是一个以凡我不能创造的我就没有真正理解它为信条的教学项目用数年时间、全免费、公有领域地演示如何从零构建完整的软硬件栈——从自研 HDL 与 RISC-V CPU到类 C 系统语言、内核与桌面 GUI。它的差异化在于两点一是把简单性当作工程决策而非口号可从 notes/ion_motivation.md 的目标/非目标清单与 ion/main.c 的单编译单元组织方式直接看到二是把参与门槛压到最低只需熟练 C 和免费工具无需 FPGA 板。当前仓库已经展示了路线图的第一块拼图ion/ 下的 C99 两遍编译器、ion/riscv/ 下的 Ion 语言 RISC-V 工具链、rattle/ 下的逻辑设计 DSL 与 noir/noir/noir.ion 的 GUI 应用。如果你想继续深入建议按以下顺序阅读ion/syntax.txt语言语法→ notes/ion_motivation.md语言设计动机→ notes/streams.md项目实际推进日志→ ion/ion.c编译器入口与命令行接口。赞分享示例工程【免费下载链接】bitwiseBitwise is an educational project where we create the software/hardware stack for a computer from scratch.项目地址https://gitcode.com/gh_mirrors/bi/bitwise点击查看免费下载相关推荐Bitwise项目完全指南从零构建计算机软硬件栈的终极教程Bitwise项目完全指南从零构建计算机软硬件栈的终极教程 Bitwise是一个创新的教育项目旨在从零开始构建完整的计算机软硬件栈。这个开源项目将带领你深入示例工程如何快速上手Prometheus监控一份从官方文档到实战示例的资源地图如何快速上手Prometheus监控一份从官方文档到实战示例的资源地图 Kubernetes、云工作负载、自建服务总想把指标抓下来、告警发出去Promet可观测性指标监控时序数据库告警从零构建计算机Bitwise项目构建系统终极指南从零构建计算机Bitwise项目构建系统终极指南 Bitwise是一个免费的教育项目专注于从零开始构建计算机的软件和硬件堆栈可在FPGA上运行。该项目涵盖示例工程上一篇3分钟极速汉化GitHub Desktop免费开源工具完整指南下一篇WuWa-Mod深度实战解密《鸣潮》AES加密与模组开发全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考