手順を実行する前処理プログラムでのLinuxの役割、コンパイル、アセンブル、リンク、

hello.cのファイルを作成し、手順に従ってください。

プリコンパイル<hello.i生成されたファイル>

手順:gccを-Eのhello.c -o hello.i

1.すべての#defineを削除し、すべてのマクロ定義を展開します。 

2.例えば、すべての事前コンパイルされた命令のプロセス:#、#場合のelifの、他の#、#endifの。 

3.プリコンパイラプロセスの#includeコマンドファイルは、位置を挿入プリコンパイルされた命令に含まれることになります。 

4.デバッグを容易にするために、行番号情報のファイル名の情報を追加します。 

5.すべてのコメントを削除します:// / ** /。 

6.手続きの準備のように、私たちは多くの場合、コンパイラの状態を設定するために#pragma指令を使用するか、いくつかの特定のアクションを実行するようにコンパイラに指示し、すべての#pragmaコンパイラディレクティブを保管してください。 

.Iファイルが生成されます。

(1)注記を含む(2)マクロ置換(3)(4)条件付きコンパイルファイルヘッダーを展開する
<hello.s生成されたファイル> - 2、コンパイル(>アセンブリ言語、高級言語)

手順:gccの - Sのhello.c -o hello.s   

主な機能:1.スキャン(字句解析)、2つの構文解析、意味解析3、4ソースコードの最適化(中間言語生成)、5コード生成、コード最適化目標.....

第三に、アセンブラ(アセンブリ言語 - >バイナリファイル)<ファイルがhello.oを生成>

手順:gccの-cのhello.c -o hello.o

主な機能:アセンブラは、アセンブリコード命令に変換され、オブジェクトファイルを生成するために実行されてもよいです。

第四に、リンク(EXEファイルを生成します)

手順:gccのhello.o -oハロー

主な役割:リンクプロセスは、次のとおり割り当てアドレスと空間、シンボル分解能及び再配置を。

そして、アドレス空間:関数、変数のためのシステムおよびスペースによって割り当てられたアドレス。

シンボル解決:それは前記バインディングアドレス、静的および動的リンクサブリンクすることができ、

移転:ドキュメントが2を持っていると仮定:A、B. 、前者はアドレス0にリンクされていないMOV Bに対処する必要性の機能が移転を完了するために、時に宛先変更AとBのリンク、設定されています

6.3.5オペレーティング

手順:./こんにちは

主な機能:プログラムを実行します

おすすめ

転載: www.cnblogs.com/single-dont/p/11315980.html