Başlığın dediği gibi, C programımdaki yığınının içeriğini yazdırmak istiyorum.C programındaki yığın içeriğini nasıl yazdırabilirim?
İşte aldı adımlar şunlardır:
- Ben adresini dönmek benim ebp kaydının adresini dönmek için bir işlev ve bir işlevi dahil basit montaj (helper.s) dosyası yapılmış benim eSP kayıt
.globl get_esp get_esp: movl %esp, %eax ret # get_ebp is defined similarly, and included in the .globl section
- Ben baskı I (başarıyla sanırım)
- (FPC bir int
fpC = get_esp();
) benim C programındanget_esp()
veget_ebp()
fonksiyonları denilen esp ve ebp yazmaçlarımın adresini (fprintf (stderr, "%x", fcP);
) - Kayıt defterimin içeriğini yazdırmayı denedim ve başaramadım. (Diğer yöntemlerin yanı sıra
fprintf (sderr, "%d", *fcP);
vefprintf (sderr, "%x", *((int *)fcP));
denedim). Programım, bu satır işlendiğinde çalışma zamanında bir segmentasyon hatasına neden oluyor.
Neyi yanlış yapıyorum?
DÜZENLEME: Yığın işaretlerini almak için bu montaj işlevlerini çağırarak bu işlemi gerçekleştirmeniz gerekir. EDIT2: Bu bir ev ödevi görevidir.
Başarısız olduğunu söylediğinde ne demek istiyorsun? Ne çıktı ve ne bekliyordun? –
İşaretçiler yazdırmak için, printf ("% p", (void *) (p)) 'komutunu kullanmalısınız. "% Esp'in içeriği" bir işaretçidir. –
@CarlNorum: Hayır, 'printf 'kullanımı basitçe C standardı tarafından zorunlu kılındı. (Cf. "variadic arguments".) –