• 検索結果がありません。

ANSI/ISO 規格では、ターゲット・プロセッサ、ランタイム環境あるいはホスト環境 の特性により影響を受ける C 言語の一部の事項について記載しています。これらの 機能は、効率性や実用性といった理由で、各標準コンパイラの間でも異なる可能性 があります。ここでは、これらの機能が TMS320C28x C/C++ コンパイラにどのよう に実装されているかを説明します。

以下に、これらの事項をすべて取り上げ、それぞれに対する TMS320C28x C/C++ コ ンパイラの動作を説明します。それぞれの説明には、正式な ANSI/ISO 規格および カーニハンとリッチー(K&R)による『The C Programming Language』(第 2 版)に 対する参照も含まれています。

6.1.1 識別子と定数

次の規則が識別子と定数に適用されます。

❏ 識別子に関しては、すべての文字が有効です。また、識別子に対する大文字と小 文字は区別されます。これらの特性は、すべての TMS320C28x ツールにおいて 内部・外部を問わず、すべての識別子に適用されます。

(ANSI/ISO 3.1.2, K&R A2.3)

❏ ソース(ホスト)文字セットと実行(ターゲット)文字セットは、ASCII である ことを前提とします。マルチバイト文字はありません。

(ANSI/ISO 2.2.1, K&R A12.1)

❏ 文字定数や文字列定数における 16 進や 8 進のエスケープ・シーケンスは、最大 で 32 ビットまでの値をもちます。 (ANSI/ISO 3.1.3.4, K&R A2.5.2)

❏ 複数の文字をもつ文字定数は、シーケンスの最後の文字としてコード化されま す。たとえば次のとおりです。

'abc' == 'c' (ANSI/ISO 3.1.3.4, K&R A2.5.2)

6.1.2 データ型

次の規則がデータ型に適用されます。

❏ データ型の表記方法については、6.4 節「データ型」(6-7 ページ)を参照してく

ださい。 (ANSI/ISO 3.1.2.5, K&R A4.2)

❏ size_t 型(sizeof 演算子の結果)は unsigned long です。

TMS320C28x C の特性

6.1.3 変換

次の規則が変換に適用されます。

❏ float から int への変換では、小数点以下の部分は切り捨てられます。

(ANSI/ISO 3.2.1.3, K&R A6.3)

❏ ポインタおよび整数は自由に変換できます。 (ANSI/ISO 3.3.4, K&R A6.6)

6.1.4

次の規則が式に適用されます。

❏ 2 つの符号付き整数で除算をしたとき、どちらかが負であれば商(/)は負にな り、剰余(%)の符号は被除数の符号と同じになります。たとえば次のとおりです。

10 / -3 = = -3, -10 / 3 = = -3

10 % -3 = = 1, -10 % 3 = = -1 (ANSI/ISO 3.3.5, K&R A7.6)

❏ 符号付きの値の右シフトは、算術シフトです。つまり、符号は保存されます。

(ANSI/ISO 3.3.7, K&R A7.8)

6.1.5 宣言

次の規則が宣言に適用されます。

register 記憶クラスは、すべての char 型、short 型、int 型、ポインタ型に有効です。

(ANSI/ISO 3.5.1, K&R A8.1)

❏ 構造体のメンバは、16 ビット境界または 32 ビット境界に位置合わせされます。

(ANSI/ISO 3.5.2.1, K&R A8.3)

❏ int 型のビット・フィールドは、符号付きです。ビット・フィールドは下位ビッ トからはじまるワードにパックされ、ワード境界にまたがることはありません。

したがって、ビット・フィールドは C ソースで使われているサイズに関係なく、

TMS320C28x C の特性

6.1.6 プリプロセッサ

プリプロセッサは、次のプラグマ疑似命令を認識しています。他のプラグマ疑似命 令はすべて無視されます。プラグマ疑似命令は、コンパイラのプリプロセッサに関 数の処理方法を指示します。認識されているプラグマは次のとおりです。

❏ CODE_SECTION(関数、「セクション名」)

❏ DATA_SECTION(シンボル、「セクション名」)

❏ INTERRUPT(関数)

❏ FUNC_EXT_CALLED(関数)

❏ FAST_FUNC_CALL(関数)

(ANSI/ISO 3.8.6, K&R A12.8) プラグマの詳細は、6.8 節「プラグマ疑似命令」(6-25 ページ)を参照してください。

6.1.7 ヘッダ・ファイル

次の規則がヘッダ・ファイルに適用されます。ヘッダ・ファイルの詳細は、8.4 節

「ヘッダ・ファイル」(8-18 ページ)を参照してください。

❏ 次の ANSI/ISO C ランタイムサポート関数はサポートされていません。

■ locale.h

■ signal.h

(ANSI/ISO 4.1, K&R B)

❏ stdlib ライブラリ関数 getenv と system はサポートされていません。

(ANSI/ISO 4.10.4, K&R B5)

❏ 浮動小数点型の戻り値を生成する数値計算ライブラリ関数の場合、生成された値 が小さすぎて表現できないと、ゼロが戻され、かつ errno は ERANGE に設定さ れます。

TMS320C28x C++ の特性