Windowsプログラミング
アルゴリズム Vitual C++ 2008/2013によるWin32/Win64 APIレベルのプログラム 基礎 Vitual C++ 2008/2013によるAPIレベルのプログラム(32/64bit) Wix3でインストーラーを作る Visual C++ 2008 Standard Editonによるフォームアプリケーションのプログラム(32/64bit) Vitual C++ 2008 Standard EditonによるAPIレベルのプログラム(32/64bit) Windows 7対応 Visual C++ 2008 ExpressによるAPIレベルのプログラム Visual C++ 2005 ExpressによるAPIレベルのプログラム Visual C++ Versiosn 5 BORLAND C++ Windowsプログラム全般 Excel VBA その他
概要
XMMレジスタの表記
倍精度
名称 | 127~64ビット | 63~0ビット |
---|---|---|
XMMn | XMMnDH | XMMnDL |
単精度
名称 | 127~96ビット | 95~64ビット | 63~32ビット | 31~0ビット |
---|---|---|---|---|
XMMn | XMMn3 | XMMn2 | XMMn1 | XMMn0 |
スカラー系の命令
1度に1個のデータを扱う命令です。対象となるデータはXMMレジスタの下位となります。基本的には、XMMレジスタの上位は変化しませんが movs系の命令のみ上位データーは0クリアされます。
名称 | 名称 | データー | 動作 | C |
---|---|---|---|---|
移動 | movsd XMMd,XMMs | 倍精度 | XMMdH←0 , XMMdL←XMMsL | |
減算 | subsd XMMd,XMMs | 倍精度 | XMMdH←XMMdH , XMMdL←XMMdL-XMMdL | |
除算 | divsd XMMd,XMMs | 倍精度 | XMMdH←XMMdH , XMMdL←XMMdL/XMMdL | |
変換 | cvtsi2sd XMMd,r32/mem32 | 倍精度 | XMMdH←XMMdH , XMMdL←r32/mem32を浮動小数点に変換 |
パック系の命令
1度に複数のデータを扱う命令です。
名称 | 名称 | データー | 動作 | C |
---|---|---|---|---|
加算 | addpd XMMd,XMMs | 倍精度*2 | XMMdH←XMMdH+XMMsH , XMMdL←XMMdL+XMMdL | |
減算 | subpd XMMd,XMMs | 倍精度*2 | XMMdH←XMMdH-XMMsH , XMMdL←XMMdL-XMMdL | |
排他的論理和 | xorpd XMMd,XMMs | 倍精度*2 | XMMdH←XMMdH xor XMMsH , XMMdL←XMMdL xor XMMdL | |
シャッフル | shufps XMMd,XMMs,imm8 | 倍精度*2 | XMMdH←{imm8の0ビット目が0の場合はxmmdLが1の場合はxmmdH} XMMdL←{imm8の1ビット目が0の場合はxmmsLが1の場合はxmmsH} |
パック系のAVX命令
1度に複数のデータを扱う命令です。
名称 | 名称 | データー | 動作 | C |
---|---|---|---|---|
シャッフル | vshufps YMMd,XMMs1,YMMs2,imm8 | 単精度*8 | XMMdH←{imm8の0ビット目が0の場合はxmmdLが1の場合はxmmdH} XMMdL←{imm8の1ビット目が0の場合はxmmsLが1の場合はxmmsH} |
|
ブレンド | vblendps YMMd,XMMs1,YMMs2,imm8 | 単精度*8 | YMMdF0←{imm8の0ビット目が0の場合はYMMs1F0が1の場合はYMMs2F0} YMMdF1←{imm8の1ビット目が0の場合はYMMs1F1が1の場合はYMMs2F1} YMMdF2←{imm8の2ビット目が0の場合はYMMs1F2が1の場合はYMMs2F2} YMMdF3←{imm8の3ビット目が0の場合はYMMs1F3が1の場合はYMMs2F3} YMMdF4←{imm8の4ビット目が0の場合はYMMs1F4が1の場合はYMMs2F4} YMMdF5←{imm8の5ビット目が0の場合はYMMs1F5が1の場合はYMMs2F5} YMMdF6←{imm8の6ビット目が0の場合はYMMs1F6が1の場合はYMMs2F6} YMMdF7←{imm8の7ビット目が0の場合はYMMs1F7が1の場合はYMMs2F7} |
|
抽出 | VEXTRACTF128 XMMd,YMMs,imm1 | 128bit | imm1が1の場合の場合、XMMd←YMMsH imm1が0の場合の場合、XMMd←YMMsL |
|
挿入 | Vinsertf128 YMMd,YMMs1,XMMs2,imm1 | 128bit*2 | imm1が1の場合の場合、YMMdH←XMMs2,YMMdL←YMMs1L imm1が0の場合の場合、YMMdH←YMMs1H,YMMdL←XMMs2L |
|
条件付き移動 | vmaskmovps YMMd,YMMs,m256 | 単精度*8 | YMMdF0←{YMMsF0の31ビット目が0の場合は0 1の場合は,mem256F0} YMMdF1←{YMMsF1の31ビット目が0の場合は0 1の場合は,mem256F1} YMMdF2←{YMMsF2の31ビット目が0の場合は0 1の場合は,mem256F2} YMMdF3←{YMMsF3の31ビット目が0の場合は0 1の場合は,mem256F3} YMMdF4←{YMMsF4の31ビット目が0の場合は0 1の場合は,mem256F4} YMMdF5←{YMMsF5の31ビット目が0の場合は0 1の場合は,mem256F5} YMMdF6←{YMMsF6の31ビット目が0の場合は0 1の場合は,mem256F6} YMMdF7←{YMMsF7の31ビット目が0の場合は0 1の場合は,mem256F7} |
|
型変換 単精度→DWORD |
vcvtps2dq YMMd,YMMs | DWORD*8 | DWORDが8個格納されているYMMsを単精度 8個に変換してYMMdに格納 |
Copyright (C) 2012 山本ワールド All Rights Reserved.