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

2012-01-01から1年間の記事一覧

コールバックで文字列を受け取る

VBA

DLLの関数からVBAにコールバックさせて、ANSIとUnicodeの文字列を受け取ってみました。引数を手動でマーシャリングしています。ANSI文字列はByte配列に入れてStrConv()で変換、Unicode文字列はStrPtr()で取得したバッファにコピーしています。ちなみに文字列…

第5回 コンパイラ実装会

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

色々な言語でDeflate

以前、Deflateの圧縮アルゴリズムを変えながらヒッパルコス星表の圧縮時間を計測しました。 http://7shi.hateblo.jp/entry/2012/01/24/043700 最低圧縮率の方式はVBAへの移植を考えて実装しました。そこで今回、実際にVBAに移植しました。結論から言うとイン…

第4回 コンパイラ実装会

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

Brainf*ckトランスレータ (5) 位置独立コード

前回に引き続きBrainf*ckのトランスレータを見ていきます。 まとめ: 実装例: https://github.com/mason-/cmpimpl/blob/master/python/bftran.py Mac OS Xではデフォルトで位置独立コード(PIC)が要求されます。プログラムがどのアドレスにロードされるか決…

Brainf*ckトランスレータ (4) ループ

前回に引き続きBrainf*ckのトランスレータを見ていきます。 まとめ: 実装例: https://github.com/mason-/cmpimpl/blob/master/python/bftran.py Brainf*ckでは変数の指すメモリの中身が0以外の間だけ回るループがあります。 # while (*(char *)esi) { ... } …

Brainf*ckトランスレータ (3) 変数とメモリ

前回に引き続きBrainf*ckのトランスレータを見ていきます。 まとめ: 実装例: https://github.com/mason-/cmpimpl/blob/master/python/bftran.py Brainf*ckには変数が1つあります。トランスレータではこれをレジスタに割り当てます。ABIにより関数呼び出しで…

Brainf*ckトランスレータ (2) 呼び出し規約

前回に引き続きBrainf*ckのトランスレータを見ていきます。 まとめ: 実装例: https://github.com/mason-/cmpimpl/blob/master/python/bftran.py 今回のトランスレータでは、OSごとの差異を吸収するためシステムコールを直接呼ばずにlibcを呼びます。以下に呼…

Brainf*ckトランスレータ (1) はじめに

第3回 コンパイラ実装会でざっくりとx86アセンブリのトランスレータについて説明しました。資料は特に用意せずに即席で説明したため、いくつか不備な点がありました。 64bit シンボル名のプレフィックス 記法 具体的なコードについて取り上げる前に、これら…

第3回 コンパイラ実装会

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

Mac OS Xでクロスコンパイラ

【注】gccが入っているのはDeveloper Tools 4.1までです(参考)。4.2以降には入っていないため(参考)、別途gccを入手する必要があります。(Mac OS Xを所有していないため、適切な入手先はわかりません)知人に環境を借りてMac OS X Lion(10.7.2)でクロ…

Deflate圧縮の効率

ZIP

以前、F#でDeflateアルゴリズムの圧縮・展開プログラムを作りました。 http://d.hatena.ne.jp/n7shi/20101004/ 先日のZIP実装会 Part.018でよやさんと圧縮についてお話させていただき、ハッシュについて実験していたことを思い出しました。せっかく実験した…

C言語によるオブジェクト指向勉強会

C言語によるオブジェクト指向の実装をC++と比較しながら、オブジェクト指向の実装方法について理解を深める勉強会です。独自言語に組み込むことを想定した説明ですが、今回は独自言語の作成には踏み込みません。 2012年2月18日(土) 午後1時~6時 マイ・ス…

第2回 コンパイラ実装会

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

最終回 PE勉強会 ARM編 完了報告

以前告知した最終回 PE勉強会 ARM編が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: サンプル: https://bitbucket.org/7shi/peben/downloads (06-20120121) Togetter まとめ: http://togetter.com/li/216932 PEの枠組み、エミュレータやク…