4.10 C および C++ コードのオーバーフローおよびキャリーステータスフラグ

dspfns.h での European Telecommunications Standards Institute(ETSI)の基本操作の実装により、ステータスフラグ OverflowCarry が公開されます。

これらのフラグは、C または C++ プログラムで使用するグローバル変数として使用可能です。例えば、
#include <dspfns.h>          /* ETSI 組み込み関数をインクルードする */
#include <stdio.h>
...
const int BUFLEN=255;
int a[BUFLEN], b[BUFLEN], c[BUFLEN];
...
Overflow = 0;                      /* オーバーフローフラグをクリアする */
for (i = 0; i < BUFLEN; ++i) {
    c[i] = L_add(a[i], b[i]);      /* a[i] と b[i] のサチュレート加算 */
}
if (Overflow)
{
    fprintf(stderr, "Overflow on saturated addition\n");
}
通常、サチュレート関数には、オーバーフローについて固定作用があります。すなわち、オーバーフローフラグの設定は、明示的にクリアされるまで保持されます。
関連する概念
4.9 European Telecommunications Standards Institute(ETSI)の基本操作に対するコンパイラサポート
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.