我需要在使用 Visual Stdio 2005 编译的项目中使用 popcnt 指令
。内在函数__popcnt()
仅适用于 VS2008,即使我在__asm {}
块中编写,编译器似乎也无法识别该指令。
有没有办法做到这一点?
我需要在使用 Visual Stdio 2005 编译的项目中使用 popcnt 指令
。内在函数__popcnt()
仅适用于 VS2008,即使我在__asm {}
块中编写,编译器似乎也无法识别该指令。
有没有办法做到这一点?
好的,这是一个疯狂的猜测,但是……假设您已经像这样设置 VS2005来执行汇编语言,那么您可以从 Intel 获得SSE4.1 手册并为每个 SSE4.1 操作码编写一个宏您需要根据masm32.com 上的此线程(讨论 SSE2 的类似问题。)
例如,下面是从 masm32 链接下载的一些代码:
;SSE2 macros for MASM 6.14 by daydreamer aka Magnus Svensson
ADDPD MACRO M1,M2
db 066h
ADDPS M1,M2
ENDM
ADDSD MACRO M1,M2
DB 0F2H
ADDPS M1,M2
ENDM
作为一个小提示,您可以使用 __emit 将字节放入 VC++ 中的 __asm 块中。在很多情况下,这比与 masm 生成的对象链接要容易。我过去在 SSE3 是新的时候使用过这个(并且 VS 2003 不支持操作码)。
所有操作码都由 Intel 详细记录。