C dili "çağrı yığını" x86 (ve diğer çoğu) ikili API'larında bağlantılı bir liste olarak uygulanır .
Yani, C-dil prosedürü çağrısı bir ilk-giriş, son-çıkış disiplini takip eder. İşlev çağrılarının (muhtemelen özyinelemeli) yürütülmesinin sonucu "çağrı yığını", hatta bazen sadece "yığın" olarak adlandırılır.
CALL
X86 komut "çağrı yığını" kullanarak bir bağlantılı liste implmenting biter. Bir CALL
kullanıcı,% VAP kayıt içeriğini, bilginin adresini iter sonraCALL
üzerine yığın bellek. Çağrılan işlev prolog, çağrı işlevindeki en düşük yerel değişkenler olan% EBP kaydının içeriğini yığın belleğine iletir. Ardından çağrılan fonksiyon prolog'u% EBP'yi geçerli fonksiyonun yığın tabanına ayarlar.
Bu,% EBP'nin, çağıran işlevin% EBP değerinin adresini tutan bir bellek konumuna işaretçi olduğu anlamına gelir. Bu, kısmen donanımda uygulanan bağlantılı bir listeden başka bir şey değildir CALL
.
Bunun ne kadar iyi olduğu konusunda, x86 CPU'ların işlev çağrılarını, özellikle işlevin kendi bağımsız değişken kopyasına sahip olduğu işlev çağrılarını ve işleve yerel değişkenleri nasıl uyguladığı budur. Her işlev çağrısı, CPU'nun çağrılan fonksiyonda veya çağrı fonksiyonunda herhangi bir parazit olmadan kaldığı yerden almasını sağlayan "çağrı yığını" ile ilgili bazı bilgileri iter.