2008-12-11 3 views
3

мне нужно использовать инструкцию POPCNT в проекте, который составляется с использованием Визуальное STDIO 2005
Характеристическая __popcnt() работает только с VS2008 и компилятор, кажется, не распознает команду, даже когда я пишу в __asm {} блоке.Инструкции SSE4 в VS2005?

Есть ли способ сделать это?

ответ

3

Хорошо, это дикое предположение, но ... если вы настроили VS2005 как this, чтобы сделать ассемблерный язык, тогда вы можете получить у Intel SSE4.1 manual и запрограммировать макрос для каждого SSE4.1 опкод, что вам нужно, как в этом thread на masm32.com (. где обсуждается аналогичный вопрос WRT 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 
2

В качестве небольшой заметки вы можете использовать __emit для посылки байтов в блоки __asm ​​в VC++. Это проще во многих случаях, чем соединение с создаваемыми masm объектами. Я использовал это в прошлом, когда SSE3 был новым (и коды операций не поддерживались в VS 2003).

Все коды операций: well documented by Intel.