MESC TOOL NEWS:
MESCT-NC30WA-980701D
NC30WA
V.2.00 Release 1, V.3.00 Release 1
ご使用上のお願い
|
この度、M16C/60シリーズ用CコンパイラNC30WA V.2.00 Release 1およびV.3.00 Release 1のご使用上の注意事項をご連絡致します。
バージョンアップを行った場合のお願い
Cコンパイラをバージョンアップした場合には、 性能改善等によりコンパイラの生成コードが変わる場合があります。 したがいまして、バージョンアップされる場合には、再度お客様のアプリケーションプログラムの動作確認を実施の上でご使用くださいますようお願いいたします。
除算の演算について
- 内 容
符号付きintもしくは、longを即値で除算し、型の小さい変数に代入した時に不正なコードを出力していました。
- 発生条件
以下の2つの条件を満たした場合に発生します。
- char=signed int /即値を行っている
- その即値が 0x80 ~ 0xff の値である。
もしくは、以下の2つの条件を満たした場合にも発生します。
- int=signed long /即値を行っている
- その即値が 0x8000 ~ 0xffff の値である。
-----------------------------------------------------------------------
[C言語ソース例]
func(){
char c;
int i;
c=i/0x80;
}
- 対処方法
被除数が符号付きである必要がない場合は、unsignedでキャストするかunsignedで宣言し直してください。符号付きである場合は、 演算結果を一時的に被除数型のTMP変数に代入後、最終結果に転送してください。
NC30WA V.2.00 Release 1, V.3.00 Release 1 ご使用上のお願い
MESCT-NC30WA-980701D
bcopy関数のスタック情報について
- 内 容
-fSSUオプションを指定して出力された.stkファイル中にbcopyがある場合、関数名に余分な"_"(アンダースコア)がありました。
- 発生条件
以下の3つの条件を満たした時に発生します。
- 構造体の転送を行っている。
- bcopy関数を呼び出している。
- -fSSU(-fshow_stack_usage)を使用している。
-----------------------------------------------------------------------
[C言語ソース例]
struct tag{
unsigned int i;
unsigned char c[10];
};
far struct tag *a;
far struct tag *b;
main()
{
*a=*b;
}
- 発生例
-----------------------------------------------------------------------
[.stk ファイルの内容]
FUNCTION main
context 3 bytes
auto 0 bytes
f8regSize 0 bytes
12 bytes PUSH & CALL _bcopy
12 bytes PUSH (MAX)
- 対処方法
生成された.stkファイルを以下のように修正してください。
[修正前] 12 bytes PUSH & CALL _bcopy
[修正後] 12 bytes PUSH & CALL bcopy