目次
初めに
こんにちは、情報系大学生のゆうき(@engieerblog_Yu)です。
今回は、コンパイラ方式で用いられる、コンパイラ・リンカ・ローダの役割についてまとめていきたいと思います!
今回の内容は、基本・応用情報技術者試験などに含まれていて、情報系の学部でも学ぶ内容となっています。
プログラミング初心者の方も、コンパイルを行う言語を使っている方は知っておきべき内容です。
ソースコードが実行される流れ
コンパイラ方式で、ソースコードが実行される流れは以下のようになります。
処理の流れは、以下のようになります。
1.コンパイラが、ソースコードを機械語の目的プログラムに変換する
2.リンカが、目的プログラムとライブラリをくっつけて実行可能ファイルを作成する
3.ローダが実行可能ファイルを主記憶に読み込む
各ステップを具体的に説明していきます。
コンパイラがソースコードを機械語の目的プログラムに変換する
コンパイラの仕事は、人間と機械のどちらも分かる様式のソースコードを、より機械が読みやすいファイルにすることです。
コンパイラは、言語プロセッサの一つとなっていて、言語プロセッサについては以下の記事で解説しています。
ソースコードを機械が読みやすいファイル(プログラムファイル)に変換するためには、以下の5つの工程が必要です。
字句解析
構文解析
意味解析
最適化
コード生成
それぞれについて解説していきます。
字句解析
字句解析では、ソースコードに書かれているコードを字句単位で分解することを行います。
例えば、 x + y = 10;という式があった場合、「x」「+」「y」「=」「10」にそれぞれ分解します。
構文解析
構文解析では、分解した字句から、構文木と呼ばれるデータ構造を生成します。
構文木とは、プログラムのソースコードを構造化データとして表現するためのツリー構造の一種です。構文木は、プログラムの文法規則を適用して作成され、各ノードが命令、式、変数などの要素を表します。
構文木を使用すると、プログラム内の構造を簡単に理解できたり、プログラムの構造を修正するための変更を効率的に行うことができます。
意味解析
変数の型などが、プログラミング言語の仕様に合っているかを確認します。
構文木をもとに、一時的なプログラムコードを作成します。
最適化
処理効率の良いプログラムコードにするために、プログラムの再構築を行います。
コード生成
機械のプログラムファイルである、目的プログラムを生成します。
リンカが目的プログラムとライブラリを結合して実行可能ファイルを作成する
コンパイラが作った目的プログラムだけでは、実行に必要な機能は揃っていません。
目的プログラムとライブラリを結合して、実行可能ファイルにすることで初めて、実行することが可能となります。
目的プログラムとライブラリを結合する役割を果たすものをリンカといい、結合することをリンクといいます。
リンカによって、目的プログラムとライブラリが結合され実行可能ファイルができる
ローダが実行可能ファイルを主記憶に読み込む
最後に、実行可能ファイルをローダが主記憶に読み込むことで、実行待ち状態に入ります。
実行可能ファイルを主記憶装置に読み込ませる作業を、ロードといいます。
実行可能ファイルをローダが主記憶に読み込むことで、実行待ち状態に入って、順に実行されていく
まとめ
コンパイラによって、ソースコードが機械語のプログラムファイルに変換される
リンカによって、目的プログラムとライブラリが結合され実行可能ファイルができる
実行可能ファイルをローダが主記憶に読み込むことで、実行待ち状態に入って、順に実行されていく
今回は、コンパイラ方式で用いられる、コンパイラ・リンカ・ローダの役割についてまとめました。
他にもIT関連の記事を投稿しています。
関連記事
情報系の大学生の方、情報系に興味がある方、情報系に就職を考えている方は情報技術者試験をとることをおすすめします。
ざっくり以下のようなイメージです。
基本情報技術者→情報系の学部1・2年で学ぶ内容
応用情報技術者→情報系の学部3・4年で学ぶ内容
特に応用情報技術者試験に合格すると、情報系の就職にかなり有利になったり、会社で優遇されたりします。
私が情報技術者試験の学習に使った、おすすめ書籍は以下になります。
めちゃくちゃわかりやすいので、情報系でない方でもすらすら読み進めることができると思います。
おすすめ書籍
最後まで読んでいただきありがとうございました。
noteもやっているので、ぜひフォローよろしくお願いします!
コメント