2010-03-17 17 views
10

Montaj kodum için bir yığın çerçevesi çizmek konusunda kafam karıştı. Yanlış başlatıldığımı hissediyorum.x86 montajı için yığın çerçevesinin çizilmesi

Şimdiye kadar elde ettiğim şey şu, ama gördüğünüz gibi, 5. adımda kafam karışıyor, çünkü ilk düzenimin yanlış olduğunu düşünüyorum. Nerede yanlış

enter image description here enter image description here

söyler misin?

cevap

25

Yığının üst kısmında (yarı -) rasgele boş alan miktarını gösteren ve muhtemelen EBP ve ESP'yi solda göstermek için oklarla gösterilen bir diyagramla başlıyorum. işaret ediyorlar. Veri noktaları için "işaret" ve kesik çizgiler için katı oklar kullandım (geriye dönük olarak, bunu tersine çevirmek daha iyi olabilir).

alt text

+0

Vay, bu serin bir diyagram. Çizmek için hangi programı kullandın? Yarın bakacağım - bu gece beynim kızartılırken. – drozzy

+3

Bir kelimede Vizio. –

+0

Diyagramların soldan sağa yukarıdan aşağıya oryantasyonda olduğunu farz ediyorum. Öyleyse 3. şemasında nasıl olduğunu bilmiyorum - başlangıçta aynı adrese hem EBP hem de ESP var. Önceki diyagramda onlar farklıydı. – drozzy

2

Geçerli ebp (esp tarafından yakalandıktan sonra) ve y arasındaki mesafe, dönüş eipine ve yığındaki önceki ebp değerine sahip olduğundan bu durumda 8 bayttır. Diyagramınız, sol el adresleri daha kafa karıştırıcı olsa da anlatabildiğim kadarıyla doğrudur :)

0

Diyagramınızda haklısınız. Derleyici, bazı optimizasyon hileleri kullanır: ilk çağrı "oldukça normal", gerçekten de "f" parametresi yığının üstüne yerleştirilir. İkinci çağrı, yerel içerik temizleme (talimat "terk") ve "h" fonksiyonunun "2" yi içerecek şekilde "geri dönüştürülmüş" parametresinden sonra ertelenir. İkinci "çağrı" dan "f" ye geçmesi basit bir "jmp" olur, çünkü "h" arama işlevindeki son satırdır ("h" içeriği "terk" ile atılmıştır).

Güle güle!

1

diyagram aslında yanlıştır iade adresi, aşağıda parametreleri gösterir.

Yığının alt adreslere doğru büyüdüğü varsayılırsa, yığına parametreler koyulması gerekirse, bunlar geri adresle karşılaştırıldığında daha yüksek adreslerde bulunurlar.

İlgili konular