DrawSquare () 'in DrawLine () öğesini çağırdığı wikipedia'dan gelen bu örneği kullanarak ,
(Bu şemada altta yüksek adresler ve üstte düşük adresler bulunduğunu unutmayın.)
Kimse bana açıklayabilir neyi Could ebp
ve esp
bu bağlamda nelerdir?
Gördüğüm kadarıyla, yığın işaretçisinin her zaman yığının üstünü ve temel işaretçiyi geçerli işlevin başlangıcını gösterdiğini söyleyebilirim? Ya da ne?
edit: Bu Windows programları bağlamında demek
edit2: Ve nasıl da eip
çalışır?
edit3: MSVC ++ aşağıdaki kodu var:
var_C= dword ptr -0Ch
var_8= dword ptr -8
var_4= dword ptr -4
hInstance= dword ptr 8
hPrevInstance= dword ptr 0Ch
lpCmdLine= dword ptr 10h
nShowCmd= dword ptr 14h
Hepsi dwords gibi görünüyor, böylece her biri 4 bayt alıyor. Böylece, 4 baytlık var_4 değerine kadar bir boşluk olduğunu görebiliyorum. Onlar neler? Wikipedia'nın resminde görülebileceği gibi, bunun dönüş adresi olduğunu varsayıyorum?
(Editörün notu: Michael'ın cevabından uzun bir alıntı kaldırıldı, bu soruya ait değil, ancak bir takip sorusu düzenlendi):
Bunun nedeni, işlev çağrısının akışının:
* Push parameters (hInstance, etc.)
* Call function, which pushes return address
* Push ebp
* Allocate space for locals
Benim sorum (son, umarım!) Şimdi, tam olarak prolog sonuna kadar çağırmak istediğiniz işlevin argümanlarını pop an ne olur? Ebp, esp'nin o anlarda nasıl geliştiğini bilmek istiyorum (Prologun nasıl çalıştığını zaten anladım, sadece yığındaki ve prologdan önce argümanları ittikten sonra ne olduğunu bilmek istiyorum).