[t:/]$ 지식_

gcc, bit rotate

2017/07/11

https://godbolt.org/g/gna8XO

인텔이라면 MSC만 빼면 결국 컴파일러 최적화에 따라 대동소이한 어셈 코드가 나온다.

명시적이라면 링크에 있는 다음 코드를 쓰는 것이 좀 더 직관적이다.

#if !defined(__clang__) && (defined(__x86_64__) || defined(__i386__))

#ifdef __MSC_VER
#include <intrin.h>
#else
#include <x86intrin.h>  // Not just <immintrin.h> for compilers other than icc
#endif

rotwidth_t rotl_x86_intrinsic(rotwidth_t x, unsigned n) {
  //return __builtin_ia32_rorhi(x, 7);  // 16-bit rotate, GNU C
  return _rotl(x, n);  // gcc, icc, msvc.  Intel-defined.  Clang doesn't have this?
  //return __rold(x, n);  // gcc, icc.
  // can't find anything for clang?
}
#endif

비트 시프트가 생각보다 중요한 세상이 되었다.

왜?

비밀..









[t:/] is not "technology - root". dawnsea, rss