1

これで情報を探すのに苦労するとは思わなかったが…

プロセスは何ですか?私が学んだことは、私が見つけていることと矛盾しています。

私が思ったこと:

HLL -> Compiler -> Assembly Language -> Assembler -> Machine Code

それが何であるか:

HLL -> Compiler -> Machine Code
  1. 高級言語に依存しているだけですか?
  2. 後者が本当なら、どうやって?(それが大きな答えである場合、それについて心配する必要はありません。)
4

3 に答える 3

2

実際、アセンブリ言語とマシン コードはまったく同じものです。つまり、アセンブリ言語の各コマンドは、マシン コードでは 1 つの変換しかなく、逆も同様です (PS を確認してください)。

唯一の本当の違いは「人間の可読性」です

したがって、両方のパスが正しく、両方とも同じ意味を持ちます

PS。もちろん、マシン コードからアセンブリ コードに変換すると、このメタ データは実際のコードではないため、すべての変数名とその他のメタ データが失われますが、この「新しいコード」をマシン コードに変換することはできます。初期バイナリ実行可能ファイルを提供する

于 2013-10-21T23:00:49.447 に答える
1

どちらも、「コンパイラ」が行うことの比較的正確で適切な定義です。厳密に言えば、確かに、コンパイラは通常、アセンブラに渡される機械語コードを吐き出すだけですが、同時に、gcc がそのアセンブリをアセンブラを介してバイナリを生成します。

これは主に、定義に関するセマンティクスの問題にすぎません。実際に懸念している概念はありますか?それとも、受け入れられている用語について疑問に思っているだけですか?

于 2013-10-21T22:51:51.717 に答える