アセンブリ言語が機械語の読み取り可能な方法にすぎない場合、なぜ HLL が最初にアセンブリに変換され、次に機械語に変換されるのか。HLL を直接機械語に変換するべきではありませんか?
2 に答える
0
小さな個別のステージでコンパイルする方が、複数のパスを組み合わせるよりも簡単でクリーンです。アセンブラーはマシン コードを抽象化するだけでなく、ラベルとリテラルも解決します。
これは完全に独立したパスであるため、命令の選択とレジスタのスケジューリングと一緒にコンパイラのバックエンドで実行することは望ましくありません。もちろん、多くのコンパイラ バックエンドには、テキスト ストリームにシリアル化して別のアセンブラに渡す代わりに、独自のアセンブラ パス (つまり、すべての JIT コンパイラ) が含まれますが、それでも専用のパスであり、まったく意味がありません。他のコード生成パスと融合します。
于 2012-06-27T08:51:43.170 に答える
0
どのプラットフォームについて話しているのですか?
.NET または Java アセンブリには、名前以外にアセンブラー言語との共通点はありません。
アセンブラー言語は機械語の単なる読みやすい方法と考えられるかもしれませんが、.NET アセンブリ (C# のような高レベルの .NET 言語をコンパイルすることによって作成される) は、CIL (共通中間言語) の別のプログラムにすぎません。人間が読み取ったり変更したりできるようには設計されていませんが、レベルの機械に依存しない言語です。
于 2012-06-27T07:16:52.613 に答える