どもども、神戸の澤です。 ようやく、秋月時代のコードが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/ ## ## ## ## すべてのメールはバカ者によって盗聴されている可能性があります ##