共用方式為


OPTION AVXENCODING

選取AVX指示的慣用編碼方式。

語法

OPTION AVXENCODING:偏好

背景

Intel AVX 和 AVX-512 指令的編碼方式與其他 Intel 架構指示不同。 它們不使用依賴指令前置詞位元組和opcode前置位元組來選取指令,而是使用單一多位元組前置詞。 此前置詞可以編碼額外的緩存器操作數。 在 64 位模式中,它也具有位來選取其他操作數的 8 到 15 快存器,而且不需要 REX 前置詞。

使用三個不同的多位元組前置詞。 AVX 指令可以使用 3 位元組 VEX 前置詞進行編碼,其中第二個和第三個字節有助於選取執行的特定作業。 如果 3 位元組 VEX 前置詞中的某些欄位具有特定值,則可以改用 2 位元組形式的 VEX 前置詞。 最後,某些 AVX 指令也有 AVX-512 格式,其編碼為 4 位元組的 EVEX 前置詞。 EVEX 前置詞有額外的字段,可選取 512 位向量長度,以及 AVX-512 指示特有的其他選項。

由於某些 AVX 指示可能以三種不同的方式編碼,因此有規則可選取要使用的表單。 指示 OPTION AVXENCODING 詞是用來選取要使用的規則集。

喜好設定

偏好 編碼喜好設定優先順序
PREFER_FIRST 可能的話,請使用第一個定義的窗體。
PREFER_VEX 使用 VEX 喜好設定的編碼來 EVEX 編碼。
PREFER_VEX3 偏好使用3位元組 VEX 編碼進行 EVEX 編碼。
PREFER_EVEX 使用 EVEX 喜好設定的編碼來 VEX 編碼。
NO_EVEX 請勿使用 EVEX進行編碼。

只有在指令未指定指令前置詞窗體時,才會套用AVXENCODING順序。 如果明確編碼指令前置詞,則會優先於 AVXENCODING 選項。 例如,即使OPTION AVXENCODING:no_EVEX已指定 ,evex vpmaddwd也會使用 EVEX-prefixedVPMADDWD

如果元件來源不用來 OPTION AVXENCODING 選取編碼喜好設定, PREFER_FIRST 預設會使用規則。 根據這些規則,新增至 Microsoft 宏組合器 (MASM) 的最早指令編碼具有優先順序,而且在這些可能性中,最好使用最短前置詞格式的編碼方式。 如果稍後新增指令表單,這些規則可確保MASM所組合的程式代碼仍會產生相同的物件程序代碼。

在嘗試使用 EVEX編碼之前,規則PREFER_VEX一律會先嘗試使用 VEX 前置詞進行編碼。 可能的話,會使用的 VEX 2 位元組形式,而不是 3 位元組格式。

PREFER_VEX3喜好設定一律會先嘗試使用 3 位元組VEX前置詞進行編碼,然後再嘗試使用 EVEX進行編碼。 不會使用 2 位元組形式的 VEX

選項 PREFER_EVEX 一律會嘗試使用 EVEX 前置詞進行編碼,而且只有在指令沒有AVX-512窗體時才會嘗試使用 VEX

喜好 NO_EVEX 設定只會嘗試使用 VEX 前置詞進行編碼。 不允許 AVX-512 指令表單。 此選項可讓您組合程式代碼,以在完全沒有AVX-512支援的平臺上使用。

指示 OPTION AVXENCODING 詞可在Visual Studio 2019 16.7版和更新版本中取得。

範例

此範例會使用 VPDPBUSDVPMADDWD 指示來說明選項的運作方式 AVXENCODINGVPDPBUSD 最初定義為只使用 EVEX編碼,之後會以 VEX 編碼形式擴充平臺,而沒有 AVX-512 支援,而 VPMADDWD AVX 又擴充至 AVX-512。 組合範例的清單輸出會顯示變更 AVXENCODING 模式如何影響針對每個指令產生的物件程序代碼。 每個指令的前置詞會以 『/“ 結尾。

 00000000  62 F2 6D 08/ 50        vpdpbusd xmm1, xmm2, xmm3
           CB
 00000006  C5 E9/ F5 CB           vpmaddwd xmm1, xmm2, xmm3

                                  option avxencoding:no_EVEX
 0000000A  C4 E2 69/ 50 CB        vpdpbusd xmm1, xmm2, xmm3
 0000000F  C5 E9/ F5 CB           vpmaddwd xmm1, xmm2, xmm3

                                  option avxencoding:prefer_VEX
 00000013  C4 E2 69/ 50 CB        vpdpbusd xmm1, xmm2, xmm3
 00000018  C5 E9/ F5 CB           vpmaddwd xmm1, xmm2, xmm3

                                  option avxencoding:prefer_VEX3
 0000001C  C4 E2 69/ 50 CB        vpdpbusd xmm1, xmm2, xmm3
 00000021  C4 E1 69/ F5 CB        vpmaddwd xmm1, xmm2, xmm3

                                  option avxencoding:prefer_EVEX
 00000026  62 F2 6D 08/ 50        vpdpbusd xmm1, xmm2, xmm3
           CB
 0000002C  62 F1 6D 08/ F5        vpmaddwd xmm1, xmm2, xmm3
           CB

                                  option avxencoding:prefer_first
 00000032  62 F2 6D 08/ 50        vpdpbusd xmm1, xmm2, xmm3
           CB
 00000038  C5 E9/ F5 CB           vpmaddwd xmm1, xmm2, xmm3

另請參閱

選項 (MASM)
指示詞參考