[H8-ML(2887)] GCC のアドレッシングモード
From: 松園 敬二 <k-zono@xxxxxxxxxxxxxxxx>
Date: 2003年03月02日(日)23時33分18秒
こんばんは、まつぞの です。

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
スレッド概略
[表示中](起点)


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]