このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
IAR Embedded Workbench コンパイラ (-compiler iar-ew
)
IAR Embedded Workbench コンパイラの指定
説明
IAR Embedded Workbench コンパイラを使用してコードをコンパイルする場合は、[コンパイラ] (-compiler)
に [iar-ew]
を指定します。コンパイラを指定することによって、規格に含まれていなくても言語拡張に含まれている構文によるコンパイル エラーを回避できます。
次に、ターゲット プロセッサ タイプを指定します。[コンパイラ] に [iar-ew]
を選択すると、Polyspace® デスクトップ製品のユーザー インターフェイスには、IAR Embedded Workbench コンパイラで許容されるプロセッサのみが表示されます。選択するターゲット プロセッサに応じて、基本的なデータ型のサイズ、ターゲット マシンのエンディアンおよび特定のキーワード定義が決まります。
[iar-ew]
コンパイラを指定する場合は、コンパイラ ヘッダー ファイルへのパスを指定しなければなりません。Polyspace 解析への標準ライブラリ ヘッダーの指定を参照してください。
設定
ターゲットでは、基本的な型に対して以下のビット サイズが既定で使用されます。Polyspace デスクトップ製品のユーザー インターフェイスには、これらのサイズが表示されません。
ターゲット | char | short | int | long | long long | float | double | long double | ptr | char の既定の符号 | エンディアン | アライメント | size_t の定義 | wchar_t の定義 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
arm | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 64 | 32 | 符号なし | リトル | 64 | 符号なし int 型 | short |
avr | 8 | 16 | 16 | 32 | 64 | 32 | 32 | 32 | 16 | 符号なし | リトル | 8 | 符号なし int 型 | 符号なし short 型 |
msp430 | 8 | 16 | 16 | 32 | 64 | 32 | 32 | 32 | 16 | 符号なし | リトル | 16 | 符号なし int 型 | 符号なし short 型 |
rh850 | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 64 | 32 | 符号なし | リトル | 32 | 符号なし int 型 | short |
riscv | 8 | 16 | 32 | 32 | 64 | 32 | 64 | 64 | 32 | 符号なし | リトル | 64 | 符号なし int 型 | 符号なし int 型 |
rl78 | 8 | 16 | 16 | 32 | 64 | 32 | 32 | 32 | 16 | 符号なし | リトル | 16 | 符号なし int 型 | 符号なし short 型 |
コンパイラの仕様では、多くのコンパイラ固有のマクロの値も決定されます。Polyspace で特定のマクロがどのように定義されるかを確認するには、オプション -dump-preprocessing-info
を使用します。
マクロ定義をオーバーライドするには、オプション
[プリプロセッサ定義] (-D)
を使用します。マクロの定義を解除するには、オプション
[無効なプリプロセッサ定義] (-U)
を使用します。
ヒント
Polyspace では、
$Super$$
および$Sub$$
を使用したシンボル定義のパッチ適用はサポートされていません。たとえば、次のコードは正しくコンパイルされますが、Polyspace はmain()
がこのコード($Sub$$func)
で定義されている関数func
ではなくextern func ($Super$$func)
を呼び出すと見なします。Polyspace がコードの解析時に正しい関数を呼び出すようにするには、前処理後のすべてのファイルで、/* void func() declared in another file */ extern void $Super$$func(int i); int setup = 0; void setup_func(int i) { setup = i; } /* this function should be called instead of the original extern func() */ void $Sub$$func(int i) { setup_foo(i); /* does some extra setup work */ /* ... */ } int main() { assert(setup = 0); func(1); // Should call $Sub$$func instead of $Super$$func assert(setup = 1); return 0; }
$Sub$$
のすべてのインスタンスを空の string に置き換えます。前処理済みファイルに適用するコマンド/スクリプト (-post-preprocessing-command)
を参照してください。Polyspace は、IAR コンパイラ固有の一部の構成要素をサポートしていません。
サポートされていない構成要素一覧については、
のpolyspaceroot
\polyspace\verifier\code_prover_desktopcodeprover_limitations.pdf
を参照してください。ここで、
は MATLAB® インストール フォルダーです。たとえば、polyspaceroot
C:\Program Files\Polyspace\R2019a
です。IDE で Polyspace as You Code の拡張機能を使用する場合は、このオプションを解析オプション ファイルに入力します。オプション ファイルを参照してください。
コマンド ライン情報
パラメーター: -compiler iar-ew -target |
値: arm | avr | msp430 | rh850 | riscv | rl78 |
既定値: arm |
例 (Bug Finder): polyspace-bug-finder -compiler iar-ew -target rl78 |
例 (Code Prover): polyspace-code-prover -compiler iar-ew -target rl78 |
例 (Bug Finder Server): polyspace-bug-finder-server -compiler iar-ew -target rl78 |
例 (Code Prover Server): polyspace-code-prover-server -compiler iar-ew -target rl78 |
バージョン履歴
R2018a で導入