3

Visual Stdio 2005 を使用してコンパイルされたプロジェクトで popcnt 命令を使用する必要があります
。組み込み関数は VS2008 でのみ機能し、ブロック__popcnt()に記述してもコンパイラは命令を認識しないようです。__asm {}

これを行う方法はありますか?

4

2 に答える 2

3

さて、これは大げさな推測ですが...アセンブリ言語を実行するためにこのようにVS2005を設定したと仮定すると、IntelからSSE4.1マニュアルを入手し、各SSE4.1オペコードのマクロをコーディングできます。 masm32.comのこのスレッド(SSE2と同様の問題について説明しています)に従って必要なものです。

たとえば、masm32リンクからのダウンロードの1つからのコードを次に示します。

;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 に答える