如何将asm代码移植到VS 2008

时间:2012-04-29 18:37:13

标签: visual-studio x86 inline-assembly

以下代码应该适用于Linux。我想将以下代码移植到Visual Studio 2008,但我对asm代码不是很熟悉。你可以帮帮我吗?

#include <stdint.h>
static inline uint32_t log2(const uint32_t x) {
   uint32_t y;
   asm ( "\tbsr %1, %0\n"
     : "=r"(y)
     : "r" (x)
    );
    return y;
}

1 个答案:

答案 0 :(得分:2)

GCC使用AT&T syntax。 MSVC使用Intel语法。该函数看起来像这样(使用MSVC 2010 / 16.00.40219.01编译,但我认为没有理由在2008年失败):

static inline uint32_t log2(const uint32_t x) {
  uint32_t y;
  __asm {
    bsr eax, x
    mov y, eax
  }
  return y;
}