MASM 指令格式
語法
指示會根據下列語法以原始程式碼撰寫:
如需指令定義、選項和編碼的詳細資訊,請參閱 處理器製造商程式設計手冊 。 Microsoft 巨集群組合器可能不支援某些指示和指示選項。
Prefix
您可以在某些指示前面加上關鍵字,以設定如何編碼指令的選項。 REP
、 REPE
、 REPZ
REPNE
、 和 REPNZ
關鍵字會搭配字串指令使用,以在單一指令中執行 memcpy
或 strlen
種類的作業。 關鍵字 LOCK
會讓記憶體運算元上的特定作業不可部分完成。 您可以將它與 XACQUIRE
和 XRELEASE
關鍵字結合,在支援的處理器上執行硬體鎖定 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
詞可讓您變更此設定。
VEX2
、 VEX3
、 VEX
和 EVEX
選項可在 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 指令。 |
記憶
助憶鍵會識別特定指令,該指令會決定允許的前置詞和運算元模式。
運算元清單
大部分的指令都會使用運算元清單來指定指令的明確來源和目的地運算元。 運算元清單可能包含記憶體參考、暫存器和常數值。 每個指令只允許特定類型的運算元出現在運算元清單中的每個位置。 除了 MOVS
和 CMPS
指令之外,只有其中一個運算元可能是記憶體參考;所有其他運算元都必須是緩存參考或常數。
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 |
隱藏所有例外狀況(不需要四捨五入)。 |
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: