我需要在使用Visual Stdio 2005编译的项目中使用popcnt指令
内在__popcnt()
仅适用于VS2008,即使我在__asm {}
块中写入,编译器似乎也无法识别该指令。
有没有办法做到这一点?
答案 0 :(得分:3)
好的,这是一个疯狂的猜测但是......假设你已经设置VS2005像this来做汇编语言,那么你可以从英特尔和代码中获得SSE4.1 manual每个SSE4.1操作码的宏,您需要在masm32.com上查看此thread(其中讨论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
答案 1 :(得分:2)
作为一个小注释,您可以使用__emit将字节放入VC ++中的__asm块。在很多情况下,这比使用masm生成的对象链接更容易。我在过去使用过SSE3是新的(并且VS 2003中不支持操作码)。
所有操作码均为well documented by Intel。