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

2012-05-01から1ヶ月間の記事一覧

第6回 コンパイラ実装会

みんなでコンパイラの実装に挑戦する勉強会です。バイナリいじりの基礎から始めて、実行ファイルを自前のコンパイラで作って動かすことを目標にします。コンパイラをきっかけにして、各種マシンコードやOSのメモリ管理について理解を深めるのが狙いです。 20…

JITで関数呼び出し

第4回 コンパイラ実装会で出た質問です。※ 例は32bit Windows限定のコードです。【追記】Python版は以下を参照してください。 PythonによるJITで関数呼び出し 相対アドレス i386のcall命令は相対アドレスで指定するため、JITで呼ぼうとすると少し苦労します…

Brainf*ckでループ展開

第3回 コンパイラ実装会で@uho_iiotokoさんがBrainf*ckのトランスレータを実装されているとき、ちょっと面白いことが起きました。元はC言語で実装されたBrainf*ckからアセンブラへのトランスレータです。トランスレート対象がC言語でも同じ結果となるため、P…

CFunctionTypeから関数ポインタを取り出す

Pythonでは関数のアドレスを指定して呼び出せます。以下の例は適当なアドレスなので、呼び出してもエラーになります。 >>> from ctypes import * >>> f = CFUNCTYPE(None)(0x1234) >>> f() Traceback (most recent call last): File "<stdin>", line 1, in <module> Windows</module></stdin>…

Windows x64用のクロスgcc

Windows x64用のクロスgccをビルドしました。MSYSで作業しましたが、他のUNIX系OSでも同じ手順が使えるはずです。 GCC for both x64 & x86 Windows! - MinGW-w64http://mingw-w64.sourceforge.net/ 今回はmultilibを使用せずにx64専用とします。gccが依存す…

Windows NT/Alpha用のクロスgcc

32bitのAlphaのコードがどのようなものか見たくなり、Windows NT/Alpha用のクロスgccをビルドしてみました。ビルドに成功したのはgcc-3.0.4です。binutilsはビルドできるバージョンが見つからなかったため、PEバイナリは出力できません。gcc -Sでアセンブリ…

MSYSでGtk#をビルド

MSYSでのGTK+のビルドと、コマンドライン引数の問題が解決したので、ようやくGtk#のビルドに成功しました。 MSYSでGTK+をビルド (2)http://7shi.hateblo.jp/entry/2012/05/02/120012 MSYSでGTK+をビルド (3)http://7shi.hateblo.jp/entry/2012/05/06/110555 …

MSYSでGTK+をビルド (3)

先日、MSYSでGTK+ 2.24.10をビルドしました。 MSYSでGTK+をビルド (2)http://7shi.hateblo.jp/entry/2012/05/02/120012 このままでもGtk#のビルドはできますが、Gtk#のバイナリ配布物(GTK# for .NET 2.12.10)に含まれるのはGTK+ 2.16.6です。バージョンを…

MSYSのPOSIX互換レイヤをビルド

前回、MSYSのPOSIX互換レイヤをバイナリインストールして利用する方法を取り上げました。 MSYSのPOSIX互換レイヤと引数http://7shi.hateblo.jp/entry/2012/05/05/220750 今回はソースからビルドする方法です。互換レイヤを利用するだけならビルドは不要です…

MSYSのPOSIX互換レイヤと引数

MSYSのコマンド群はPOSIX互換レイヤで動いています。Cygwinから派生したGPLのライブラリで、実体は以下にあります。 /bin/msys-1.0.dll MSYSと一緒に配布されているgcc(MinGW)の出力は互換レイヤを使用しません。通常のWin32バイナリです。この挙動はCygwin…

MSYSでGTK+をビルド (2)

MSYSでGTK+をビルドする手順をまとめました。ビルド後のパッケージ一覧は前回の記事を参照してください。 MSYSでGTK+をビルド (1)http://7shi.hateblo.jp/entry/2012/04/30/181459 ビルドには非常に時間と手間が掛かります。自分でビルドしなくても本家でWin…