RL78にてCコード中に、アセンブラ関数を作り、日本語コメントを UFT8 から SJIS に変更すると特定の漢字でビルトエラーが発生するようになりました。コンパイラは CCRL、GCC のほうではないです。
コードは、
/// アセンブラ部の宣言 ///
#pragma inline_asm IntRxTx
static void IntRxTx(void)
{
;EIとSTACK操作はcall元で実施
MOV A,SCI_DT ; 送受信値取出し
MOV !_SCI_DT,A ; 受信として退避
CMP0 !_sci_mode
メッセージは、
:E0520067:"}" がありません。
どうも「実施」の文字が引っかかっているようです。昔昔、SJISの特定コードがエスケープシーケンスと被るみことがUNIX上で起こっていましたが、イマドキまさか。ルネサスに問合せしました。コンパイラ購入者でなくとも、ルネサス評価ポードは購入していれば問合せOKでした。購入先の代理店さんをお知らせする必要があります。
ルネサス殿と問答が続きましたが、以下のコードを以下のようにしてくれとのことでした。
/// アセンブラ部の宣言 ///
#pragma inline_asm IntRxTx
static void IntRxTx(void)
{
// EIとSTACK操作はcall元で実施
MOV A,SCI_DT // 送受信値取出し
MOV !_SCI_DT,A // 受信として退避
CMP0 !_sci_mode
違いはわかりますでしょうか? アセンブラ関数でもコメントは C/C++ 形式にするということでした。確かにCCRL取説のはアセンブラ関数のコメント形式は明記されていませんが、サンプルコードは「//」になっていました。。。まさかの結果でした。