MESC TOOL NEWS:
MESCT-NC30WA-980601D
NC30WA V.3.00 Release 1
ご使用上のお願い
|
この度、M16Cファミリ用Cコンパイラ(アセンブラ・統合化開発環境付き)NC30WA V.3.00 Release 1の使用上の注意事項についてご連絡致します。
ビット命令について
- 内 容
ビット命令が届かない領域に対してビット命令を出力する場合があります。そのため、アセンブルエラー"Value is out of range"が発生します。
- 発生条件
以下の3つの条件を満たした場合に発生します。
- 変数に対してビットアクセスしている場合
- その変数が引数もしくは#pragma ADDRESSで定義されたデータの場合
- 引数のデータがFBオフセット16の境界をまたいでいる、もしくは、#pragma ADDRESSで1FFFH番地をまたいでいる場合
[例]
#pragma ADDRESS bit 1FFEH
struct {
unsigned int i;
unsigned int b0:1;
unsigned int b1:15;
}bit;
struct tag{
long int l;
long int ll;
int lll;
unsigned int b0:15;
unsigned int b1:1;
};
func(struct tag argbit)
{
bit.b1=1;
argbit.b1=1;
}
- 対処方法
対象となるデータをひとたびautoのテンポラリ変数に代入後、アクセスしてください。
NC30WA V.3.00 Release 1 ご使用上のお願い
MESCT-NC30WA-980601D
4ビット幅のビットフィールドについて
- 内 容
4ビット幅のビットフィールドのアクセスにおいて誤ったコードを出力します。
- 発生条件
以下の3つの条件を満たした場合に発生します。
- 4ビット幅のビットフィールドを変数に代入している場合
- ビットフィールドがfarの場合
- 代入先変数がレジスタに割り当てられている場合
- 対処方法
4ビット幅のビットフィールドをひとたびautoのテンポラリ変数へ代入後、テンポラリ変数を用いて格納先変数へ代入してください。