MASM yönerge biçimi

Sözdizimi

Yönergeler kaynak kodunda şu söz dizimine göre yazılır:

ön ekanımsatıcıişlenen listesi

Yönerge tanımları, seçenekler ve kodlama hakkında bilgi için bkz . İşlemci Üreticisi Programlama El Kitapları. Bazı yönergeler ve yönerge seçenekleri Microsoft Makro Derleyicisi tarafından desteklenmeyebilir.

Önek

Bazı yönergelerin ön ekini, yönergenin nasıl kodlanacağına ilişkin seçenekleri ayarlayan anahtar sözcüklerle belirtebilirsiniz. REP, REPE, , REPZ, REPNEve REPNZ anahtar sözcükleri, tek bir yönergede yapmak veya strlen işlem türlerini yapmak memcpy için dize yönergeleriyle birlikte kullanılır. LOCK anahtar sözcüğü, bellek işlenenleri üzerindeki belirli işlemleri atomik hale getirir. Desteklenen işlemcilerde Hardware Lock Elision (HLE) yapmak için ve XRELEASE anahtar sözcükleriyle XACQUIRE birleştirebilirsiniz ve bu da belirli durumlarda daha fazla işlem paralelliği sağlar.

Kalan ön ekler, AVX yönergelerinin nasıl kodlanmış olduğunu denetler. AVX yönergeleri, opcode'un önünde görünen bir VEX ön ek kullanılarak kodlanır. Belirli bayt yönerge ön eklerinin ve opcode lead-in baytlarının yerini alır. Birçok AVX yönergesi, daha fazla seçeneği destekleyen bir EVEX ön ek kullanılarak kodlanan AVX-512 yönergeleridir. MASM, yönergeleri olabildiğince kısa bir şekilde kodlamaya çalışır, ancak bu anahtar sözcükler belirli bir yönergeyle hangi kodlamanın kullanılacağı üzerinde daha fazla denetim sağlar. Ayrıca, karşılık gelen AVX-512 yönergesi sonrasında tanıtılan AVX yönerge formlarının oluşturulmasını zorlamak için de kullanılır. Örneğin, vex vpdpbusd AVX512-VNNI formu VPDPBUSD yerine yönergelerin AVX-VNNI biçimini belirtir. Açık ön ek anahtar sözcüğü olmadan bir AVX yönergesi görüntülendiğinde, seçilen kodlama geçerli AVX kodlama ayarına bağlıdır. yönergesi OPTION AVXENCODING bu ayarı değiştirmenize olanak tanır.

VEX2, VEX3, VEXve EVEX seçenekleri Visual Studio 2019 sürüm 16.7 ve sonraki sürümlerde kullanılabilir.

Anahtar sözcük Kullanım
REP Dize işlemini (E)CX içindeki sayıya göre yineleyin.
REPE
REPZ
Karşılaştırma eşitken dize işlemini yineleyin, (E)CX içindeki sayı ile sınırlıdır.
REPNE
REPNZ
Karşılaştırma eşit değilken dize işlemini yineleyin, (E)CX içindeki sayı ile sınırlıdır.
LOCK İşlemi bir bellek işleneninde atomik olarak gerçekleştirin.
XACQUIRE En sık ön ek ile LOCK kullanılan bir HLE işlemi başlatın.
XRELEASE En sık ön ek ile LOCK kullanılan bir HLE işlemini tamamlayın.
VEX Ön ek kullanarak VEX BIR AVX yönergesi kodlama.
VEX2 2 baytlık VEX ön ek kullanarak BIR AVX yönergesi kodlama.
VEX3 3 baytlık VEX ön ek kullanarak BIR AVX yönergesi kodlama.
EVEX Ön ek kullanarak EVEX BIR AVX yönergesi kodlama.

Anımsatıcı

Anımsatıcı, izin verilen ön ekleri ve işlenen desenlerini belirleyen belirli bir yönergeyi tanımlar.

İşlenen listesi

Yönergelerin çoğu, yönergenin açık kaynak ve hedef işlenenlerini belirtmek için işlenen listesini kullanır. İşlenen listesi bellek başvuruları, yazmaçlar ve sabit değerler içerebilir. Her yönerge, işlenen listesindeki her konumda yalnızca belirli işlenen türlerinin görünmesini sağlar. ve CMPS yönergeleri dışındaMOVS, işlenenlerden yalnızca biri bellek başvurusu olabilir; diğer tüm işlenenler kayıt başvuruları veya sabitleri olmalıdır.

AVX-512 seçenekleri

Bazı AVX-512 yönergeleri daha fazla seçeneğin belirtilmesine olanak sağlar. Bu seçenekler şunlardır: maskeleme, sıfır maskeleme, ekli yayın, ekli yuvarlama ve özel durum gizleme.

Maskeleme , bir işlemin yalnızca bir vektördeki seçili öğelere uygulanmasını sağlar. Bu seçenek, hedef işlenenden {k1} sonraya {k7} bir maske yazmaç yerleştirilerek denetlenilir. Maske yazmaç tarafından takip {z}edilirse, hedefin seçili olmayan tüm öğeleri sıfır olarak ayarlanır. Bu alternatif sıfır maskeleme olarak bilinir.

Embedded Broadcast , bellekteki skaler değerin vektördeki tüm öğelere uygulanmasını sağlar. Bu seçenek, normal bellek başvuruları için kullanımına PTR benzer şekilde bellek işlenenine öğe boyutu ve anahtar sözcüğü BCST eklenerek etkinleştirilir.

Katıştırılmış Yuvarlama , genel yuvarlama modunu ayarlamak ve sıfırlamak zorunda kalmadan tek bir kayan nokta yönergesi için yuvarlama modunu denetler. Yönerge, küme ayraçları içine alınmış yuvarlama moduyla izlenerek etkinleştirilir. Etkinleştirildiğinde, yalnızca bu yönerge için tüm özel durumları da gizler. Yuvarlamayan kayan nokta yönergeleri de benzer bir seçenek kullanarak tüm özel durumları gizleyebilir.

  ; 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

Yuvarlama modları

Mod Etki
rn-sae En yakına yuvarlanır, çifte bağlanır, tüm özel durumları gizler.
rz-sae Sıfıra doğru yuvarlar, tüm özel durumları gizler.
rd-sae Aşağı yuvarlar (negatif sonsuzluğa doğru), tüm özel durumları gizler.
ru-sae Yukarı yuvarlar (pozitif sonsuzluğa doğru), tüm özel durumları gizler.
sae Tüm özel durumları gizleme (yuvarlama gerekmez).

Ayrıca bkz.

Microsoft Macro Assembler Başvurusu
İşlemci Üreticisi Programlama Kılavuzları