Assembly’de Prologue ve Epilogue Nedir?
High-level dillerde program yazarken, arka planda otomatik yapılan ama low-level dillerde (özellikle Assembly) manuel olarak yönetmemiz gereken pek çok işlem vardır. Bunların en önemlilerinden birisi de prologue ve epilogue işlemleridir. İşlemin Assembly dilindeki görüntüsü Bu konuya başlamadan önce birkaç temel kavrama değineceğim: Register: CPU’nun en hızlı veri depolama alanıdır; işlem yapılacak veriler burada tutulur. Stack: LIFO (Last In, First Out) mantığıyla çalışan, fonksiyon çağrılarında geçici veri tutan bellek alanıdır. Stack Frame: Her fonksiyon çağrıldığında stack üzerinde ayrılan, argümanlar ve yerel değişkenleri barındıran bellek bloğudur. ESP/RSP: Stack pointer; stack’in en üstünü gösterir. x86’da ESP, x64’te RSP olarak adlandırılır. EBP/RBP: Base pointer; stack frame’in taban adresini tutar, değişkenlere erişimde referans noktasıdır. Calling Convention: Fonksiyonlara argümanların nasıl aktarıldığını ve dönüş değerlerinin nasıl alındığını belirleyen kurallar bütünüdür. Push: Bir değeri stack’e ekler, stack pointer’ı aşağı kaydırır. Pop: Stack’in en üstündeki değeri alır, stack pointer’ı yukarı kaydırır. Bu kavramların hepsi prologue ve epilogue işlemlerini anlamanın temelini oluşturur. Zira bu iki işlem, stack frame’i oluşturup kaldırmaktan ibarettir. ...