<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLVM :: 标签 :: yafeng 的博客</title><link>http://yafengabc.github.io/tags/llvm/index.html</link><description/><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 07 Oct 2026 01:20:00 +0800</lastBuildDate><atom:link href="http://yafengabc.github.io/tags/llvm/index.xml" rel="self" type="application/rss+xml"/><item><title>开发笔记：gocl 变参窄整型丢符号性</title><link>http://yafengabc.github.io/goc/devnotes/01-%E5%8F%98%E5%8F%82%E7%AA%84%E6%95%B4%E5%9E%8B%E4%B8%A2%E7%AC%A6%E5%8F%B7%E6%80%A7/index.html</link><pubDate>Tue, 06 Oct 2026 14:30:00 +0800</pubDate><guid>http://yafengabc.github.io/goc/devnotes/01-%E5%8F%98%E5%8F%82%E7%AA%84%E6%95%B4%E5%9E%8B%E4%B8%A2%E7%AC%A6%E5%8F%B7%E6%80%A7/index.html</guid><description>gocl（LLVM 后端）把所有经变参传递的 32 位整型的符号性丢掉。本文记录从「误诊为有符号除法」到「定位为变参8 字节槽未填满」的完整排查过程、根因、修复，以及两次误诊里学到的东西。</description></item><item><title>第 0 章：为什么再写一个 C 编译器</title><link>http://yafengabc.github.io/goc/00-%E4%B8%BA%E4%BB%80%E4%B9%88%E5%86%99goc/index.html</link><pubDate>Tue, 06 Oct 2026 12:10:00 +0800</pubDate><guid>http://yafengabc.github.io/goc/00-%E4%B8%BA%E4%BB%80%E4%B9%88%E5%86%99goc/index.html</guid><description>编译器套娃已经很多了，为什么还要用 Go 写一个 C 编译器？goc 的答案是三条取舍：不依赖 gcc、不依赖 libc、不假设 CPU 行为。本文讲清这个定位怎么决定了整个项目形态。</description></item><item><title>开发笔记：gocl（LLVM 后端）踩过的坑</title><link>http://yafengabc.github.io/goc/devnotes/04-gocl-llvm%E5%90%8E%E7%AB%AF%E8%B8%A9%E8%BF%87%E7%9A%84%E5%9D%91/index.html</link><pubDate>Wed, 07 Oct 2026 01:20:00 +0800</pubDate><guid>http://yafengabc.github.io/goc/devnotes/04-gocl-llvm%E5%90%8E%E7%AB%AF%E8%B8%A9%E8%BF%87%E7%9A%84%E5%9D%91/index.html</guid><description>把 goc 的 C 代码交给 LLVM 编译、再由自研链接器合成 exe，这条路上踩过的坑：libLLVM 的 FFI 约定、LLVM IR 的畸形输出、COFF 重定位丢失 addend 导致控制台全哑、printf 特化的架构缺口、PE 段级文件对齐、TLS 访问被当成 extern 全局、以及 AT&amp;T 前端的操作数方向不能一律翻转。</description></item><item><title>第 3 章：体积实测——goc、LLVM 后端、gcc 三方对照</title><link>http://yafengabc.github.io/goc/03-%E4%BD%93%E7%A7%AF%E5%AE%9E%E6%B5%8B/index.html</link><pubDate>Tue, 06 Oct 2026 12:40:00 +0800</pubDate><guid>http://yafengabc.github.io/goc/03-%E4%BD%93%E7%A7%AF%E5%AE%9E%E6%B5%8B/index.html</guid><description>全部自己跑出来的数字：Hello World 的 print 版 2048 字节、printf 版 6656 字节，gcc 是 38989 字节。附带发现 LLVM 后端反而更小，以及一套验证第二后端正确性的办法。</description></item><item><title>第 4 章：项目状态与 roadmap</title><link>http://yafengabc.github.io/goc/04-%E9%A1%B9%E7%9B%AE%E7%8A%B6%E6%80%81/index.html</link><pubDate>Tue, 06 Oct 2026 12:50:00 +0800</pubDate><guid>http://yafengabc.github.io/goc/04-%E9%A1%B9%E7%9B%AE%E7%8A%B6%E6%80%81/index.html</guid><description>goc 实测状态：Windows 腿全绿，C23 实用子集全部落地，LLVM 后端可用但仍是实验性。本文列出能做什么、不能做什么、正在进行什么，以及一个「26 个失败其实全是环境缺依赖」的例子。</description></item><item><title>用 MinGW64 裁剪构建 libLLVM-23.dll：109MB 压到 10.9MB 的完整实录</title><link>http://yafengabc.github.io/programming-misc/llvm-minimal-build/index.html</link><pubDate>Tue, 06 Oct 2026 22:17:48 +0800</pubDate><guid>http://yafengabc.github.io/programming-misc/llvm-minimal-build/index.html</guid><description>在 MSYS2 MinGW64 下把 LLVM 23.1.2 裁剪成一个只保留 X86 后端、读 IR→优化→输出 ELF/COFF/ASM 的 libLLVM-23.dll：静态运行时、仅依赖 7 个系统 DLL、只导出 1093 个 C 符号，体积从 109.8MB 一路压到 10.9MB。记录 PE 导出上限、-Os 被覆盖、whole-archive 抵消 gc、组件级裁剪等全部踩坑。</description></item></channel></rss>