3

我需要在使用 Visual Stdio 2005 编译的项目中使用 popcnt 指令
。内在函数__popcnt()仅适用于 VS2008,即使我在__asm {}块中编写,编译器似乎也无法识别该指令。

有没有办法做到这一点?

4

2 回答 2

3

好的,这是一个疯狂的猜测,但是……假设您已经像这样设置 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
于 2008-12-12T01:45:49.020 回答
2

作为一个小提示,您可以使用 __emit 将字节放入 VC++ 中的 __asm 块中。在很多情况下,这比与 masm 生成的对象链接要容易。我过去在 SSE3 是新的时候使用过这个(并且 VS 2003 不支持操作码)。

所有操作码都由 Intel 详细记录

于 2009-02-03T12:19:16.890 回答