Renesas Synergy™

FAQ 1008272 : リンク時に、プラグマ指令で割り込みハンドラとした関数がエラーになるのですが?

回答

Cコンパイラは、“#pragma interrupt”を指定した関数の呼び出しに対して、 コード・サイズ削減のため、通常はjr命令を出力します。
しかし、jr命令は分岐可能な範囲が限定されている(22ビット・ディスプレースメント)ため、 関数本体が分岐可能な範囲にない場合、リンク時にエラーとなります。
このような場合は、Cコンパイラのオプション(-Xj)で、 出力する分岐命令をjmp命令に変更してください。

 

-Xjオプション指定時のコンパイラ出力)
------------------------------
	.section "NMI", text
	jmp  #_func1
_func1:
	...
	.option nowarning
	ld.w [sp], r1
	add  4, sp
	...
	.option warning
	reti
------------------------------



PM+からの指定の場合、-Xjオプションは、 コンパイラオプションの設定ダイアログの"出力コード"にあります。

適用製品

V850用コンパイラパッケージ [CA850]
他にご質問がございましたら、リクエストを送信してください