Aracılığıyla paylaş


Yığın Yükleme

Bir işlevin girişi; yerel değişkenler, kaydedilen kayıtlar, yığın parametreleri ve kayıt parametreleri için yığın alanı tahsis etmekten sorumludur.

(Alloca kullanılsa bile) parametre alanı her zaman yığının en altındadır bu nedenle herhangi bir işlev çağrısı sırasında her zaman dönüş adresine bitişik olacaktır.En az dört giriş barındırır ama çağrılacak herhangi bir özelliğin gerektirdiği parametreleri barındıracak yeterli alan mutlaka bulunur.Parametreler hiçbir zaman yığına dahil olmasa bile kayıt parametreleri için her zaman alan ayrıldığını ve aranana tüm parametreleri için alan ayrıldığı yönünde garanti verildiğini unutmayın.Ev adresleri kayıt bağımsız değişkenleri için gereklidir, böylece çağrılan işlevin bir bağımsız değişken listesinin (va_list) adresini ya da tek bir bağımsız değişkeni alması gerektiğinde bitişik bir alan kullanılabilir.Bu alan aynı zamanda hata ayıklama seçeneği olarak, dönüştürücü yürütme boyunca, kayıt bağımsız değişkenlerini kaydetmek için kullanışlı bir yer sunar (örneğin, giriş kodunda ev adreslerini depolanmışsa, hata ayıklama işlemi sırasında bağımsız değişkenleri bulmak kolaylaşır).Çağrılan işlev 4 adetten daha az parametreye sahipse bile, söz konusu bu 4 yığın konumu çağrılan işlev tarafından etkin şekilde sahiplenilir ve çağrılan işlev tarafından parametre kayıt değerlerini kaydetme dışındaki amaçlarla kullanılabilir.Böylece arayan bir işlev aramasıyla yığının bu bölgesine bilgi kaydedemez.

Bir işlevde alan dinamik olarak (alloca) ayrılırsa, bir kalıcı kayıt yığının sabit parçasını işaretlemek için bir çerçeve işaretçisi olarak kullanılmalıdır ve bu kayıt giriş bölümünde kaydedilmeli ve başlatılmalıdır.Alloca kullanıldığında, aynı arayandan aynı aranana giden aramaların ev adresleri kayıt parametreleri için farklı olabilir.

Yığın giriş (örneğin dönüş adresi itildikten sonra) ve İşlev Türleri öğesi için çerçeve işlevlerinin belirli bir sınıfı dışında her zaman 16 bayta hizalanarak devam ettirilir.

Aşağıdaki öğe işlev A'nın yaprak olmayan işlev B'yi çağırdığı bir yığın düzeni örneğidir.İşlev A'nın giriş bölümü zaten yığının altında B'nin gerektirdiği tüm kayıt ve yığın parametreleri için yer tahsis etmiştir.Çağrı dönüş adresini iter, B'nin giriş bölümü kendi değişkenleri, nonvolatile kayıtları ve çağrı işlevleri için gerekli alanı ayırır.B, alloca kullanıyorsa, alan yerel değişken/kalıcı kayıt kaydetme alanı ve parametre yığın alanı arasında ayrılır.

AMD dönüşüm Örneği5 grafiği

B işlevi başka bir işlevi aradığında, dönüş adresi RCX için ev adresinin altına itilir.

Ayrıca bkz.

Başvuru

Yığın Kullanımı