【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

odcctoolsの修正 (2)

前回、ようやくodcctoolsのアセンブラが動くようになりましたが、odcctoolsに手を出すようになった経緯を書きます。

Mach-Oのことは何も知らないので、まずはクロスコンパイラで遊んでみようと思いました。しかしGNU binutilsがMach-Oをうまく処理できないようです。調べたところApple独自のcctoolsを使用していることが分かりました。

autotools化されたodcctoolsを試しましたが、MSYSではすんなりビルドできそうにありません。クロスコンパイラのテスト用に環境構築していたNetBSDで試すことにしました。


どうにかビルドは通りましたが、まともに動きません。このときは移植に失敗したかと思って諦めました。

Mac OS Xgccは-masm=intelを受け付けないため、てっきりIntel記法をサポートしていないと勘違いしました。

後日確認したところ、アセンブラIntel記法を受け付けることが分かりました。

調子に乗って第5回 コンパイラ実装会でBrainf*ckのトランスレータIntel記法で出力したところバグが発覚しました。

アセンブラだけならMSYSでも何とかなりそうなので合間に試していましたが、どうにかビルドが通りました。NetBSDのときと同じエラーで起動しませんでしたが、これにより移植の失敗ではなく元々あったバグなのではないかと気付き、どうにかパッチを作って起動しました。

起動した結果、Mac OS Xのときと同じバグが再現できたので、ようやくそのバグの調査に取り掛かれそうだというのが現状です。