逆コンパイル・再実装・再コンパイルの違い

執筆: DecompHub · 更新日 · 日本語

プロジェクトは目指す成果から選びましょう。再構成ソース、互換ソフトウェア、ネイティブ実行ファイルはそれぞれ役立ちますが、同じ問いへの答えではありません。同じゲームでも進捗の指標は交換できません。

マッチング逆コンパイル

特定の元ビルドと同じ機械語を生成するソースを目指します。コンパイラ、設定、対象リビジョンが重要です。decomp.meのFAQは関数比較を説明しています。一つのscratchの成功は、その比較についての根拠であり、プログラム全体の完成率ではありません。

元の構造を学びたい、または一致するコードを書きたい場合に向きます。レポートがバイト、関数、選択モジュールのどれを数えるか確認しましょう。

再実装と互換性

実行ファイルの一致を要求せず、動作やインターフェースを再現します。機能やテストで評価するのが適切です。ScummVMは対応ゲームの実行ファイルを置き換え、ゲームデータを利用します。互換性は対象と版ごとに確認が必要です。

利用できる代替ソフトウェアや動作改善を求める場合に向いています。互換性の説明を機械語一致率に変換してはいけません。

静的再コンパイル

既存の命令を実行前に別環境向けへ変換します。N64RecompはN64コードとネイティブ実行ファイルのワークフローを説明しています。完全な移植には、変換したコードの周囲を統合する作業も必要です。

手作業のソース再構成が完成する前に動かせる場合がありますが、元のソース設計を自動的に解明するものではありません。汎用ツールがどのゲームにもそのまま対応するとは限らないため、対象プロジェクトの要件を読みます。

逆アセンブルと移植

逆アセンブルは機械命令をアセンブリで表します。CやC++を復元せずとも解析に役立ちます。移植は別プラットフォームへの適応で、逆コンパイル、再実装、再コンパイルを土台にすることがあります。異なる段階を示すため、タグは重複し得ます。

カタログの作業種別を入口に、公式の目的を確かめましょう。進捗ガイドでは違いを保ったまま数値を比較できます。