分享方式:


MASM 指令格式

語法

指示會根據下列語法以原始程式碼撰寫:

prefix mnemonic operand-list

如需指令定義、選項和編碼的詳細資訊,請參閱 處理器製造商程式設計手冊 。 Microsoft 巨集群組合器可能不支援某些指示和指示選項。

Prefix

您可以在某些指示前面加上關鍵字,以設定如何編碼指令的選項。 REPREPEREPZREPNE 、 和 REPNZ 關鍵字會搭配字串指令使用,以在單一指令中執行 memcpystrlen 種類的作業。 關鍵字 LOCK 會讓記憶體運算元上的特定作業不可部分完成。 您可以將它與 XACQUIREXRELEASE 關鍵字結合,在支援的處理器上執行硬體鎖定 Elision (HLE),在某些情況下允許更大的交易平行處理原則。

其餘前置詞會控制 AVX 指令的編碼方式。 AVX 指令會使用 VEX 前置詞進行編碼,其會出現在 opcode 之前。 它會取代特定位元組指令前置詞和 opcode 前置位元組。 許多 AVX 指令也是 AVX-512 指令,這些指示是使用 EVEX 支援 更多選項 的前置詞進行編碼。 MASM 會嘗試盡可能精簡地編碼指令,但這些關鍵字允許更充分地控制要搭配特定指令使用的編碼方式。 它們也會用來強制產生對應 AVX-512 指令之後引進的 AVX 指令表單。 例如, vex vpdpbusd 指定指示的 VPDPBUSD AVX-VNNI 形式,而不是 AVX512-VNNI 表單。 當 AVX 指令沒有明確的前置詞關鍵字出現時,選擇的編碼取決於目前的 AVX 編碼設定。 指示 OPTION AVXENCODING 詞可讓您變更此設定。

VEX2VEX3VEXEVEX 選項可在 Visual Studio 2019 16.7 版和更新版本中取得。

關鍵字 使用方式
REP 依照 (E)CX 中的計數重複字串作業。
REPE
REPZ
在比較相等時重複字串作業,但受限於 (E)CX 中的計數。
REPNE
REPNZ
當比較不相等時重複字串作業,但受限於 (E)CX 中的計數。
LOCK 在記憶體運算元上以不可部分完成的方式執行作業。
XACQUIRE 開始 HLE 交易,最常搭配前置詞使用 LOCK
XRELEASE 完成 HLE 交易,最常搭配前置詞使用 LOCK
VEX 使用 VEX 前置詞編碼 AVX 指令。
VEX2 使用 2 位元組 VEX 前置詞編碼 AVX 指令。
VEX3 使用 3 位元組 VEX 前置詞編碼 AVX 指令。
EVEX 使用 EVEX 前置詞編碼 AVX 指令。

記憶

助憶鍵會識別特定指令,該指令會決定允許的前置詞和運算元模式。

運算元清單

大部分的指令都會使用運算元清單來指定指令的明確來源和目的地運算元。 運算元清單可能包含記憶體參考、暫存器和常數值。 每個指令只允許特定類型的運算元出現在運算元清單中的每個位置。 除了 MOVSCMPS 指令之外,只有其中一個運算元可能是記憶體參考;所有其他運算元都必須是緩存參考或常數。

AVX-512 選項

某些 AVX-512 指示允許指定更多選項。 這些選項包括:遮罩、零遮罩、內嵌廣播、內嵌四捨五入,以及例外狀況隱藏。

遮罩 可讓作業只套用至向量選取的專案。 此選項是由將遮罩暫存器置於 {k1}{k7} 目的地運算元之後所控制。 如果遮罩暫存器後面接著 {z} ,則目的地的所有非選取專案都會設定為零。 這個替代方式稱為 零遮罩

內嵌廣播 允許將記憶體中的純量值套用至向量的所有元素。 此選項是藉由將元素大小和 關鍵字 BCST 新增至記憶體運算元來啟用,這類似于 PTR 用於一般記憶體參考的 。

內嵌四捨五入 控制個別浮點指令的進位模式,而不需要設定及重設全域四捨五入模式。 其啟用方式是遵循以大括弧括住的四捨五入模式的指示。 啟用時,它也只會隱藏該指令的所有例外狀況。 不四捨五入的浮點指令也可以使用類似的選項來隱藏所有例外狀況。

  ; Examples of AVX-512 options
  vaddps xmm1 {k1}, xmm2, xmm3            ; merge-masking
  vsubps ymm0 {k4}{z}, ymm1, ymm2         ; zero-masking
  vmulps zmm0, zmm1, dword bcst scalar    ; embedded broadcast
  vdivps zmm0, zmm1, zmm2 {rz-sae}        ; embedded rounding
  vmaxss xmm1, xmm2, xmm3 {sae}           ; suppress all exceptions

四捨五入模式

[模式] 影響
rn-sae 四捨五入至最接近,系結至偶數,隱藏所有例外狀況。
rz-sae 四捨五入為零,隱藏所有例外狀況。
rd-sae 四捨五入(向負無限大),隱藏所有例外狀況。
ru-sae 四捨五入 (朝正無限大),隱藏所有例外狀況。
sae 隱藏所有例外狀況(不需要四捨五入)。

另請參閱

Microsoft 巨集組譯工具參考
處理器製造商程式設計手冊