Green Hillsコンパイラ
Green Hillsコンパイラは、数百の高度な最適化技法を適用することで、非常にコンパクトなコードサイズを実現しつつ、実行スピードの向上をも実現します。最適化されたコードであっても、問題なくデバッグができるようにGHS専用のデバッグ情報を生成します。
対応言語
- C
- Ada (AdaMULTIで使用)
- C++
- EC++
- GNU C/C++拡張
最新版のGreen Hillsコンパイラは、ISO/IEC 14882:2011(C++11)およびISO/IEC 14882:2014(C++14)をサポートしています。
主なコンパイルオプション
- C言語規格チェック
- ランタイムエラーチェック
- MISRAルールチェック
- 最適化(コンパイラ、リンカ)
- DoubleCheck(静的コード解析)
- デバッグレベル
主な最適化技法
- ループ最適化
- テールリカージョン最適化
- パイプライン最適化
- メモリ最適化
- 定数伝播
- 関数の自動インライン展開(呼び出し元と呼び出し先が別ファイルでも対応)
- 自動変数のレジスタ割り付け/カラーリングによるレジスタの割り付け/レジスタの合成
- 共通部分式削除/部分冗長性除去/デッドコードの削除/スタティック・アドレスの除去
- プロシージャ間最適化
- コードファクタ(CodeFactor)最適化
このように、一般的な最適化技法のみならず、GHS社独自の最適化技法もコンパイラとリンカに実装することで、組込みシステムに適したきわめて高いパフォーマンスをもつコード生成を実現します
プロジェクト・マネージャ
プロジェクト・マネージャは、プログラムの管理およびビルド用の機能です。
主な機能
- 新規プロジェクトの作成、既存プロジェクトへの追加、プロジェクトの編集
- プロジェクト作成に使用するオプションの設定
- 継承されたオプション表示
- プロジェクトのビルド
- 並列ビルド処理
- 設定可能なすべてのオプションをウィンドウの下部にオンスクリーンドキュメントで表示
- プロジェクトファイルを読み込み、自動的にコマンドラインでのオプションスイッチを表示
MULTIデバッガ
MULTIデバッガは、ソース、アセンブリや混在した言語をサポートする強力なグラフィカルデバッガです。
主な機能
- C、C++、Ada、アセンブリ、またはこれらの言語が混在した組込み型アプリケーションのダウンロード、実行、制御とデバッグ
- グラフィカルウィンドウを用いたプログラムコードの閲覧、表示と検索
- 変数、ポインタ、構造体、レジスタやメモリ領域の表示と編集
- 条件付ブレークポイント、データのウォッチポイントやデバッグノートの作成、表示、編集と削除
- パフォーマンスのプロファイリング、関数のプロファイリング、グローバルプロファイリング、コードのカバレッジ、スタックトレース情報の表示
- 収集したトレースデータの分析
- TimeMachine ツールスイート、MULTI エディタ、ビルダ、サードパーティのエディタやコンパイラとのシームレスなインタフェース
- 複数のプロセッサ上で実効されているようなプロセスの単一のJTAG接続からのマルチプロセスデバッグ
- デバッグに関連したレジスタに絞った表示が可能なレジスタ表示ウィンドウと、レジスタのデータブックのような表示のレジスタ情報ウィンドウ
- バッファ、文字列、生メモリの検証に最適なメモリ表示ウィンドウ
- メモリの割当て情報の視覚的な表示
- 標準テンプレートライブラリ(STL)オブジェクトの表示
- データエクスプローラを用いた、変数、ポインタ、構造体の表示と編集
- 多くのフラッシュデバイスをサポートしたフラッシュ書込みユーティリティ
- ロード済みまたは実行中のコードのデバッグ
- ターゲットCPUアーキテクチャ用の命令セット・シミュレータ
- デバッグ時に、NULLポインタ参照や、ゼロ除算などの致命的なエラーを検出するランタイムエラーチェック機能
実行履歴可視化機能(History)
MULTIデバッガの新機能「History」は、複雑なプログラムの動きを、一目で把握することを可能にする可視化ツールです。
(Historyは、MULTI 8 以降のバージョンでご利用いただけます。)
この新機能は、マルチコア、マルチタスクOSのような複雑なシステムのデバッグ時に、時間のかかっている処理、予期しない動作(割込み・イベント)などを時系列で可視化でき、プログラム実行履歴も表示可能になることで、プログラム全体の動きを俯瞰することが可能になります。
イベントデータをチームで共有し、ブックマーク機能を使用して問題個所を特定することができるため、複数の開発者で効率的に解析でき、デバッグや解析時間の大幅な短縮を実現します。
また、見たい箇所のズーム表示など、直感的なGUIによる抜群の操作性により、簡単に使用を開始することができます。
主な機能
- 関数コール、コンテキストスイッチ、OSカーネルコール、割込み、イベントなどの履歴を時系列で表示
- トレース可能なSoC/マイコンで、トレースデータの表示が可能
- EAGLE APIの使用により、プログラム内のメッセージ(文字列)や、変数値を時系列でロギングして表示可能
- イベント検索、フィルタリング機能により、見たいイベントをすぐに表示
- ブックマーク機能を利用して、ログデータをチーム内で情報共有
- スタンドアロンプログラム、INTEGRITY(VASLog)、μ-velOSity、μ-visorなどの環境で使用可能
- INTEGRITYの仮想タスクで、関数の入口・出口や、EAGLEログを記録したデータを表示(VASLog機能)
静的コード解析機能(DoubleCheck)
Green Hillsコンパイラに統合された静的コード解析機能であるDoubleCheckは、プログラムを実行する前にプログラミングのミスを発見できます。コンパイルオプションを有効にするだけで、コンパイルのたびに静的コード解析を行います。さらに、従来の静的コード解析ツールよりもずっと高速なので、開発者1人ひとりがいつでも利用できます。
DoubleCheckは、関数呼び出しにともなう潜在的な実行経路を、単一のソースファイルだけでなく、複数のソースファイルをまたいで追跡することができます。これにより、バッファオーバーフロー、メモリリーク、ポインタの不正参照など、ソースコードの不正を未然に検出することが可能です。
DoubleCheckが生成するレポートは、Webブラウザで確認できます。
主な機能
- 潜在的なNULLポインタの参照
- 配列や動的に確保されたバッファ領域を超えたアクセス(バッファオーバフロー)
- 読み込み専用メモリへの書き込み
- 未初期化変数の参照
- ポインタを通じたリソースのリーク
- 割り当てが解放されたメモリ領域へのアクセス
- 関数返却値の不適切な設定(返却値が自動変数のアドレス)
- 配列やバッファのアンダーフロー
動的解析機能(TimeMachine)
TimeMachineは、大容量トレースバッファを搭載したハードウェア・デバッグプローブで取得したトレースデータに基づき、プロセッサの動作を復元してプログラムの実行履歴を可視化し、MULTIのトレース能力とデバッグ能力を劇的に向上させる動的実行解析ツールです。TimeMachineを使用することで、プログラムの実行履歴をさまざまな視点から可視化し、開発期間を大幅に短縮できます。
TimeMachineでキャプチャした各ポイントでは、次のことができます。
- タスクの相互動作のソースレベルでのデバッグ
- 効果的な実行ブレークポイント、データブレークポイントを使って特定のデータポイントの発見
- RTOSのデータ構造の確認
- 仮想メモリアプリケーションのデバッグ
また、プログラムの品質を高めるためにカバレッジを測定したり、パフォーマンスの向上を図るためにシステムのボトルネックを迅速に発見することができます。
主な機能
- トレースデータの情報から関数やアセンブリレベルでプログラムの実行履歴を時系列に表示するトレースリストウィンドウ
- 使い慣れたMULTIデバッガのGUI操作で、直感的なプログラムの実行解析が可能なTimeMachineデバッガ
- トレースデータの情報から関数呼び出しのスタックトレースを時系列に表示するパスアナライザ
- プログラムの基本ブロック、ソース行および関数に関するプロファイルレポートを表示