ARM Linux

CodeSourceryからWin32で動くツール類をダウンロードしてNetWalker向けにクロスコンパイル出来るようにした。最初Linux向けでない素のEABIのをダウンロードしてしまって、それで実行ファイルを作ってもSegmentation Faultで動かなくてはまってしまった。単なる arm-none-gnueabiではなくて、arm-none-linux-gnueabiのを使う必要があった。fileコマンドで見てみるとちゃんと動く実行ファイルはLinux向けとなっていた。

あとCodeSourceryが出しているコンパイラだとNEON intrinsics命令の最適化が不十分なようなのでアセンブラに手を出してみた。しかしここでも少しはまってしまった。
http://www.mztn.org/slasm/arm01.html を見て実行ファイルを作ってみたんだけれどSegmentation Faultで動かなかった。どうやら少し記事が古いみたい。
http://www.ibm.com/developerworks/jp/linux/library/l-arm-toolchain/ のサンプルだと問題無く動いた。
http://www.mztn.org/slasm/arm_sys.html 昔のとEABIとではシステムコールの呼び出し規約が変わったみたい。
http://sourceware.org/ml/binutils/2006-03/msg00219.html SWI命令はSVC命令と同じ事みたいで、SVCという名前を使うように決まったみたい。