前回、ようやくodcctoolsのアセンブラが動くようになりましたが、odcctoolsに手を出すようになった経緯を書きます。
Mach-Oのことは何も知らないので、まずはクロスコンパイラで遊んでみようと思いました。しかしGNU binutilsがMach-Oをうまく処理できないようです。調べたところApple独自のcctoolsを使用していることが分かりました。
autotools化されたodcctoolsを試しましたが、MSYSではすんなりビルドできそうにありません。クロスコンパイラのテスト用に環境構築していたNetBSDで試すことにしました。
OpenBSDの事例を参考にNetBSDでもビルド成功!動作は未確認。 < odcctools on OpenBSD 4.6 - anon_193 the BottomCoder (id:anon_193) URL
この前試してたodcctoolsは、コンパイルだけ通ったけどまともに動かなかった。時間があるときにでも本家に挑戦するしかないかな・・・
どうにかビルドは通りましたが、まともに動きません。このときは移植に失敗したかと思って諦めました。
Mac OS Xのgccは-masm=intelを受け付けないため、てっきりIntel記法をサポートしていないと勘違いしました。
後日確認したところ、アセンブラはIntel記法を受け付けることが分かりました。
調子に乗って第5回 コンパイラ実装会でBrainf*ckのトランスレータをIntel記法で出力したところバグが発覚しました。
アセンブラだけならMSYSでも何とかなりそうなので合間に試していましたが、どうにかビルドが通りました。NetBSDのときと同じエラーで起動しませんでしたが、これにより移植の失敗ではなく元々あったバグなのではないかと気付き、どうにかパッチを作って起動しました。
起動した結果、Mac OS Xのときと同じバグが再現できたので、ようやくそのバグの調査に取り掛かれそうだというのが現状です。
どうにかMach-Oの門はこじ開けたけど、まだ先は長い。クロスコンパイルしようとしているのは、Macを持っていないし買う予定もないから・・・