Share via


OpCodes.Calli Alan

Tanım

Değerlendirme yığınında belirtilen yöntemini (giriş noktasına işaretçi olarak) çağıran bir kural tarafından açıklanan bağımsız değişkenlerle çağırır.

public: static initonly System::Reflection::Emit::OpCode Calli;
public static readonly System.Reflection.Emit.OpCode Calli;
 staticval mutable Calli : System.Reflection.Emit.OpCode
Public Shared ReadOnly Calli As OpCode 

Alan Değeri

Açıklamalar

Aşağıdaki tabloda, yönergenin onaltılık ve Microsoft Ara Dil (MSIL) derleme biçiminin yanı sıra kısa bir başvuru özeti listelenmiştir:

Biçimlendir Derleme Biçimi Description
29 <T> Calli callSiteDescr Çağırma kuralı tarafından açıklanan bağımsız değişkenlerle işaret edilen yöntemini çağırır.

Sıralı sırada yığın geçiş davranışı şu şekildedir:

  1. aracılığıyla argN yöntem bağımsız değişkenleri arg1 yığına gönderilir.

  2. Yöntem giriş işaretçisi yığına gönderilir.

  3. aracılığıyla yöntem bağımsız değişkenleri arg1argN ve yöntem giriş işaretçisi yığından çıkarılır; yöntem çağrısı gerçekleştirilir. Tamamlandığında, çağıran yöntemi tarafından bir dönüş değeri oluşturulur ve çağırana gönderilir.

  4. Dönüş değeri yığına gönderilir.

Yönerge, calli aracılığıyla argNbağımsız değişkenlerle arg1 yöntem giriş işaretçisini çağırır. Bu bağımsız değişkenlerin türleri, belirli çağırma kuralı (callSiteDesc ) tarafından açıklanır. Denetimi calli aktarmadan önce geçerli yöntem durumunun serbest bırakılacağını belirtmek için yönergenin önüne hemen bir tail ön ek (Tailcall) eklenebilir. Çağrı denetimi kaynak yöntemden daha yüksek bir güven yöntemine aktaracaksa yığın çerçevesi serbest bırakılmaz; bunun yerine yürütme, sağlanmamış gibi tail sessizce devam eder.

Yöntem giriş işaretçisinin, çağırma kuralı (tek başına imza için meta veri belirteci) tarafından açıklanan bağımsız değişkenlerle yasal olarak çağrılabilen yerel koda (hedef makinenin) belirli bir işaretçisi olduğu varsayılır. Böyle bir işaretçi, veya Ldvirtftn yönergeleri kullanılarak Ldftn oluşturulabilir veya yerel koddan geçirilebilir.

Çağırma kuralı dinamik olarak denetlenmediğinden, hedef gerçekten belirtilen çağırma kuralını kullanmıyorsa yönerge kullanan calli kod düzgün çalışmaz.

Bağımsız değişkenler yığına soldan sağa sırayla yerleştirilir. Diğer bir ifadeyle, ilk bağımsız değişken hesaplanır ve yığına, ardından ikinci bağımsız değişkene, sonra da gerekli tüm bağımsız değişkenler yığının üstünde azalan sırada olana kadar üçüncü bağımsız değişkene yerleştirilir. Bir örnek veya sanal yöntem için bağımsız değişken oluşturma kod dizisi, kullanıcı tarafından görünen bağımsız değişkenlerden önce bu örnek başvurusunun (null başvuru olmaması gerekir) göndermesi gerekir.

SecurityException sistem güvenliği çağırana çağrılan yönteme erişim vermezse oluşturulabilir. Güvenlik denetimi, Microsoft Ara Dil (MSIL) yönergeleri çalışma zamanında değil yerel koda dönüştürüldüğünde gerçekleşebilir.

Yığında yönerge calli gerçekleştirmek için aşağıdaki EmitCalli yöntemler kullanılabilir. Yönergeyi calli doğrudan yığına yerleştirmek için sınıfını Emit kullanmak yerine aşağıdaki yöntemler aracılığıyla çağrılmalıdır.

Şunlara uygulanır