VBA
VBAでJITから文字出力するため、Debug.Printのラッパーを定義してコールバックさせてみました。ラッパーのアドレスを引数で渡しています。簡単に見えますが、結構ハマりました。 pushでespがずれたのを忘れて[esp+8]で引数を取ろうとした。 PutCharの引数にB…
VBAでJITをしてみました。 生成したマシン語を直接呼び出すことができないため、EnumWindows()のコールバックとして呼び出しています。 コールバックには1つだけ引数を指定できます。配列のポインタを渡して、その配列で引数と戻り値をやり取りしています。 …
DLLの関数からVBAにコールバックさせて、ANSIとUnicodeの文字列を受け取ってみました。引数を手動でマーシャリングしています。ANSI文字列はByte配列に入れてStrConv()で変換、Unicode文字列はStrPtr()で取得したバッファにコピーしています。ちなみに文字列…
以前、Deflateの圧縮アルゴリズムを変えながらヒッパルコス星表の圧縮時間を計測しました。 http://7shi.hateblo.jp/entry/2012/01/24/043700 最低圧縮率の方式はVBAへの移植を考えて実装しました。そこで今回、実際にVBAに移植しました。結論から言うとイン…