メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

算術シフトとして符号付き整数を右にシフト (-logical-signed-right-shift)

コンパイラが符号付き整数の右シフトを算術シフトとして実装するよう指定する

R2023b 以降

説明

この名前のオプションは、Polyspace Platform (Polyspace Test) ユーザー インターフェイスでのみ利用可能です。標準の Polyspace® ユーザー インターフェイスにおける同等のオプションについては、符号付き右シフト (-logical-signed-right-shift) を参照してください。

コンパイラが符号付き整数の右シフトを算術シフトとして実装 (符号ビットは保持) するように指定します。一般的に、コンパイラは符号付き整数の右シフトを論理シフトとしてではなく、算術シフトとして実装します。

このチェック ボックスをオフにすると、Polyspace はコンパイラが符号付き整数の論理右シフトを行うと仮定します。このオプションは、オプション [符号付き右シフト] (-logical-signed-right-shift) と同等です。

オプションの設定

以下のいずれかの方法を使用してオプションを設定します。

  • Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [ビルド] タブで [ターゲットおよびコンパイラ] ノードを選択してから、このオプションを選択します。

  • コマンド ラインとオプション ファイル: オプション -logical-signed-right-shift を使用します。コマンド ライン情報を参照してください。

このオプションを使用する理由

C99 規格 (セクション 6.5.7) では、右シフト演算 x1>>x2 について、x1 が符号付きで負の値の場合は、動作が処理系定義になると規定されています。算術シフトと論理シフトの選択は、コンパイラによって異なります。このオプションは、コンパイラをエミュレートするために使用します。

設定

オン (既定の設定)

このオプションは、右シフトが算術シフトであることを示します。つまり、シフトの際に符号ビットは残ります。

(-4) >> 1 = -2
(-7) >> 1 = -4
  7  >> 1 = 3
オフ

このオプションは、右シフトが論理シフトであることを示します。つまり、符号ビットは 0 に置換されます。

(-4) >> 1 = (-4U) >> 1 = 2147483646
(-7) >> 1 = (-7U) >> 1 = 2147483644
  7  >> 1 = 3

コマンド ライン情報

コマンド ラインを使用する場合、算術演算が既定の計算モードです。次のオプションを設定すると、論理演算が実行されます。

パラメーター: -logical-signed-right-shift
既定値: 算術演算の符号付き右シフト
例 (Bug Finder): polyspace-bug-finder -logical-signed-right-shift
例 (Code Prover): polyspace-code-prover -logical-signed-right-shift
例 (Bug Finder Server): polyspace-bug-finder-server -logical-signed-right-shift
例 (Code Prover Server): polyspace-code-prover-server -logical-signed-right-shift

バージョン履歴

R2023b で導入