首页

📚 文章列表 | 🏷️ 标签 | 🗂️ 归档

最近文章

  • 开发笔记:gocl(LLVM 后端)踩过的坑 2026-10-07

    这是一篇开发笔记,不是教程。记录的是把 goc 的 C 代码交给 LLVM 编译、再用自研链接器合成可执行文件这条路上踩到的坑——大部分是「读错字段不会报错、只是结果不对」那一类。教程正文里不写这些。 起因 goc 的默认后端是自研的 …

  • 用 MinGW64 裁剪构建 libLLVM-23.dll:109MB 压到 10.9MB 的完整实录 2026-10-06

    TL;DR:LLVM 23.1.2 + MSYS2 MinGW64(GCC 16.2.0),只保留 X86/x64 后端与 IR 读入、优化管线、ELF/COFF/ASM 输出。最终产物 libLLVM-23.dll 10.9MB:静态链 …

  • 开发笔记:让 gocld 链接 .rsrc 资源节 2026-10-06

    这是一篇开发笔记,不是教程。记录的是让链接器认得 PE 资源节时踩到的坑——一个格式里每一个字段都另有含义、而读错不会报错的地方。教程正文里不写这些。 起因 .rsrc 之前是被静默丢弃的。 coffSectionMap 里没有 …

  • 开发笔记:把 gocld 变成真正的链接器 2026-10-06

    这是一篇开发笔记,不是教程。记录的是把「编译」拆成「编译 + 链接」时踩到的坑,包括那些读起来完全正常的字节。教程正文里不写这些。 起因 goc 一直是「一次编译直接出可执行文件」:goc a.c b.c 把每个 .c 当独立翻译单元解析 …

  • 开发笔记:gocl 变参窄整型丢符号性 2026-10-06

    这是一篇开发笔记,不是教程。记录的是一次 bug 从"看不懂"到"修掉"的完整过程,包括走错的弯路。教程正文里不写这些。 现象 src/examples/stress.c,两个后端跑同一份源码: …

  • 第 4 章:项目状态与 roadmap 2026-10-06

    前面四章讲的是"怎么用"。这一章讲**“现在到什么程度了”**——包括我实测跑出来的数字,和一个值得单独拿出来说的教训。 所有数字核对于 2026-10-06,goc 提交 f200cd1,版本串 …

  • 第 3 章:体积实测——goc、LLVM 后端、gcc 三方对照 2026-10-06

    前面两章反复出现"小很多"“小 83%“这类说法。这一章把数字摊开——全部是实测,不是引用。 测量环境:Windows 11 + MSYS2 UCRT64,gcc …

  • 第 2 章:写第一个 Windows GUI 程序 2026-10-06

    上一章的 Hello World 还是控制台程序。这一章弹个真正的窗口,顺带验证一个硬指标:产物到底依赖哪些 DLL。 目标 写一个程序,弹出消息框显示屏幕尺寸和窗口句柄状态,最终产物只导入 kernel32.dll 和 …

  • 第 1 章:5 分钟跑起来 2026-10-06

    上一章讲了 goc 是什么。这一章把它跑起来。 目标:5 分钟内在这台机器上编译并运行第一个 C 程序,然后交叉编出一个 Linux 可执行文件。 环境要求 要求 必需 Go(构建工具链)、bash 可选 Python 带 unicorn …

  • 第 0 章:为什么再写一个 C 编译器 2026-10-06

    市面上的"X 语言实现的 Y"已经很多了:Go 实现的编译器、Brainfuck 实现的 C、Python 实现的 Python。为什么还要用 Go 写一个 C 编译器? 因为大多数编译器套娃是玩具——能跑 Hello …

查看全部文章 →