Aracılığıyla paylaş


__asm

Microsoft'a Özgü

__asm anahtar sözcüğü satır içi derleyiciyi çağırır ve C veya C++ deyiminin yasal olduğu her yerde görüntülenebilir. Tek başına görünemez. Bir derleme yönergesi, ayraç içine alınmış bir yönerge grubu veya en azından boş bir küme ayracı çifti tarafından izlenmelidir. Buradaki "__asm blok" terimi, küme ayraçları içinde olsun veya olmasın tüm yönerge veya yönerge grubunu ifade eder.

Not

Standart C++ anahtar sözcüğü için Visual C++ asm desteği, derleyicinin anahtar sözcük üzerinde hata oluşturmamasıyla sınırlıdır. Ancak, bir asm blok anlamlı bir kod oluşturmaz. yerine asmkullanın__asm.

Dilbilgisi

asm-block:
__asmderleme yönergesi ;Tercih
__asm {assembly-instruction-list } ;Tercih

assembly-instruction-list:
bütünleştirilmiş kod yönergesi ;tercihi
assembly-instruction assembly-instruction-list; opt ;

Açıklamalar

Ayraç olmadan kullanılırsa anahtar sözcük, __asm satırın geri kalanının bir derleme dili deyimi olduğu anlamına gelir. Ayraçlarla birlikte kullanıldığında, ayraçlar arasındaki her satırın bir derleme dili deyimi olduğu anlamına gelir. Önceki sürümlerle uyumluluk için, _asm için __asmbir eş anlamlıdır.

__asm Anahtar sözcük bir deyim ayırıcısı olduğundan, derleme yönergelerini aynı satıra yerleştirebilirsiniz.

Visual Studio 2005'in öncesinde yönerge

__asm int 3

/clr ile derlendiğinde yerel kodun oluşturulmasına neden olmadı; derleyici yönergeyi bir CLR kesme yönergesine çevirdi.

__asm int 3 şimdi işlevi için yerel kod oluşturma işlemine neden olur. Bir işlevin kodunuzda kesme noktasına neden olmasını ve bu işlevin MSIL'de derlenmiş olmasını istiyorsanız __debugbreak kullanın.

Derleyici seçeneği /Za (Dil uzantılarını devre dışı bırak) belirtilmediği sürece, _asm önceki sürümlerle uyumluluk için __asm bir eş anlamlıdır.

Örnek

Aşağıdaki kod parçası, küme ayraçları içine alınmış basit __asm bir bloktır:

__asm {
   mov al, 2
   mov dx, 0xD007
   out dx, al
}

Alternatif olarak, her derleme yönergesinin önüne koyabilirsiniz __asm :

__asm mov al, 2
__asm mov dx, 0xD007
__asm out dx, al

__asm Anahtar sözcük bir deyim ayırıcısı olduğundan, derleme yönergelerini de aynı satıra yerleştirebilirsiniz:

__asm mov al, 2   __asm mov dx, 0xD007   __asm out dx, al

Üç örnek de aynı kodu oluşturur, ancak ilk stilin __asm (bloğu küme ayraçları içine alan) bazı avantajları vardır. Ayraçlar, derleme kodunu C veya C++ kodundan net bir şekilde ayırır ve anahtar sözcüğün __asm gereksiz bir şekilde yinelenmesinden kaçınılır. Ayraçlar belirsizlikleri de önleyebilir. Blokla aynı satıra __asm bir C veya C++ deyimi koymak istiyorsanız, bloğu ayraç içine almanız gerekir. Küme ayraçları olmadan, derleyici derleme kodunun nerede durup C veya C++ deyimlerinin nerede başlayacağını söyleyemez. Son olarak, küme ayraçlarındaki metin normal MASM metniyle aynı biçime sahip olduğundan, var olan MASM kaynak dosyalarındaki metni kolayca kesebilir ve yapıştırabilirsiniz.

C ve C++ içindeki ayraçlardan farklı olarak, bir __asm bloğu kapsayan ayraçlar değişken kapsamını etkilemez. Ayrıca blokları iç içe __asm yerleştirebilirsiniz; iç içe yerleştirme değişken kapsamını etkilemez.

END Microsoft'a Özgü

Ayrıca bkz.

Anahtar Sözcükler
Satır İçi Assembler