コンパイラのフレームワーク - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発 (UG1400)

Document ID
UG1400
Release Date
2022-04-26
Version
2022.1 日本語

このセクションでは、 MicroBlaze™ および Cortex® A9、A53、A72、R5 プロセッサのコンパイラに共通した機能について説明します。次の図は、GNU ツールのフローを示しています。

図 1. GNU ツール フロー
GNU コンパイラの名前は次のようになります。
  • MicroBlaze の場合 mb-gcc
  • arm-none-eabi-gcc コアの場合 Cortex
  • Cortex-A53 および Cortex-A72 の場合 aarch64-none-elf-gcc
  • Cortex-R5F の場合 armr5-none-eabi-gcc

GNU コンパイラはラッパーで、次のプログラムを呼び出します。

プリプロセッサ (cpp0)
コンパイラにより最初に呼び出され、すべてのマクロをソース ファイルおよびヘッダー ファイルでの定義に置き換えます。
マシンおよび言語別のコンパイラ
プリプロセスされたコード、つまり第 1 段階で出力されたコードに対して実行します。言語別のコンパイラには次の 2 つがあります。
C コンパイラ (cc1)
入力 C コードの最適化の大部分を実行し、アセンブリ コードを生成します。
C++ コンパイラ (cc1plus)
入力 C++ コードの最適化の大部分を実行し、アセンブリ コードを生成します。
アセンブラー
アセンブラー コードには、アセンブリ言語のニーモニックが含まれます。アセンブラーは、これらのニーモニックを機械語に変換します。コンパイラで生成されたラベルの一部も解決し、オブジェクト ファイルを生成してリンカーに渡します。アセンブラー実行ファイルの名前は次のようになります。
  • MicroBlaze の場合 mb-as
  • arm-none-eabi-as コアの場合 Cortex
  • Cortex-A53 および Cortex-A72 の場合 aarch64-none-elf-as
  • Cortex-R5F の場合 armr5-none-eabi-as
linker
アセンブラーで生成されたオブジェクト ファイルをリンクします。コマンド ラインでライブラリが指定されている場合は、アセンブラーからの関数をリンクすることにより、コード内の未定義の参照の一部を解決します。リンカー実行ファイルの名前は次のようになります。
  • MicroBlaze の場合 mb-ld
  • arm-none-eabi-ld コアの場合 Cortex
  • Cortex-A53 および Cortex-A72 の場合 aarch64-none-elf-ld
  • Cortex-R5F の場合 armr5-none-eabi-ld

次のセクションでは、これらの実行オプションについて説明します。

注記: この後からは、GCC という場合は MicroBlaze コンパイラの mb-gcc を、G++ という場合は MicroBlaze C++ コンパイラの mb-g++ のことを示します。