1

UNIX と Windows は、開発環境へのアプローチが一見異なるように見えますが、コンパイラーに関しては共通のアーキテクチャー・バックエンドを共有しています (その他多くのことについては、以降のページで説明します)。実行可能ファイルの生成は、基本的に、両方のシステムで 1 つのプログラム (コンパイラ) によってエンドツーエンドで処理されます。どちらのシステムにも、基本的に上記の 5 つの手順すべての接着剤として機能する単一のフロントエンド実行可能ファイルがあります。

上: http://www.savs.hcc.edu.tw/~chuavv/articles/RevEng/ch02.html#the_compiler

これは何を意味するのでしょうか?あるマシンのコンパイラーがプログラムをコンパイルし (前処理 -> 解析 -> 翻訳 -> アセンブリ -> リンク)、別のマシンでは、コンパイラーも同じタスクを逆に実行しますか? 「実行可能ファイルの生成は、本質的に両方のシステムでエンドツーエンドで処理されます...基本的にすべての5つのステップの接着剤として機能する実行可能ファイル」が何を意味するのか正確にはわかりません。

4

2 に答える 2

3

これは基本的に英語の読解力であり、プログラミングではありません。

実行可能ファイルの生成は、基本的に両方のシステムでエンドツーエンドで処理されます。

これは、最初から最後まで、平文のソースから最終的な実行可能ファイルまで、1 つのプログラムでコンパイラがすべての作業を行うことを意味します。

基本的にすべての 5 ステップの接着剤として機能する実行可能ファイル。

GCC か MSVC かに関係なく、ドライバーがあります。これは、基礎となるプリプロセッサ、パーサー、アセンブラー、およびリンカー (GCC の場合は CPP、cc1、as および ld) 実行可能ファイルを呼び出す一種の「マネージャー」実行可能ファイルです。それは単なる傘であり、そのサブプログラムのラッパーです。

ただし、基本的なアーキテクチャを共有する Win と Unix には同意しません。それらに共通しているのは、実際には別の方法で行うことができない非常に基本的なことだけです。たとえば、どちらもカーネルを持っており、Neumann アーキテクチャのコンピュータで実行できるなどです。著者が、車のエンジンとハンドミルは、どちらも機械装置であるという理由だけで、共通のアーキテクチャを共有していると述べたかのように。

于 2012-10-27T22:19:37.237 に答える
2

これは、Windows と Linux の両方で、コードを実行可能ファイルにコンパイルするために通常 1 つのプログラムのみを使用することを意味します。前処理用、翻訳用、リンク用に別のプログラムを実行する必要はありません。その 1 つの実行可能ファイルが、プロセス全体を「エンド ツー エンド」で実行します。

于 2012-10-27T22:19:17.607 に答える