PE勉強会(6) ARM編

PE勉強会(6)ARM編関連のつぶやきです。
1

準備

七誌 @7shi

やっと休み。PE-ARM勉強会を告知する前に、やり残したPE-MIPS勉強会の資料を書き直している。新幹線の中で F# のコードを書いて、x86のEXEが出力できるようになった。 https://t.co/YOih9939 MIPSとARMに対応させなければ・・・

2011-12-28 20:28:45
七誌 @7shi

はてなブログに投稿しました 最終回 PE勉強会 ARM編 - 七誌の開発日記 http://t.co/LbYY59VI

2011-12-31 14:18:58
七誌 @7shi

ARMのリファレンスを眺めている。命令フォーマットが結構複雑・・・

2012-01-03 01:39:55
七誌 @7shi

昨日は朝からバタバタだったけど、やっと落ち着いた。ARMの命令セットにどこから切り込もうか悩んでいたけど、とりあえず必要とする命令は少ないので、v4の命令だけを対象にやってみよう。

2012-01-04 02:08:14
七誌 @7shi

CeGCCのフォークを発見。最近更新されている。 http://t.co/MkWc1w7j PE勉強会ARM編ではこちらを使うことにしよう。 http://t.co/2T5YUzg9 #peben

2012-01-04 12:14:35
七誌 @7shi

CeGCCをMinGWでビルドした。用意されたスクリプトでビルドするとエラーになって、調べたらMinGWはサポート外で対応を断られていた。 http://t.co/jGZfsxzD スクリプトではなく手動でビルドしたら普通にできた。時間が掛かるしバイナリの使用を推奨しよう。

2012-01-05 00:22:01
七誌 @7shi

MinGWでビルドしたCeGCC(4.6.2)のバイナリです。 http://t.co/QRhXMlBN PE勉強会ARM編の会場でも配布します。Windows以外の方はビルドが必要です。 http://t.co/2T5YUzg9 #peben

2012-01-05 01:19:53
七誌 @7shi

CeGCCのビルドスクリプトがMSYSでうまくいかない原因が分かった。configureを絶対パスで呼んでいたからだ。MSYSだとビルド中に呼ばれる生成ツールがWindowsパスを見るので、相対パスじゃないとうまくいかない。

2012-01-08 16:44:23
七誌 @7shi

cegccでbinutilsがコンパイルできた。動くかどうか試してないけど。

2012-01-09 12:48:03
七誌 @7shi

binutilsの次はgccに挑戦。最新版を試してみたいので、gmpをコンパイル中。アセンブラで引っ掛かる。Thumbじゃないからかと思って bx r14 を mov pc, lr に書き換えると、今度はアラインメントでエラー。

2012-01-09 13:40:29
七誌 @7shi

適当にパッチを書いてgmpがcegccでビルドできた。これで良いのかあまり自信がないけど。 https://t.co/mSZtaB6d

2012-01-10 06:32:57
七誌 @7shi

gcc-4.6.2もcegccでビルドできた。libibertyを少し手直ししただけで割とすんなり通った。これでCEでもセルフ開発できるかな?会社から帰ったら実機を引っ張り出して確認しよう。既に存在するPocket GCCで良いとは思うけど、興味本位でビルドしてみた。

2012-01-10 06:39:37
七誌 @7shi

やっとARM実機でcegccの出力したバイナリの動作確認が取れた。arm-mingw32ceは完璧。eVCで頑張らなくても良さそう。arm-cegccはダメ。printfだけのハローワールドすら落ちる。自分でビルドしたgccでセルフ開発はできなかった・・・

2012-01-16 01:33:46
七誌 @7shi

今週の土曜日に池袋でPE勉強会の最終回ARM編を開催します。 http://t.co/2T5YUzg9 CEを使いますが、ARM版Win8を見越した企画のつもりです。ARMよりMIPSが良いという方にはNT4を用意できますので、その旨を事前に教えてください。 #peben

2012-01-16 22:53:05

当日

七誌 @7shi

徹夜でARM編( http://t.co/2T5YUzg9 )の資料を作成中。MIPS編ではインストールやgccのビルドで手一杯になって、MIPSそのものの説明がほとんどできなかったのを反省して、ARMの命令セットと触れ合う内容を中心にするつもり。 #peben

2012-01-21 07:52:22
フランドン畜舎内 ヨークシャイヤ @furandon_pig

PC-BSD9+Wineの環境でtest1.cをコンパイル。この環境ではarm-mingw32ce-gccに加えLibiconv for Windowsからlibiconv2.dllが必要。また、main()と同じ引数で__gccmain()を定義しておく必要あり。 #peben

2012-01-21 16:12:52
フランドン畜舎内 ヨークシャイヤ @furandon_pig

それから、Libiconv for Windowsのlibiconv2.dllはlibiconv-2.dllにリネームの必要あり。これはarm-mingw32ce-gcc.exeがlibiconv-2.dllという名前で参照しているため。 #peben

2012-01-21 16:16:04
フランドン畜舎内 ヨークシャイヤ @furandon_pig

gccへの--disable-nlsでlibiconv-2.dllを参照しなくなるかと思ったが、このオプションはgccのコンパイル時に指定するもので、test1.cのコンパイルで指定しても意味をなさないようだ。 #peben

2012-01-21 16:18:39
Horimatsu Takuya @horitaku1124

windows mobile用の実行ファイルを作るにはarm gccが必要で、arm gccを使うにはarm gccをコンパイルする必要があって(以下略

2012-01-21 16:23:52