[linux] Stack v C

peto peter.fodrek na stuba.sk
Úterý Květen 2 20:59:20 CEST 2006


Vdaka
----------  replied message ----------

Subject: Re: [linux] Stack v C
Date: Tue, 2 May 2006 20:41:24 +0200
From: "Jaroslav Soltys" <jardique na gmail.com>
To: "Vseobecna diskusia o Linuxe" <linux na lists.linux.sk>

>Lokalne premenne lezia tiez na stacku (pokial nie su static), cize
>spravit pointer na jednu z nich a cez pointrovu aritmetiku sa na to
>odvolat. 

gdb mi dalo nepouzitelne adresy ale takto to funguje.. nieco take si mal na 
mysli, ako som to pochopil... Z toho ale v0xbffff3b0yplyva, ze stack data 
zacinaju tam, kde ukazuje 0xbffff3b0; a modifikacia je stacku potom o nicom, 
alebo mam este skusit int * a nasaddit mu priamo adresu, co mi ale neslo... 
Aj ked toto su pointer na stack s cim robim, pricom ich existencia je samo o 
sebe prekvapenim....

void uloha_a(char *string,int *plus,int *minus)0xbffff3b0
{
	int **pplus=(int **)0xbffff3b4;
	int **pminus=(int **)0xbffff3b8;
	char **pstring=(char **)0xbffff3b0;
	**pplus=0;
	**pminus=0;
	
 /* takto som si istil adresy
   printf("%p-%p\t%p",&plus,&minus,&string);*/0xbffff3b0
......

}


>Pri gcc sa taketo veci robia dobre, gcc -S prepinac tusim spravi z .c
>do asm source, icc je kompatibilne s gcc, inac neviem.
.







Další informace o konferenci linux