斧にある64bit版プラグインって、intrinsicに書き直してビルドしてる?
>>109 使ってるのはIntelのコンパイラだからインラインアセンブラに手を加えてる。
詳しくはソースも一緒だからそっち見てもらうとして、
#if !defined(_WIN64)
rax eax
rsi esi
#else
rax rax
rsi rsi
#endif
mov eax, offset
mov rsi, src_ptr
movdqu xmm0, [rsi+rax]
という感じで書き換えてる。
マクロにしてるのはなるべく32bitと共用化するためと、Visual Studioでは色が変わって見やすいから。
正規表現のパターン置換で、e([abcd]x|si|di|bp)をr\1(VSではr$1)にコードの流れを見ながら順次処理すると楽。
ICLだとかなり効率的に64bit化できる(手こずってるのもあるけど)ので、
この方法はAviutilの64bit化にもつかえそうだなぁ。
あと、64bitレジスタと32bitのメモリオペランドの演算ができないので、32bitでは使われていない
r8(r8d)〜r15を使って(この部分は#ifで場合分け。64bitでは32bitのpush、popが使えないのでこれも)
add rsi, pitch
↓
mov r8d, pitch
…
add rsi, r8
他には、__declspec(naked)使ってる関数は__declspec()とret削除しないといけないとか、
レジスタ置換マクロ入れ忘れててもコンパイルエラーにならないとかハマる部分に注意。