[リストへもどる]
一括表示
タイトルBCB5ユーザーです。
記事No15
投稿日: 2001/09/17(Mon) 23:55
投稿者あると
IDEでは-a8までしか設定できないので、
もしかすると-a16オプションは「将来のために予約」されているのかも・・・
ところで、出力されたアセンブラコードのどの辺りを見れば
-a16が有効になっていることがわかるのでしょうか?

タイトル BCB5ユーザーです。
記事No16
投稿日: 2001/09/18(Tue) 03:38
投稿者
> IDEでは-a8までしか設定できないので、
> もしかすると-a16オプションは「将来のために予約」されているのかも・・・
> ところで、出力されたアセンブラコードのどの辺りを見れば

bcc の -a ? って C で定義した変数の境界合わせオプションだったと思うので
すが,gogo3 ではアセンブラで定義している変数でも境界合わせをしたいのがた
くさんあります.

何故かというと,C の境界合わせに頼っちゃうと,その機能がない C でうまく
いかなくなるからです.そこで,アセンブラで align 16 とか書いています.
gcc(on Linux), VC, mingw はそれでうまくいくし,be や os2 は gogo3 はまだ
コンパイルできませんが,gogo2 ではアセンブラの align 16 でうまく行きまし
た.でも bcc ではうまくいかないんですよ.

> -a16が有効になっていることがわかるのでしょうか?

map ファイルで見ています.ilink32 で /s /m オプションをつけてコンパイル
をして gogo.map を見ると

> 0002:00004524 _RO
> 0002:00017044 _RW

という内容があるんですが,これ,どっちも16バイト境界にきて欲しいんです.
他にも16バイト境界にきて欲しいデータがそうなっていません.bcc で -a16 を
つけても同じです.実際,SSE ユーザーさんから「BCC でコンパイルすると動か
ない!」などという怒りの声が^^;;