CubeSuite アップデート情報
CA78K0
V1.10からV1.11への変更点
制限事項の解除(ビルド・ツール)
以下の制限事項を解除しました。
- No. 1 [変数配置オプション]タブに関するエラー制限 (パッケージングに関する制限事項)
-
【内 容】
ビルド・ツールのプロパティ・パネルの[変数配置オプション]タブの[変数情報ファイルを出力する]を”はい”、あるいは[ROM/RAM使用量を表示する]を”はい”にしてビルドした場合、以下のエラーが表示されます。 (プログラム(C:\Program Files\NEC Electronics CubeSuite\CubeSuite\ CA78K0\V1.10\Bin\vf78k0.exe)の起動に失敗しました。(E0200002))
V1.00からV1.10への変更点
制限事項の解除(ビルド・ツール)
以下の制限事項を解除しました。
- No. 12 ブロック内でextern宣言された変数と同名の変数との結合が不正となる場合がある制限
-
【内 容】
ブロック内でextern宣言された変数と同名の変数との結合が、以下の4つの条件のうち、いずれかに該当する場合に不正となります。
1. ブロック内でextern宣言された変数と、以降のブロック外でstatic宣言された変数が同名である場合
この場合、エラーとならず、結合もしないため、この変数を参照すると不正なコードを出力します。
2. ブロック内でextern宣言された変数と、以降のブロック外でstatic宣言されない変数が同名である場合
この場合、結合せずに、不正なコードを出力します。
3. ブロック内でextern宣言された変数と、以前のブロック外でextern宣言されない変数が同名であり、さらにextern宣言された変数があるブロックを囲んでいるブロック中で宣言されている自動変数が同名である場合
この場合、ブロック外の変数とブロック内でextern宣言された変数は結合せず、不正なコードを出力します。
4. ブロック内でextern宣言された変数と、他のブロック内でextern宣言された変数が同名である場合
この場合、結合せず、不正なコードを出力します。
- No. 14 大きさが定義されていない多次元配列が不正動作となる場合がある制限
-
【内 容】
大きさが定義されていない多次元配列が、不正動作となる場合があります。
【例1】
char c [ ] [3] = { { 1 }, 2, 3, 4, 5 } ; /* 不正コード */
【例2】
char c [ ] [2] [3] = { "ab", "cd", "ef" } ; /* エラー(E0756) */
- No. 24 自動変数の配列名を参照でW0503を出力する制限
-
【内 容】
初期化なしの自動変数の配列に対して、式中で配列名を参照すると、W0503を出力してしまいます。
W0503 Possible use of‘変数名’before definition
- No. 41 大きさが定義されていない配列の初期化で、初期化子の中括弧の囲みが不統一な場合、確保される領域のサイズが不正となる制限
-
【内 容】
大きさが定義されていない配列の初期化で、初期化子の中括弧の囲みが不統一な場合、確保される領域のサイズが不正となります。
【例】
struct t {
int a;
int b;
} x[ ] = {1, 2, {3, 4}};
- No. 45 条件演算の第2,3項に関数名または関数ポインタを記述して関数を呼び出すと、エラーとなる制限
-
【内 容】
条件演算の第2,3項に関数名または関数ポインタを記述して関数を呼び出すと、E0307エラーとなります。
- No. 65 後置++/--ポインタが指す1バイトデータ参照時にコード不正となる制限
-
【内 容】
ポインタが指す1バイトの参照直後に、後置インクリメント/デクリメントする同ポインタが指す先を参照すると、コード不正となる場合があります。
- No. 66 char/signed char/unsigned char型配列の初期化子並びの最後が文字列で、文字列の前に 1個以上の定数または文字定数が並ぶ時にエラーとならず、コード不正となる制限
-
【内 容】
char/signed char/unsigned char型配列の初期化子並びの最後が文字列で、文字列の前に 1個以上の定数または文字定数が並ぶ時にエラーとならず、コード不正となる場合があります。char/signed char/unsigned char型は、文字列リテラルもしくは定数値による初期化しか許されません。
- No. 67 ポインタ同士の減算結果をオフセットとしたポインタ参照時に、コード不正となる制限
-
【内 容】
以下の条件をすべて満たす時にコード不正となります。
1. 「ポインタ+オフセット」の参照
2. 1.のオフセットが、ポインタ同士の減算
3. 2.のポインタ同士の減算において、ポインタがオフセット付き
- No. 68 "-qc"オプションが未指定(int型拡張する)の時、コード不正となる制限
-
【内 容】
1. -qc未指定(int拡張する)
2. 次のいずれかの組合わせの乗算(演算子の左右を入れ換えても発生する)
- 「0~255の定数を代入したunsigned char型sreg変数」と「0~255の定数」
- 「0~255の定数を代入したunsigned char型sreg変数」同士
- 「0~255の定数を代入したunsigned char型sreg変数」と「0~127の定数を代入したchar/signed char型sreg変数」
4. 演算結果をint型としてあつかう
- No. 69 BCD演算関数”adbcdw”, ”sbbcdw”のコード不正となる制限
-
【内 容】
BCD演算関数”adbcdw”および”sbbcdw”を使用すると、コード不正となる場合があります。
以下のいずれかの条件でコード不正になります。
1. 代入先が配列またはポインタで、アドレス計算コードが発生する。
2. テンポラリ変数を代入する前に、他の演算でレジスタを使用したコードが発生する。
3. 代入したテンポラリ変数を、そのまま条件式など他の演算に使用する。
- No. 70 "-ng"オプションを指定し、ASM文を含む関数において、分岐命令でエラーとなる制限
-
【内 容】
"-ng"オプションを指定し、ASM文を含む関数において、ASM文より後ろにある分岐命令でエラーとなる場合があります。
以下のすべての条件を満たすときエラーとなる場合があります。
1. 関数内にASM文がある。
2. 同関数内に分岐命令を出力する文(if文, for文, while文など)がある。
- No. 71 ネストしたif文を抜けた直後の文に対して、行番号情報が出ない制限
-
【内 容】
以下のすべての条件を満たすときに、ネストしたif文を抜けた直後の文に対して、行番号情報が出ない場合があります。ただし、出力コードは正しいです。行番号情報が出なかった行にはブレーク・ポイントの設定が出来ません。
1. 2つ以上の if文が入れ子になっているネストレベル3以上の if文がある。
2. 上のネストレベルにある else が if文の行番号より大きい。
3. 直後に文が続く、上のネストレベルにあるif文が少なくとも1つある。
- No. 72 割り込み関数内のlong型変数への代入でコード不正となる場合がある制限
-
【内 容】
割り込み関数内でlong型変数への代入を記述し、-ql3オプション以上を指定し、ランタイム・ライブラリ関数@@dels03または@@hlls03を呼び出すコードをコンパイラが生成した際に、割り込み関数内の他の処理でBCレジスタを使わず、割り込み関数内から関数を呼ばない時に、BCレジスタの中身を破壊します。
- No. 73 バンク関数呼び出しコードが出ない場合がある制限
-
【内 容】
以下の条件のいずれかを満たす時に、関数情報ファイルでバンク領域に配置するように指定した関数に対して、バンク関数呼び出しコードが出ない場合があります。 また、(3)に対しては「C0101:Internal error」が出る場合があります。
出なければ問題はなく、プログラム・コードには影響はありません。
1. 関数ポインタにキャストして関数を呼び出す。
2. typedef名を使って宣言した関数を呼び出す。
3. -mfオプションを指定し、関数ポインタを使って関数を呼び出す。
- No. 74 norec関数にて1バイトの引数またはauto変数使用時に、コード不正となる場合がある制限
-
【内 容】
norec関数にて1バイトの引数またはauto変数の使用時に、norec関数内でlong型変数に対して間接参照すると、コード不正となる場合があります。
クロスリファレンス・リスト・ファイルの改善
解析ツールに対応するため、クロスリファレンス・リスト・ファイルの出力情報を改善しました。
最適化オプションの追加
(1) -qx4(サイズ最優先)を追加しました。
(2) -ql5(スタックアクセス用ライブラリの使用、および共通コードのサブルーチン化を行う)を追加しました。
(3) -qg(デバッグ優先)を追加しました。
最適化機能の追加
以下の最適化機能を追加しました。
(1) 自動サブルーチン化
(2) ビット・フィールドのコード改善
共通オブジェクト指定の追加
"-common"(共通オブジェクト指定)を追加しました。
変数情報ファイル指定/変数情報ファイル出力指定の追加
(1) -ma(変数情報ファイル指定)を追加しました。
(2) -vo(変数情報ファイル出力指定), -vs(saddr領域のマージン・サイズ指定)を追加しました。
ROM/RAM使用量表示指定の追加
"-vx"(ROM/RAM使用量表示指定)を追加しました。
ユーザ・オプション・バイト指定の追加
"-gb"(ユーザ・オプション・バイト指定)を追加しました。 また、CSEG疑似命令の再配置属性に”OPT_BYTE”を追加しました。B49:H50+B49:H50
拡張機能レジスタ(EFR)の対応
拡張機能レジスタを搭載したデバイスに対応しました。 EFR名で参照可能です。