どもども、神戸の澤です。
ようやく、秋月時代のコードがgccの上で動作し始めました。が、一つだけど
うにも引っかかる事があります。
結局最後に残った問題は、以下のソースのコンパイル結果でした。
for (; gDMem.SendLength != 0; )
;
ここで、gDMemはグローバル変数でありしかも数十バイトもある構造体です。
つまり基本的に確実にメモリ上に割り付けられる存在です。これをこのままコ
ンパイルすると、こんなコードになってしまってました。
946: mov.l @0xf7a0:32,er0
0000094e <.L108>:
94e: mov.l er0,er0
950: bne .-4 (94e)
もう、まったくもってダメダメです。これでは永遠にこのループから脱出でき
ません。
で、このSendLengthというメンバー変数にvolatileを付けたところ、以下のよ
うなコードを吐きました。
00000946 <.L108>:
946: mov.l @0xf7a0:32,er2
94e: bne .-10 (946)
もちろん、これが正解です。しかし、volatileを付けないとあんなコードにな
ってしまうのって正しいんでしょうかねぇ。うーーむ......
--
## from Kazutaka 'Zak' Sawa (ZakLab) ##
## e-Mail: mailto:zak.k.sawa@xxxxxxxxx ##
## http://homepage1.nifty.com/~zaklab/ ##
## ##
## すべてのメールはバカ者によって盗聴されている可能性があります ##