応用情報技術者 2015年 春期 午前2 問19
問題文
あるコンピュータ上で、異なる命令形式のコンピュータで実行できる目的プログラムを生成する言語処理プログラムはどれか。
選択肢
ア:エミュレータ
イ:クロスコンパイラ(正解)
ウ:最適化コンパイラ
エ:プログラムジェネレータ
異なる命令形式のコンピュータで実行可能な目的プログラムを生成する言語処理プログラム【午前2 解説】
要点まとめ
- 結論:異なる命令形式のコンピュータ向けに目的プログラムを生成するのはクロスコンパイラです。
- 根拠:クロスコンパイラは開発環境と実行環境が異なる場合に、ターゲット機の命令形式に合わせてコードを生成します。
- 差がつくポイント:エミュレータは実行環境の模倣、最適化コンパイラは効率化、プログラムジェネレータはコード自動生成であり、命令形式の違いを扱うのはクロスコンパイラだけです。
正解の理由
クロスコンパイラは、開発しているコンピュータ(ホスト)とは異なる命令セットを持つコンピュータ(ターゲット)向けに目的プログラムを生成します。これにより、異なる命令形式のコンピュータ上でプログラムを実行可能にします。問題文の「異なる命令形式のコンピュータで実行できる目的プログラムを生成する」という条件に最も合致するのがクロスコンパイラです。
よくある誤解
エミュレータは異なる環境を模倣してプログラムを動かすもので、目的プログラムを生成するわけではありません。最適化コンパイラは性能向上が目的で、命令形式の違いを扱う機能はありません。
解法ステップ
- 問題文の「異なる命令形式のコンピュータで実行できる目的プログラムを生成する」部分に注目する。
- 各選択肢の役割を整理する(エミュレータ、クロスコンパイラ、最適化コンパイラ、プログラムジェネレータ)。
- 命令形式の違いを扱うのは「クロスコンパイラ」であることを確認する。
- 正解をイと判断する。
選択肢別の誤答解説
- ア: エミュレータ
実行環境を模倣してプログラムを動かすが、目的プログラムを生成しない。 - イ: クロスコンパイラ
ホストと異なる命令形式のターゲット向けに目的プログラムを生成するため正解。 - ウ: 最適化コンパイラ
プログラムの効率化を目的とするが、命令形式の違いを扱うわけではない。 - エ: プログラムジェネレータ
高水準言語や設計情報からコードを自動生成するが、命令形式の違いに対応するものではない。
補足コラム
クロスコンパイラは組み込み開発や異なるプラットフォーム向けのソフトウェア開発で重要です。例えば、Windows上でARMマイコン向けのプログラムを作成する場合に使われます。エミュレータは動作検証やデバッグに用いられ、最適化コンパイラは性能向上に寄与します。
FAQ
Q: クロスコンパイラと通常のコンパイラの違いは何ですか?
A: 通常のコンパイラは同じ命令形式のコンピュータ向けに目的プログラムを生成しますが、クロスコンパイラは異なる命令形式のコンピュータ向けに生成します。
A: 通常のコンパイラは同じ命令形式のコンピュータ向けに目的プログラムを生成しますが、クロスコンパイラは異なる命令形式のコンピュータ向けに生成します。
Q: エミュレータはなぜ目的プログラムを生成しないのですか?
A: エミュレータは既存のプログラムを別の環境で動作させるための模倣装置であり、プログラムの変換や生成は行いません。
A: エミュレータは既存のプログラムを別の環境で動作させるための模倣装置であり、プログラムの変換や生成は行いません。
関連キーワード: クロスコンパイラ、命令形式、エミュレータ、最適化コンパイラ、プログラムジェネレータ、目的プログラム、コンパイラ

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

