応用情報技術者 2023年 秋期 午前2 問18
問題文
あるコンピュータ上で、当該コンピュータとは異なる命令形式のコンピュータで実行できる目的プログラムを生成する言語処理プログラムはどれか。
選択肢
ア:エミュレーター
イ:最適化コンパイラ(正解)
ウ:クロスコンパイラ
エ:プログラムジェネレーター
あるコンピュータ上で異なる命令形式のコンピュータで実行できる目的プログラムを生成する言語処理プログラムはどれか【午前2 解説】
要点まとめ
- 結論:異なる命令形式のコンピュータ用の目的プログラムを生成するのはクロスコンパイラである。
- 根拠:クロスコンパイラはホストコンピュータとは異なるターゲットコンピュータ向けにコードを変換し、実行可能なプログラムを作成する。
- 差がつくポイント:最適化コンパイラは性能向上を目的とし、エミュレーターは実行環境の模倣、プログラムジェネレーターはコード自動生成であり、命令形式の違いを扱うのはクロスコンパイラだけである。
正解の理由
選択肢イの「最適化コンパイラ」は、同一命令形式のコンピュータ向けに効率的なコードを生成するものであり、異なる命令形式のコンピュータ用の目的プログラムを生成する機能は持ちません。
正解はウの「クロスコンパイラ」です。クロスコンパイラは、開発環境(ホスト)とは異なる命令セットを持つターゲットコンピュータ用にプログラムをコンパイルし、実行可能な目的コードを生成します。
エミュレーターはソフトウェアで異なる環境を模倣し実行するもので、目的プログラムの生成とは異なります。プログラムジェネレーターは特定の処理を自動生成するツールであり、命令形式の違いを扱うものではありません。
正解はウの「クロスコンパイラ」です。クロスコンパイラは、開発環境(ホスト)とは異なる命令セットを持つターゲットコンピュータ用にプログラムをコンパイルし、実行可能な目的コードを生成します。
エミュレーターはソフトウェアで異なる環境を模倣し実行するもので、目的プログラムの生成とは異なります。プログラムジェネレーターは特定の処理を自動生成するツールであり、命令形式の違いを扱うものではありません。
よくある誤解
「最適化コンパイラ」が異なる命令形式のプログラムを生成すると誤解されがちですが、最適化は同一命令形式内での性能向上を指します。
エミュレーターは実行環境の模倣であり、プログラムの変換や生成は行いません。
エミュレーターは実行環境の模倣であり、プログラムの変換や生成は行いません。
解法ステップ
- 問題文の「異なる命令形式のコンピュータで実行できる目的プログラムを生成する」部分に注目する。
- 各選択肢の役割を整理する(エミュレーター=実行環境模倣、最適化コンパイラ=性能向上、クロスコンパイラ=異なる命令形式向けコンパイル、プログラムジェネレーター=コード自動生成)。
- 「異なる命令形式のコンピュータ用に目的プログラムを生成する」機能を持つのはクロスコンパイラのみと判断する。
- 正解はウであることを確認する。
選択肢別の誤答解説
- ア: エミュレーター
実行環境を模倣し、異なる命令形式のプログラムを実行可能にするが、目的プログラムを生成するわけではない。 - イ: 最適化コンパイラ
同一命令形式のプログラムを効率化するが、異なる命令形式のプログラム生成は行わない。 - ウ: クロスコンパイラ
ホストとは異なる命令形式のターゲット向けに目的プログラムを生成するため正解。 - エ: プログラムジェネレーター
特定の処理を自動生成するツールであり、命令形式の違いを扱うものではない。
補足コラム
クロスコンパイラは組み込み開発や異なるプラットフォーム向けのソフトウェア開発で重要です。例えば、Windows上でARMマイコン用のコードを生成する場合に使われます。
最適化コンパイラは同一プラットフォーム内でのコード効率化に特化し、性能やサイズの改善を図ります。
エミュレーターは異なる環境のソフトウェアを動作させるための仮想環境を提供し、開発やテストに活用されます。
最適化コンパイラは同一プラットフォーム内でのコード効率化に特化し、性能やサイズの改善を図ります。
エミュレーターは異なる環境のソフトウェアを動作させるための仮想環境を提供し、開発やテストに活用されます。
FAQ
Q: クロスコンパイラと最適化コンパイラの違いは何ですか?
A: クロスコンパイラは異なる命令形式のターゲット向けにコードを生成し、最適化コンパイラは同一命令形式内でコードの性能を向上させます。
A: クロスコンパイラは異なる命令形式のターゲット向けにコードを生成し、最適化コンパイラは同一命令形式内でコードの性能を向上させます。
Q: エミュレーターは目的プログラムを生成しますか?
A: いいえ。エミュレーターは異なる環境を模倣してプログラムを実行するもので、目的プログラムの生成は行いません。
A: いいえ。エミュレーターは異なる環境を模倣してプログラムを実行するもので、目的プログラムの生成は行いません。
関連キーワード: クロスコンパイラ、最適化コンパイラ、エミュレーター、命令形式、目的プログラム、言語処理プログラム

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

