Diab Compiler:25年の革新実績
組込システムにおける、アプリケーションのパフォーマンス向上、メモリフットプリントの削減、規格に準拠した高品質なオブジェクトコード生成を実現するWind River Diab Compiler
概要
優れたパフォーマンスと小さなフットプリント
独自の最適化技術を駆使し、最小のフットプリントで極めて高速かつ高品質なオブジェクトコードを生成。More
業界最新規格
Wind River Diab Compilerは、C89、C99、EC++など、最新のANSI/ISO CおよびC++コンパイラ規格に準拠しています。More
優れた品質
世界中のミッションクリティカルなアプリケーションが、現場および自社テストラボで25年間テストされているWind River Diab Compilerを採用しています。また、オートモーティブ、航空宇宙、インダストリアル、医療業界向けの認証取得済みアプリケーションにおいて数多くのデバイスが使用されています。More
安全基準に準拠
Wind River Diab Compilerは、オートモーティブ機能安全規格TUV NORD認証済みプロジェクトで利用されました。また、インダストリアル、医療、航空電子工学、オートモーティブといったセーフティクリティカルな市場の製品にも数多く採用されています。More
受賞歴を持つサポートサービス
受賞歴を持つSCP(Service Capability and Performance)認定企業およびウインドリバーのOLS(Online Support)サイトで、Wind River Diab Compilerに対するサポートが提供されています。ウインドリバーでは、世界各地に150名以上のサポートエンジニアを 配置し、現地の言語でのサポートを提供しています。More
主な特徴
スピード/サイズの最適化を選択可能
実行スピードとコードサイズの要件に対応するため、Wind River Diab Compilerでは、実行速度の最速化、コードサイズの最小化、またはバランス最適化など、さまざまなコンパイラ・スイッチを備えています。
C/C++とアセンブリを混在可能
C/C++とアセンブリコードの混在をさまざまな手法で実現。関数として呼び出されるアセンブリコードのインライン化にASMマクロを利用。ASMストリングによって、アセンブリ命令を簡単に組み入れることができます。Wind River Diab Compilerには、コンパイラ最適化を促進する、さまざまなマクロが追加されています。
プログラム全体の最適化
異なるモジュール間の関数のインライン化を可能にすることによって、実行効率を上げ、異なるソースファイル内の関数間の呼び出しを最適化。
プロファイル主導、アプリケーション別の最適化
これらの最適化には2つのコンパイル・ステージがあります。
- ステージ1:コードを計測した後、対象マシンまたは典型的なデータセットで構築したシミュレーション環境で実行されます。計測済みコードでプロファイル情報を収集し、その後、コンパルの第2ステージで、この情報をコンパイラにフィードバックします。
- ステージ2:コンパイラはプロファイル情報を利用して、ループ展開、インライン化、基本ブロック再配置、レジスタ割り当て、分岐予測などのさらなる最適化を実行します。コンパイルの第1ステージで典型的なデータセットが供給されるため、該当アプリケーションに合った最適化が可能です。
割込処理が容易
Wind River Diab Compilerの割込キーワードや割込pragmaによって、組込システム用の割込処理が簡単になっています。たとえば、アセンブリ言語を使用せずにCレベルで割込ベクタテーブルを作成することができます。
多数のデバッグオプション
デバッグコードの生成を柔軟に制御することで、デバッグ情報量とデバッグスピードの間、およびパフォーマンス最適化とデバッグ容易性の間での優先順位の調整が可能です。
位置独立コード(PIC)および位置独立データ(PID)
任意のアドレスにロードできるコードとデータの生成。動的にモジュールのロードとアンロードを行うデバイスにとって便利な機能です。
volatileキーワード、すなわちメモリの値をすべてボラタイルに
コードの該当部分をボラタイルに指定し、Wind River Diab Compilerがデータアクセスの最適化を行わないようにします。メモリマップドI/Oデバイスへのアクセスに便利な機能です。
構造体の形式制御
隙間を埋めるデータ配置やパディングの消去によりフットプリントを削減。データ構造のバイトオーダをメモリに格納されているとおりに入れ替え、バイトスワップさせたデータ配置を行うことで、デバイスの本来のバイトオーダとは異なる順序での情報通信を可能にします。この機能は、リトルエンディアンとビッグエンディアンのプロセッサ間のデータ共有パフォーマンスを最適化する際に役立ちます。
メモリマッピングのための多彩なリンクコマンド言語
各組込デバイスには独自のメモリレイアウトがあり、高速RAM、フラッシュ、共有メモリなど、使用可能なメモリの種類もさまざまです。リンクコマンド言語によって、メモリ内のコードやデータの配置をユーザが細かく指定し最適化を図ることができます。
Cおよびアセンブラからの絶対アドレス指定
変数や関数を特定のメモリアドレスに割り当てることができます。割込ベクタの設定でメモリマップドI/Oデバイスにアクセスする際に役立つ機能です。
PROMに適したコードの生成機能
起動時にRAMに移動される、メモリへのアクセスとROMへの焼き付けが可能なコードを生成。
多数のオブジェクトモジュールフォーマットをサポート
Diab Compilerは、ELF、COFF、IEEE-695、S-Recordsをサポートしており、複数のフォーマットのオブジェクトモジュールが生成できます。
リンク時lintチェッカ
lint機能は、使われていない変数や関数、return文の指定もれ、範囲外の定数、関数の呼び出しの不一致など、よくあるCプログラミングエラーをコンパイル時やリンク時に検出する強力なツールです。リンク時には、コンパイル時にはチェックできないモジュール間の矛盾を検出します。
ランタイムエラーチェッカ
ランタイムエラーチェッカでは、プログラム開発中にソフトウェアエラーの根本原因を迅速に識別します。メモリリーク、スタックオーバーフロー、ポインターの不正使用、およびメモリ割り当てエラーを検出します。この強力なツールを使うことで、時間を削減できるとともに、統合と品質保証(QA)活動前の段階で、コード品質の向上が図れます。
命令セットシミュレーター
命令セットシミュレータ(ISS)は、実行可能ファイル用のシミュレータで、オブジェクトファイルや実行可能ファイルの逆アセンブラにもなります。ISSでは、ターゲットアーキテクチャの命令が正確にシミュレートでき、それにより開発者は、ターゲットハードウェアがなくてもアプリケーションの作成やデバッグが可能となります。


