タグ

ブックマーク / libc.blog47.fc2.com (1)

  • 標準Cライブラリの実装 memcpy関数

    前回のstrxfrm関数で使ってしまった関係上、今回は急遽memcpy関数を取り上げることにしました。こういう単純関数ほど、工夫する価値が結構あったりします。今回もアセンブリ言語を使う一歩手前まで最適化してみたいと思います。 この類の関数は、ループの中をどれだけ軽量化できるか、あるいはループの回数をどれだけ減らせるかが鍵になります。まずは素直な実装からです。 #include <string.h> void *memcpy(void * __restrict__ s1, const void * __restrict__ s2, size_t n) { register char *ss1; register const char *ss2; for (ss1 = s1, ss2 = s2; n != 0; n--) *ss1++ = *ss2++; return s1; } やっているこ

    tettsyun
    tettsyun 2010/09/05
  • 1