桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

汗る

何故だか作業の本筋を離れてしまって汗っていた。高速なmemcpyを追い求めて、VC++インラインアセンブラベースの実装から、GCCインラインアセンブラへの変換を試みる。が結局断念。難しいっす。
MMX/SSE/SSE2に触れる作業はやった事があるので、アドレスのアラインメントやMMXレジスタクリア等は把握しているつもり。結局色々解説サイトを調べていたら、そんなつもりはなかったが koders に行き着いてしまった。

xine - a free video player [GPL]
http://sf.net/projects/xine

xine‑lib/src/xine‑utils/memcpy.c
http://www.koders.com/c/fidEEEEB3AF7A026FBE46B7D5D7C8059EBFE0E7D4B6.aspx

GCCインラインアセンブラソースコードだが自分が思っていたもの以上の良い出来だと思う。今回のプロジェクトはオープンソースを流用する事に特に制限はないので利用する事にした。
ベンチマーク結果も申し分無し。330[MB]コピーするのに20[msec]。memcpyを使う場合の半分程度だった。