HAMLOG50.DLLからのエラーでは、コンパイラの最適化によりmemcpy関数
からエラーが出ているような気がしまして、気のせいかもしれません
けど、memcpy()をまったく使わないようにしてみました。
メモリブロックをコピーする関数です。
DOS版のときは、Cのソースコードにアセンブラのストリング命令を
入れて、一気にコピーしていたのですが・・・
asm sub si, ax
asm sub di, ax
asm shr cx, 1
asm rep movsw ・・・みたいな・・・
今の32ビットコンパイラでは、別途アセンブラを用意しなければ
ならないので、インラインアセンブラが使えません。
そこで、DWORDにキャストして4バイトずつコピーしてやれば少し速い
かなぁーなんて。 次のように・・・
void __fastcall StrLCopy(char *dest, const char *src, int Count)
{ while (Count >= sizeof(DWORD))
{ *(DWORD *)dest = *(DWORD *)src; // 4バイトコピー
dest += sizeof(DWORD);
src += sizeof(DWORD);
Count -= sizeof(DWORD);
}
while (Count > 0) { // 残り3バイト以下
*dest++ = *src++;
Count--;
}
*dest = (char)0x00;}
結果、一億回ほどループさせて呼び出してみると、少し速いような気が
しました。
ま、エラーが出なくなれば、それでよろし。
http://hamlog.no.coocan.jp/mou/index.html以上、晩酌プログラミングでした。Hi