Madeira的FEX-Emu一致性测试:1283条指令的黄金值测试套件
Madeira的FEX-Emu一致性测试1283条指令的黄金值测试套件【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/MadeiraMadeira 让 iPhone 免越狱运行 x86-64 Windows 游戏核心靠 FEX-Emu 把 x86 指令实时翻译成 ARM64。翻译器一旦译错指令游戏就会莫名其妙崩溃——于是项目内置了一套FEX-Emu 一致性测试tests/x64/ 下的黄金值测试套件用 1283 条指令的黄金值golden value逐位校验翻译器输出任何偏差都逃不过日志里的一行VERDICT。为什么需要黄金值测试上游 CI 覆盖不到的地方一致性测试conformance test回答的问题很朴素翻译后的 x86 指令寄存器结果和真机是否逐位一致FEX-Emu 官方自带 2239 条手写 x86-64 指令测试每条测试的汇编头部都带一个CONFIG配置块写明执行完后各寄存器应等于的精确值——这就是黄金值。这些值由深谙 x86 语义陷阱的开发者标注覆盖自研测试难以企及的边界场景。问题在于FEX 的官方测试运行器是Linux 工具依赖 ELF 加载和 Linux 系统调用在 Madeira 的目标环境iOS 自研 FEX 分支 ARM64EC/xtajit64 路径 jitless 模式上完全无法运行。而恰恰是上游 CI 从未跑过的配置组合才是分歧最容易藏身的地方。1283 条黄金值测试是怎么生成的gen_asmconf.py 是整套测试的生成器它做四件事步骤做法目的1️⃣ 筛选从 FEX 的 2239 条测试中筛出无特性门槛HostFeatures、带寄存器期望值、可解析的测试得到1283 条可用测试ASMCONF_NTESTS 12832️⃣ 改名每条测试的裸标签加唯一前缀避免 1283 段汇编合并后标签互相打架3️⃣ 改写hlt测试以hlt结束被改写成跳入采集尾声尾声把 16 个 GPRRAX~R15 16 个 XMM 寄存器存入采集缓冲区4️⃣ 一测一文件每条测试单独生成一个.asm目标文件NASM 宏是全局的合并编译会让测试 900 的宏悄悄改写测试 200 的语义生成的期望值表 asmconf_tests.h 约 8400 行形如{ movzx.asm, 2, 0, 0x00000000000000D1ULL }, { pslldq.asm, 16, 0, 0xADBEEFBAD0DAD100ULL },含义是测试movzx.asm执行后2 号寄存器RCX必须精确等于0xD1。测试体则被重新托管进一个 Windows PE 可执行文件在真实出货配置下运行。测试驱动器的三重自校准宁可报错不可谎报驱动程序 asmconf-x64.c 的注释里有一句狠话——this port has been burned repeatedly by probes that could not fire and therefore always passed这个移植曾被永远通过的假探针坑过多次。因此驱动器设计了三层防谎报机制1. 关键内存区必须就位否则整轮作废867 条测试依赖固定地址0xe0000000的暂存区含测试栈共 129 MB 保留。驱动器启动即检查该地址是否成功保留失败就直接输出VERDICT: INVALID RUN — not reporting passes并退出——不保留假通过的可能见 asmconf-x64.c。2. 先报名再执行每条测试运行前日志先刷入它的名字再落盘。万一某条测试把进程打死日志末尾留下的是它的名字而不是一个查无对证的空洞。3. 可续跑扫描 预期计数核对有些测试会重定向 RSP 后触发无法捕获的故障进程直接死亡。驱动器在运行前把下一条测试编号写入C:\asmconf_next.txt下次启动自动从断点续扫并把肇事者标记为 fatal。最终汇总打印预期测试总数跑短了会被明确警告result NOT conclusive——截断的运行伪装不了干净的结果。如何阅读测试报告一行 VERDICT 定音测试写入C:\asmconf.log格式对人类非常友好[asmconf] start revml541 tests1283 expected-values... [asmconf] 42/1283 movzx.asm [asmconf] FAIL pslldq.asm [asmconf] XMM0[0] expected 0xADBEEFBAD0DAD100 got 0x0000000000000000 [asmconf] DONE ran1283/1283 pass1281 fail2 crash0 revml541 [asmconf] VERDICT: DIVERGENCE FOUND — see FAIL/CRASH lines above行进度与当前测试名FAIL行精确到寄存器、lane给出期望值 vs 实际值定位分歧一目了然CRASH行翻译出的指令直接触发异常VERDICT行no divergence across the suite表示 1283 条指令全部与黄金值一致翻译器通过一致性验证。测试套件文件速查文件作用gen_asmconf.py从 FEX 黄金值测试生成 1283 条 PE 测试与期望值表asmconf-x64.c自校准测试驱动器在出货配置下执行并判定asmconf_tests.h自动生成的测试表 黄金值表8400 行勿手改FEX黄金值测试的原始来源FEX 子模块docs/BUILDING.md完整构建流程小结这套 FEX-Emu 一致性测试的精髓在于工程纪律黄金值来自上游 2239 条人工标注的指令测试却只在自己的出货配置下才有意义生成器、驱动器、期望值表全部自动产出截断、崩溃、假通过都被机制性地排除在外。对想理解如何在 iOS 上验证 x86 翻译器正确性的读者来说tests/x64/ 这三个文件就是一份完整的实操范本。【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

建筑物损伤检测数据集 | 建筑物损伤 裂缝检测 渗漏识别 脱落检测 9143期

建筑物损伤检测数据集 | 建筑物损伤 裂缝检测 渗漏识别 脱落检测 9143期

建筑物损伤检测数据集 | 建筑物损伤 裂缝检测 渗漏识别 脱落检测 9143期 数据集概述 本数据集专注于建筑物结构表观损伤的视觉检测与分类,服务于建筑安全巡检、老旧小区改造及市政工程健康监测。数据涵盖五类典型建筑损伤,适配无人机航拍巡检、外立面隐…

2026/10/4 8:56:59 阅读更多 →
工行和招行FDE实践:WorkBuddy 金融智能体平台 × 银行合作 Skills 深度梳理

工行和招行FDE实践:WorkBuddy 金融智能体平台 × 银行合作 Skills 深度梳理

核心定义:Skill 是可独立调用、标准化封装的原子业务能力;专家 Skill 业务角色人设;专家团 多个专家 / 多个 Skill 编排成完整业务流水线。WorkBuddy 金融版面向银行场景,基于 MCP 协议连接外部数据源连接器,把信贷…

2026/10/4 8:56:59 阅读更多 →
30 seconds of code:使用递归扁平化(Flatten)与还原(Unflatten)JavaScript 嵌套对象

30 seconds of code:使用递归扁平化(Flatten)与还原(Unflatten)JavaScript 嵌套对象

教程文档 【免费下载链接】30-seconds-of-code Coding articles to level up your development skills 项目地址: https://gitcode.com/gh_mirrors/30/30-seconds-of-code 点击查看 免费下载 对象是 JavaScript 中最常用的数据结构之一,但在不同场景下&…

2026/10/4 8:55:59 阅读更多 →

最新新闻

OpenShell使用指南:把Windows 10/11开始菜单改回经典高效模式

OpenShell使用指南:把Windows 10/11开始菜单改回经典高效模式

凡是折腾过 Windows 10、Windows 11 系统界面的人,应该都对 OpenShell 这个名字不陌生。它前身叫 Classic Shell,是一套开源的老式开始菜单恢复工具,后来项目改名 Open-Shell,继续在 Windows 10/11 上把开始菜单“砍掉重造”。两年…

2026/10/4 10:08:57 阅读更多 →
玩转 Claude Code 的终极秘籍:把 settings 改到 TaoToken 接入 GLM-4.7 编程

玩转 Claude Code 的终极秘籍:把 settings 改到 TaoToken 接入 GLM-4.7 编程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 10:08:57 阅读更多 →
QuickBlue:企业级AI应用交付的物理基座

QuickBlue:企业级AI应用交付的物理基座

1. QuickBlue 不是另一个“AI 中间件”,它是企业级 AI 应用交付的物理基座QuickBlue 这个名字刚出现时,我第一反应是——又一个带“Blue”后缀的开源项目?查了三天源码、翻了七版 Release Notes、搭了四套测试环境,才真正明白它为…

2026/10/4 10:08:57 阅读更多 →
Cursor AI 设置 Qwen 模型:通过 TaoToken 统一 Key 接入的完整配置指南

Cursor AI 设置 Qwen 模型:通过 TaoToken 统一 Key 接入的完整配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 10:08:57 阅读更多 →
Elixir 模块内部自引用:`__MODULE__` 与别名模式的正确用法

Elixir 模块内部自引用:`__MODULE__` 与别名模式的正确用法

文档教程知识库 【免费下载链接】til :memo: Today I Learned 项目地址: https://gitcode.com/gh_mirrors/ti/til 点击查看 免费下载 本篇指南讲解 Elixir 中 __MODULE__ 特殊字面量的工作原理与典型用法:它让模块在自身内部安全、可读地引用自己&#…

2026/10/4 10:08:57 阅读更多 →
当 AI agent 群集出现时,银行能跟上吗?

当 AI agent 群集出现时,银行能跟上吗?

作者:来自 Elastic Karen Mcdermott 随着自主 AI 重塑网络风险,金融机构需要具备可视性和上下文,才能检测异常行为并以机器速度做出响应。 AI agent 正在改变的不只是金融服务公司的运营方式,也在改变网络风险的速度和规模。 近期…

2026/10/4 10:07:56 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →