<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on zevorn.blog</title><link>https://zevorn.cn/posts/</link><description>Recent content in Posts on zevorn.blog</description><image><title>zevorn.blog</title><url>https://zevorn.cn/avatar.webp</url><link>https://zevorn.cn/avatar.webp</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 15 May 2026 09:40:17 +0000</lastBuildDate><atom:link href="https://zevorn.cn/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>QEMU 训练营 2025 课程回放索引</title><link>https://zevorn.cn/posts/47/</link><pubDate>Fri, 15 May 2026 09:40:17 +0000</pubDate><guid>https://zevorn.cn/posts/47/</guid><description>原文信息 来源：RISC V 开发者社区 作者 / ID：zevorn 原文：https://ruyisdk.cn/t/topic/1863 原发布时间：2025 11 04 摘要 这是一篇 QEMU 训练营 2025 课程回放索引，集中整理导学阶段、开营、软件虚拟机技术介绍、硬件虚拟化科普、QEMU 基本概念、virt Machine 初始化、TCG/KV</description></item><item><title>泽文 / zevorn 外部技术内容索引</title><link>https://zevorn.cn/posts/40/</link><pubDate>Fri, 15 May 2026 09:38:45 +0000</pubDate><guid>https://zevorn.cn/posts/40/</guid><description>归档说明 这篇用于集中记录与“泽文 / 绝对是泽文啦 / zevorn / Chao Liu”相关的公开技术身份与外部内容来源，后续把适合沉淀为文章的内容拆成单独 Discussion。 相关 ID GitHub: &lt;a href="https://github.com/zevorn"&gt;https://github.com/zevorn&lt;/a&gt; Gitee: &lt;a href="https://gitee.com/zevorn"&gt;https://gitee.com/zevorn&lt;/a&gt; Bilibili: 绝对是泽</description></item><item><title>基于 codex 搭建本地 AI 工作流</title><link>https://zevorn.cn/posts/37/</link><pubDate>Mon, 05 Jan 2026 07:11:59 +0000</pubDate><guid>https://zevorn.cn/posts/37/</guid><description>codex 国内使用可以选择中转站，这里推荐：https://codex.packycode.com/ 购买套餐获取 key，以后，使用下面脚本来一键安装，需要将 &amp;ldquo;sk tC8cF&amp;hellip;jyi&amp;rdquo; 替换成真正的 key： 安装一些常用的 mcp，命令如下： 然后在 /.codex/config.toml 里面配置 mcp，其中 exa 需要在官网 https</description></item><item><title>优化 QEMU RISC-V Vector stride LD/ST 指令，让相关指令的仿真性能提升 25 倍</title><link>https://zevorn.cn/posts/33/</link><pubDate>Tue, 19 Aug 2025 01:40:56 +0000</pubDate><guid>https://zevorn.cn/posts/33/</guid><description>这两天逛邮件列表，发现有一个 QEMU TCG RVV 指令的性能优化补丁（ Re: PATCH 1/1 v2 RISC V/RVV Generate strided vector loads/stores with tcg nodes. Paolo Savini 1 ） 被 revert 了，原因是存在正确性问题。 昨晚来了兴致，于是我把这个补丁给修好了，</description></item><item><title>使用 gem5 模拟 MI300X，立省 10 万块？</title><link>https://zevorn.cn/posts/32/</link><pubDate>Mon, 28 Jul 2025 02:32:35 +0000</pubDate><guid>https://zevorn.cn/posts/32/</guid><description>前段时间社区的雾佬发了一篇 使用 gem5 模拟 MI300X 的知乎 1 ，正好我最近在验证 AMDGPU 的浮点运算精度，就想着对比一下 gem5 MI300X 的 model 浮点精度和真实硬件有没有什么差异。 这里推荐使用服务器或者工作站来运行 gem5，个人电脑资源可能不太够用。 主要参考雾佬的文章，以及官方提供的文档 Full System AM</description></item><item><title>为 QEMU softfloat 添加用于神经网络计算的浮点精度</title><link>https://zevorn.cn/posts/31/</link><pubDate>Sun, 20 Jul 2025 11:37:49 +0000</pubDate><guid>https://zevorn.cn/posts/31/</guid><description>QEMU 的 softfloat 源码位于 fpu/ 和 include/fpu/ 路径中，代码最初源自 Berkeley SoftFloat IEC/IEEE 浮点运算包的 2a 版本（SoftFloat 2a），后续经过 QEMU 项目贡献者修改。 目前我已经为 softfloat 添加了 tfloat32 和 float8e4m3 和 float8e5</description></item><item><title>浅析适用于 LLM 的 AI FPU 硬件的虚拟原型平台的浮点精度</title><link>https://zevorn.cn/posts/30/</link><pubDate>Wed, 16 Jul 2025 05:46:58 +0000</pubDate><guid>https://zevorn.cn/posts/30/</guid><description>本文首发于微信公众号: GTOC 业界经常使用量化的手段来提高大模型的训练和推理效率和节省成本，因此衍生了很多浮点精度和格式，比如 TF32、BF16、FP8、FP4 等。 在 AI 芯片的虚拟原型平台开发中，对于各类 FPU 硬件的 model 建模，一般采用软浮点的方式来模拟，常使用 C/C++ 来实现，在保证准确性的同时，性能也不会太差。 常见的模拟器</description></item><item><title>从接口的角度谈虚拟化</title><link>https://zevorn.cn/posts/29/</link><pubDate>Thu, 03 Jul 2025 04:27:52 +0000</pubDate><guid>https://zevorn.cn/posts/29/</guid><description>本文首发于微信公众号：GTOC 总结了「虚拟机系统与进程的通用平台」一书中，关于虚拟机导论的内容。 一、抽象层次。 管理计算机系统复杂性的经典手段，是通过一些定义明确的接口，把系统划分成不同的抽象层次。不同的抽象层次，分工明确，一般越靠近底层的，越关注硬件实现；越靠近上层的，越关注业务实现。 同时，抽象层次允许忽略或简化系统设计的底层实现细节，从而简化高层组</description></item><item><title>浅析 QEMU 的调试利器 tracing 工具</title><link>https://zevorn.cn/posts/28/</link><pubDate>Wed, 02 Jul 2025 15:50:07 +0000</pubDate><guid>https://zevorn.cn/posts/28/</guid><description>本文首发于微信公众号 GTOC 。 本文参考 QEMU 的 tracing 文档，相对路径为：docs/devel/tracing.rst QEMU 有一个很好用的调试工具 tracing，可以用来跟踪 QEMU 内部函数的执行情况，以及性能调优。 比如追踪客户机程序的访存情况，可以将 QEMU 的 memory region 的读写记录打印出来，只要注册了</description></item><item><title>使用 QEMU 体验 RISC-V 虚拟化</title><link>https://zevorn.cn/posts/27/</link><pubDate>Mon, 30 Jun 2025 09:34:05 +0000</pubDate><guid>https://zevorn.cn/posts/27/</guid><description>PS: 本文首发于格维开源社区微信公众号 GTOC 。 目前支持 RISCV 虚拟化扩展的硬件不是很多，对于想尝鲜的朋友，可以使用 QEMU 来模拟。下文给出详细的教程。 基本思路是采用 QEMU 软件模拟一个 RISCV SoC（virt Machine），在上面运行 Ubuntu 发行版，然后在 Ubuntu 上使用虚拟化运行 Linux 。 一、基本环</description></item><item><title>谈谈我对"好的提问"以及"通过 STFW 和 RTFM 独立解决问题"的看法</title><link>https://zevorn.cn/posts/26/</link><pubDate>Wed, 12 Mar 2025 13:20:54 +0000</pubDate><guid>https://zevorn.cn/posts/26/</guid><description>前言 大约是六年前，我在大学生电子综合赛（一个全国赛事）的校内培训上，遇到了培训阶段的第一个难题：如何在 win10 上安装 Keil 和 Proteus，前者是嵌入式开发常用的 IDE，后者提供了电路仿真和模拟 MCU 的功能。 当时实验室老师提供的 Keil 和 Proteus 的版本比较老，在代码补全和调试方面，体验欠佳。为了让自己编码体验好一些，我尝</description></item><item><title>RVV 向量扩展 v1.0 中文手册</title><link>https://zevorn.cn/posts/25/</link><pubDate>Thu, 16 Jan 2025 10:17:18 +0000</pubDate><guid>https://zevorn.cn/posts/25/</guid><description>导言 作为 RISC V 国际批准过程的一部分，此版本 1.0 被视为已冻结以供公众审查。 1.0 版被认为足够稳定，可以开始开发工具链以及功能模拟器和实现，包括在上游软件项目中，并且预计不会有不兼容的更改，除非在批准期间发现严重问题。一旦获得批准，该规范将获得 2.0 版。 该规范包括完整的当前冻结向量指令集。其他在开发过程中考虑过但未出现在本文档中的说明</description></item><item><title>2024 年总结：星光不负赶路人</title><link>https://zevorn.cn/posts/24/</link><pubDate>Mon, 30 Dec 2024 08:37:43 +0000</pubDate><guid>https://zevorn.cn/posts/24/</guid><description>今年我与开源世界的联系更多了，重新拾起 B 站 up 主的身份（ 绝对是泽文啦，即将 4000 粉丝），格维开源社区的活跃度再创新高，继续在基础软件领域深耕。 QEMU PATCH v2 0/2 riscv: Enhanced VSTART and VL checks for vector instructions (&lt;a href="https://lore.kernel"&gt;https://lore.kernel&lt;/a&gt;.</description></item><item><title>Rust In Qemu 的发展与现状</title><link>https://zevorn.cn/posts/23/</link><pubDate>Thu, 28 Nov 2024 15:27:59 +0000</pubDate><guid>https://zevorn.cn/posts/23/</guid><description>发展背景 在 2021 年 KVM 的论坛会议，进行了一场以 “QEMU+Rust BoF” 为主题的讨论，会议摘要可以通过 QEMU blog 2022 Rust 板块找到： QEMU+Rust BoF, KVM Forum 2021 1 。 在这个会议上，对 QEMU 引入 Rust 的相关话题，进行了充分讨论，可以总结为以下几个方面： 1. 混合使用</description></item><item><title>GDB 调试进程手动加载动态库的方法</title><link>https://zevorn.cn/posts/22/</link><pubDate>Thu, 28 Nov 2024 02:06:05 +0000</pubDate><guid>https://zevorn.cn/posts/22/</guid><description>如果进程通过 dlopen() 手动加载动态库，某些情况下不能被 GDB 识别调试符号，这个时候可以通过 GDB 的 add symbol file file address 命令来手动添加调试符号，address 是动态库在进程中的 text 段 entry 地址，考虑动态库只有加载到进程中，才能得知真正的内存地址，因此我们可以通过 GDB 的 info</description></item><item><title>使用 tmux 进行远程开发</title><link>https://zevorn.cn/posts/21/</link><pubDate>Wed, 27 Nov 2024 02:48:09 +0000</pubDate><guid>https://zevorn.cn/posts/21/</guid><description>简单教程 本文记录一个极简的 tmux 配置教程，来满足基本的开发需求。 首先打开 tmux 配置文件： 然后键入一下内容： 成品 tmux 配置 这里使用 &lt;a href="https://github.com/gpakosz/.tmux"&gt;https://github.com/gpakosz/.tmux&lt;/a&gt; 的配置，命令如下： 编辑 /.tmux.conf.local ，将 tmux conf copy to os clipboard 的值改</description></item><item><title>如何使用 git send-email 参与开源社区</title><link>https://zevorn.cn/posts/20/</link><pubDate>Mon, 25 Nov 2024 13:32:50 +0000</pubDate><guid>https://zevorn.cn/posts/20/</guid><description>本篇文章首发于 Nano Code 维基百科 1 可以选择使用 git send email 发送邮件补丁到社区，下面给出具体步骤。 安装 Git Email 1. ubuntu 默认不会安装完全版的 git ,因此需要我们在安装 git 以后（ ulan 默认安装了 git ），再安装 git email : 如果安装失败，比如遇到下面的问题： 可以手动添</description></item><item><title>基于 Rust 编写最小 JIT</title><link>https://zevorn.cn/posts/19/</link><pubDate>Tue, 08 Oct 2024 04:39:47 +0000</pubDate><guid>https://zevorn.cn/posts/19/</guid><description>即时编译（Just In Time Compilation，简称 JIT 编译）是一种动态编译技术，在程序运行期间将高级语言的源代码或者中间表示形式（如字节码）转换为机器代码。与传统的静态编译不同，JIT 编译器在程序运行时选择性地编译代码片段，并且可以根据运行时的具体情况优化这些代码。 下面使用 Rust 构建一个最小 JIT 案例，参考 rustyjit</description></item><item><title>在幽兰本上构建最小 KVM 虚拟机</title><link>https://zevorn.cn/posts/18/</link><pubDate>Sun, 06 Oct 2024 08:20:07 +0000</pubDate><guid>https://zevorn.cn/posts/18/</guid><description>构建最小虚拟机 前言 ARM 架构上的 KVM（Kernel based Virtual Machine）是一种基于 Linux 内核的虚拟化技术，它允许用户空间程序通过系统调用来直接控制硬件，从而实现对虚拟机的管理。KVM 在 x86 平台上已经非常成熟，而在 ARM 架构上，KVM 也得到了广泛的支持和发展。 PS: 本文首发在幽兰 Wiki 构建最小虚</description></item><item><title>Rust 基本知识</title><link>https://zevorn.cn/posts/17/</link><pubDate>Mon, 30 Sep 2024 05:34:32 +0000</pubDate><guid>https://zevorn.cn/posts/17/</guid><description>什么是所有权 所有权（ownership）是 Rust 用于管理内存的一组规则，通过在编译阶段检查程序内存使用的合法性，来避免运行时的内存安全问题。 所有权的优势： 1. 运行时零开销，不会影响性能； 个人认为的缺点： 1. 开发者的学习成本稍高，并随着程序的复杂度上升，需要付出更多的心智成本。 所有权原则 所有权的基本规则： 1. Rust 中每一个值都被</description></item><item><title>QEMU 开源社区贡献记录</title><link>https://zevorn.cn/posts/16/</link><pubDate>Sun, 29 Sep 2024 15:30:57 +0000</pubDate><guid>https://zevorn.cn/posts/16/</guid><description>前言 这篇 blog 记录我的 QEMU 贡献情况，你可以通过这里 查询所有邮件 10 。 下面按照日期倒序排版。 讨论如何更方便的打印调试 IR 变量 RFC PATCH v1 0/1 Add helper print functions for printing intermediate results of complex instructions i</description></item><item><title>记录参加清华大学开源操作系统训练营的体验</title><link>https://zevorn.cn/posts/15/</link><pubDate>Sun, 29 Sep 2024 14:43:14 +0000</pubDate><guid>https://zevorn.cn/posts/15/</guid><description>前言 从 2021 年开始，我一直从事体系架构模拟和动态二进制翻译工作，由于工作需要，我经常要调试各种操作系统，比如 Linux、VxWork、FreeRTOS 、RT Thread、SylixOS、AcoreOS、ReWorks 等等，这让我对操作系统的原理和业务应用场景有了一个宏观的认识。随着嵌入式系统的复杂化和规模化（多系统的同步与交互），对于数字嵌入</description></item><item><title>Intel VMX 硬件虚拟化研究实录</title><link>https://zevorn.cn/posts/14/</link><pubDate>Sat, 28 Sep 2024 15:53:07 +0000</pubDate><guid>https://zevorn.cn/posts/14/</guid><description>前言 本篇文章，主要记录对 Intel x86 架构 CPU 的 VMX 硬件虚拟化技术的学习和研究情况。 参考资料清单如下： 深度探索 Linux 系统虚拟化 1 QEMU/KVM源码解析与应用 2 1 : &lt;a href="https://read.douban.com/ebook/162815582/"&gt;https://read.douban.com/ebook/162815582/&lt;/a&gt; 2 : &lt;a href="https://book.douban.com/subjec"&gt;https://book.douban.com/subjec&lt;/a&gt;</description></item><item><title>LLVM后端优化Pass：别名分析</title><link>https://zevorn.cn/posts/13/</link><pubDate>Mon, 02 Sep 2024 02:02:29 +0000</pubDate><guid>https://zevorn.cn/posts/13/</guid><description>AliasAnalysis.html 中对别名分析进行了基本的介绍： Alias Analysis (又名 Pointer Analysis)，用于确定两个指针是否指向内存中的同一对象，这里有很多不同的别名分析算法，可分为：流敏感 vs 流非敏感、上下文敏感 vs 上下文非敏感、域敏感 vs 域非敏感、基于一致性的 vs 基于子集的。 传统的别名分析用于给出</description></item><item><title>分析 QEMU 的 GD32VF103 启动流程</title><link>https://zevorn.cn/posts/12/</link><pubDate>Tue, 30 Jul 2024 14:12:39 +0000</pubDate><guid>https://zevorn.cn/posts/12/</guid><description>QEMU 启动以后，并没有立刻执行客户机程序的第一条指令，而是先执行 Machine 在初始化阶段设置的 reset vector 程序段，然后再跳转到客户机程序的第一条指令。 因此第一条指令的PC地址为 memmap GD32VF103 MFOL .base + 0x1000，通过以上代码得知，memmap GD32VF103 MFOL .base 为0，</description></item><item><title>记录移植 PLCT 实验室的 qemu-nuclei_gd32vf103 到 QEMU v9.0.2 的一些经验</title><link>https://zevorn.cn/posts/11/</link><pubDate>Sun, 28 Jul 2024 11:18:58 +0000</pubDate><guid>https://zevorn.cn/posts/11/</guid><description>当前成果： 下面记录关键 patch 解决的问题： patch 修复 dts 编译警告问题 这个 patch 主要解决了编译过程中遇到的 dts 编译警告，后续主线应该会修复该问题。 patch 添加 nuclei n205 核心 初始化 N205 核心的时候，用的 DEFINE VENDOR CPU()，可扩展厂商自定义指令集。 patch 添加 gd32</description></item><item><title>从零裁剪 QEMU 源代码</title><link>https://zevorn.cn/posts/10/</link><pubDate>Mon, 17 Jun 2024 16:35:35 +0000</pubDate><guid>https://zevorn.cn/posts/10/</guid><description>为了方便学习 QEMU 的 tcg 模块，尝试从零裁剪 QEMU 源代码，仅保留和 TCG 相关的模块。通过裁剪源代码，可以深入了解 QEMU 的代码组织结构，为学习 QEMU 打造一个坚实的基础。 base QEMU version: 8.2.0 QEMU 构建系统 QEMU 使用 meson + ninja 构建（make 也支持），脚本语言风格类似 p</description></item><item><title>浅析 x86 架构的微操作(uops)</title><link>https://zevorn.cn/posts/9/</link><pubDate>Wed, 05 Jun 2024 14:57:58 +0000</pubDate><guid>https://zevorn.cn/posts/9/</guid><description>uops 词义解析 μops 代指 uop ，全称是 Micro operation ，中文直译为“微操作”，micro 可以希腊字母 μ 代替，然后 operation 可以缩写为 op ，连一起即 μop。为方便书写，使用 u 代替 μ 。用 uops 来统称所有的 uop ，即 Micro operations （为了方便，下文统一称为 uops ）。</description></item><item><title>Intel® VTune™ Profiler 分析 C++ 程序的常见性能瓶颈( Windows 平台)</title><link>https://zevorn.cn/posts/8/</link><pubDate>Sat, 01 Jun 2024 16:19:33 +0000</pubDate><guid>https://zevorn.cn/posts/8/</guid><description>用例和先决条件 本篇文章将展示，在 Windows 平台如何通过 Intel® VTune™ Profiler （下文简称 VTune）来识别和分析串行/并行应用程序中的性能瓶颈。使用 VTune 自带的 matrix 示例矩阵乘法应用程序作为分析和优化对象（备注：由于采用 Github 作为文章图床，部分图片加载速度稍慢）。 本文章要求安装多个英特尔软件工</description></item><item><title>AsmJit 上手指南</title><link>https://zevorn.cn/posts/7/</link><pubDate>Mon, 27 May 2024 14:18:27 +0000</pubDate><guid>https://zevorn.cn/posts/7/</guid><description>一、基本介绍 AsmJit 是一个完整的 JIT ( just In Time, 运行时刻)的针对 C++ 语言的汇编器，可以生成兼容 x86 / x64 和 Aarch64 架构的原生代码，不仅支持整个x86/x64 的指令集（包括传统的 MMX 和最新的向量指令集），而且提供了一套可以在编译时刻进行语义检查的 API 。AsmJit 的使用也没有任何的限</description></item><item><title>在 x86 平台上模拟 Aarch64 的 FCMP 指令</title><link>https://zevorn.cn/posts/6/</link><pubDate>Thu, 23 May 2024 15:10:50 +0000</pubDate><guid>https://zevorn.cn/posts/6/</guid><description>体系架构模拟最高效的实现，是尽量做到1：1模拟指令，即一条源目标架构指令对应到一条目标架构指令上。对于解释执行的实现，也要尽可能贴近这个原则，尽量以最少的目标架构指令，来模拟源架构指令。 一、思路介绍 aarch64的FCMP指令定义如下： 大体可以分为两种：单精度浮点比较，双精度浮点比较，每一种又分为有序比较和无序比较，所以可以总结为四种情况。 恰好这四种</description></item><item><title>LLVM3.0 JIT 处理代码块重定向阶段对外部符号解析的 Bug</title><link>https://zevorn.cn/posts/4/</link><pubDate>Wed, 22 May 2024 09:29:59 +0000</pubDate><guid>https://zevorn.cn/posts/4/</guid><description>LLVM3.0 的 JIT 在 MinGW64 / MSCV64 上，进行代码块重定向阶段，处理超过32位地址范围(前后跳转2GB地址空间)的外部符号地址时，会将其强转为32位： 这会导致生成的指令，在执行时崩溃，一般表现为段错误。 解决办法： PS：这个问题似乎在 LLVM 3.1 上面也存在。</description></item><item><title>IDA Pro“创建联合体”教程</title><link>https://zevorn.cn/posts/3/</link><pubDate>Tue, 21 May 2024 06:59:41 +0000</pubDate><guid>https://zevorn.cn/posts/3/</guid><description>IDA 认为，联合体是一种特殊的结构体，因此需要在 IDA 的结构体页面创建联合体: 第一步，进入 Structures 页面： 第二步，按下【Insert】，勾选 union ： 一个空元素的联合体如下： 第三步，在 ends 位置按下【D】可以添加一个新的成员，如图示例添加了两个成员： 可以看到，两个成员的地址偏移都是从0开始的。 PS：如果想添加结构体</description></item><item><title>三步轻松“定制”GDB</title><link>https://zevorn.cn/posts/1/</link><pubDate>Sun, 19 May 2024 16:20:36 +0000</pubDate><guid>https://zevorn.cn/posts/1/</guid><description>GDB 是 GNU Debugger 的简称，属于 GNU 项目的一部分，是一款功能强大且广泛使用的命令行调试工具，专为 Unix 和类 Unix 操作系统设计，尤其在 Linux 环境下是程序员首选的调试工具之一。GDB 主要用于调试 C、C++、Pascal、FORTRAN、Ada、Objective C、Free Pascal、Go 等多种编程语言编写</description></item></channel></rss>