# 反编译、重新实现与重编译有什么区别

Author: DecompHub
Updated: 2026-10-10
Language: zh-Hans
Canonical: https://decomphub.com/zh-cn/guides/decompilation-reimplementation-recompilation

按照想获得的结果选择项目。重建源码、兼容替代品和原生执行程序都可能有价值，但回答的是不同问题。同一游戏名称并不会让它们的进度指标可以互换。

## 匹配反编译

目标是让重建源码编译成与指定原始构建相同的机器码。编译器版本、参数和目标修订版都重要。[decomp.me FAQ](https://www.decomp.me/faq)解释了函数级比较。成功的 scratch 只证明那次比较的结果，不是整个程序的完成分数。

若想研究原程序结构或贡献匹配代码，可以选择这条路线。先确认报告统计字节、函数、选定模块还是其他范围。

## 重新实现与兼容性

重新实现复现行为或接口，不要求相同可执行文件。更适合用功能和测试评价。例如 [ScummVM](https://docs.scummvm.org/en/latest/help/faq.html)替换受支持游戏的执行程序，同时使用游戏数据。兼容性需要按目标和版本确认。

需要实用替代品或改进支持系统上的行为时，这类项目更合适。不要把兼容性声明换算成二进制匹配率。

## 静态重编译

静态重编译在运行前，将已有程序的指令转换到另一环境。[N64Recomp](https://github.com/N64Recomp/N64Recomp)描述了 N64 代码与原生程序的工作流；完整的具体游戏移植还需要围绕转换代码进行整合。

它可能在手工源码重建完成前实现原生运行，但不会自动解释原始源码设计。通用工具也不保证任何游戏无需额外工作就能运行，仍要阅读目标项目的要求。

## 反汇编与移植

反汇编把机器指令表示为汇编，不必恢复高层 C 或 C++ 源码，也能支持分析。移植是让程序适应另一平台，可以建立在反编译、重新实现或重编译之上。标签可能重叠，因为它们描述不同阶段。

以[目录](https://app.decomphub.com/zh-cn/explore)中的工作类型为起点，再核实上游目标。[进度指南](/zh-cn/guides/understanding-decompilation-progress)说明如何在保留这些差异的前提下比较测量。
