こんばんは、まつぞの です。 H8/3048F-ONE を GCCを使って開発しています。 日立のヘッダファイルも使っているのですが、gcc のアドレッシングモードに ついて教えてください。 -------------------------------------------- #include "3048f.h" // from HITACHI int main(void){ ITU1.GRA = 0; return 0; } --------------------------------------------- というソースをコンパイルすると以下のような warning がでます。 $ h8300-hms-gcc -mh -save-temps int_timer.c int_timer.s: Assembler messages: int_timer.s:13: Warning: operand @0xffff74 out of range. アセンブラの警告なので、アセンブラソースを見てみました。 _main: 10 push.l er6 11 mov.l er7,er6 12 sub.w r2,r2 13 mov.w r2,@16777076:16 <---- ここ! 14 sub.w r0,r0 15 pop.l er6 16 rts @16777076:16 が @16777076:8 ならば warning がでないと思うのですが、 どうすればそのような制御ができるでしょうか? # なぜそう思うかというと、ITU1.TCR.BYTE,ITU1.TIER.BYTE などに # アクセスするコードが :8 となっており、warning が出ているのは # 上記の :16 のところだけだからです コンパイラオプションに -Wl,-relax を指定してみたのですが、変化は ありませんでした。 どなたか対処法をご存じの方がいらっしゃれば、教えていただけると幸いです。 CPU:H8/3048BF(YellowSoft YH3048-3) compiler: h8300-hms-gcc 3.0.3