MAEC TOOL NEWS:
MAECT-NC308WA_2-010701D
M16Cファミリ用Cコンパイラ (アセンブラ・統合化開発環境付き) NC308WA, NC30WAおよびアセンブラAS308, AS30の使用上の注意事項を連絡します。
- C言語ソースファイル中のアセンブラマクロ記述に関する注意事項
- リンクコマンドオプション"-LOC"に関する注意事項
- C言語ソースファイル中のアセンブラのマクロ記述に関する注意事項
- 1.1 該当製品
-
| M16C/80シリーズ用Cコンパイラ | :NC308WA V.3.10 Release 2 |
| M16C/60, M16C/20シリーズ用Cコンパイラ | :NC30WA V.4.00 Release 2 |
- 1.2 内容
- インラインアセンブラ機能を用いてアセンブラマクロをC言語ソースファイル内で定義した場合、マクロ内のラベル名と最適化オプションの組み合わせによって以下のエラーが発生し、コンパイルできない場合があります。
| Windows版 | :不正な処理を行いました |
| EWS版 | :coreダンプ |
- 1.3 発生条件
- 以下3点の条件をすべて満たした場合に、エラーが発生することがあります。
- (1) アセンブラマクロ内のラベル名に "@" (文字列連結指示命令) を使用している。
- (2) "@" を使用したラベル名以降からファイルの最終行まで指示命令を除くアセンブラ命令行が存在しない。
- (3) コンパイル時に最適化オプション "-O3", "-O4", "-O5", "-OR", "-OS" のいずれかを指定している。
- 1.4 発生例
--------------------------------------------------------------------
#pragma ASM
MemName .macro sec_name,label
.section sec_name.DATA
_@label: ;発生条件(1)
.blkb 1 ;発生条件(2)
.endm ;発生条件(2)
#pragma ENDASM
--------------------------------------------------------------------
- 1.5 回避策
- 本発生条件を満たすファイルに対しては、最適化オプション "-ONA" を指定してください。
- 1.6 恒久対策
- 次期バージョンアップ時に改修する予定です。
NC308WA, NC30WA ご使用上のお願い
MAECT-NC308WA_2-010701D
- セクションデータ配置指定オプション "-LOC" に関する注意事項
- 2.1 該当製品
| M16C/80シリーズ用Cコンパイラ | :NC308WA V.1.00 Release 1 ~ V.3.10 Release 3 |
| M16C/80シリーズ用アセンブラ | :AS308 V.1.00 Release 1 ~ V.2.00 Release 1 |
| M16C/60, M16C/20シリーズ用Cコンパイラ | :NC30WA V.3.00 Release 1 ~ V.4.00 Release 2 |
| M16C/60, M16C/20シリーズ用アセンブラ | :AS30 V.3.00 Release 1 ~ V.3.20 Release 1 |
- 2.2 内容
- セクションデータ配置指定オプション "-LOC" にてセクションの再配置を指定した場合、再配置されたセクション内に記述された分岐命令およびサブルーチン呼び出し命令が間違ったアドレスに分岐するコードを生成する場合があります。
- 2.3 発生条件
- 以下4点の条件をすべて満たす場合に発生することがあります。
- (1) 同一名称のセクションが複数存在する。
- (2) その内の1つのセクションが相対属性セクションで、alignにて偶数番地へ補正されている。
- (3) 同一名称で異なるセクション間に相対値で分岐する命令がある。
- (4) セクションの先頭アドレスが偶数番地で再配置先のアドレスが奇数番地、またはセクションの先頭アドレスが奇数番地で再配置先のアドレスが偶数番地を指定している。
- 2.4 発生例
--------------------------------------------------------------------
.section prg1 ;発生条件(1)
.org 0F0000H
nop
jmp label ;発生条件(3)
nop
.section prg1,align ;発生条件(1), (2)
nop
label:
nop
.end
-----------------------------------------------------------------
- 発生条件(4): このアセンブリ言語ソースファイルを "-LOC prg1=0E0001" と、再配置先を奇数アドレスに指定してアブソリュートモジュールファイルを生成した場合、"jmp label" は間違ったアドレスに分岐するコードが生成されます。
- 2.5 回避策
- "-LOC" オプションを指定する場合は、セクションの先頭アドレスが偶数番地のセクションは偶数番地に、先頭アドレスが奇数番地のセクションは奇数番地に再配置先を指定してください。
- 2.6 恒久対策
- 本内容は、次期バージョンアップ時に改修する予定です。