use ASM for non-MSVC compilers