RENESAS TOOL NEWS 2005年07月1日 : RSO-M3T-NC30WA-050701D
M3T-NC30WA V.5.30 Release 02
ご使用上のお願い |
M16C/60, M16C/30, M16C/20, M16C/10, M16C/Tiny, およびR8C/Tinyシリーズ用 Cコンパイラパッケージ M3T-NC30WA V.5.30 Release 02の使用上の注意事項を連絡します。
- near修飾された64ビットデータ型変数をfar修飾された64ビットデータ型変数に代入する場合の注意事項
- 内容
near修飾子で修飾された64ビットデータ型変数(*)をfar修飾子で修飾された64ビットデータ型変数に代入すると、8バイトデータのうち下位から3バイト目と4バイト目の値が 代入されません。
* 修飾子を省略した場合は、near修飾されたものとして扱われます。
例
--------------------------------------------------------------------
far long long l2;
long long l1;
void func(void)
{
l2 = l1;
}
--------------------------------------------------------------------
- 回避策
near修飾された64ビットデータ型変数の値をfar修飾された64ビットデータ型変数へ代入する場合は、asm関数を使って次の要領で2バイトづつ転送してください。
- 代入元および代入先の変数がauto変数または引数の場合は書式”$$”を使用 してください。
- 代入元および代入先の変数が外部変数の場合は書式”$$”または”$@”を使用 してください。
--------------------------------------------------------------------
far long long l2;
void func(long long l1)
{
asm(" ste.w $$[FB],$@",l1,l2);
asm(" ste.w $$+2[FB],$@+2",l1,l2);
asm(" ste.w $$+4[FB],$@+4",l1,l2);
asm(" ste.w $$+6[FB],$@+6",l1,l2);
}
--------------------------------------------------------------------
- 恒久対策
次期バージョンで改修する予定です。