Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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++ asm anahtar sözcüğü için MSVC desteği, derleyicinin anahtar sözcükte hata oluşturmamasıyla sınırlıdır. Ancak, bir asm blok anlamlı bir kod oluşturmaz. yerine __asmkullanınasm.
Dilbilgisi
asm-block:
__asm
derleme yönergesi;Tercih
__asm {
assembly-instruction-list};Tercih
assembly-instruction-list:
bütünleştirilmiş kod yönergesi;tercihi
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. Derleyici seçeneği __asm belirtilmediği sürece, /Za önceki sürümlerle uyumluluk için bir 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.
Ö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ü