[elektro] C kérdés plusz
Acs Gabor
agabor at electrodesign.hu
Mon May 19 14:18:24 CEST 2008
Akkor Szerinted ki lehet lépni függvényből? Mert Sanyi szerint nem. Vagy ez
is implementációfüggő?
Erős a gyanúm, hogy amit eredetileg kérdeztél, hogy for ciklus, vagy if
szerkezetbe bekavar egy vezérlésátadás (pl switch), az is okozhet ilyen
stackeléshez hasonló problémát. Merthogy beugráskor a szerkezet eleje,
kiugráskor a vége, a lezárása hiányzik. Aztán lehet, hogy van olyan okos a
fordító, hogy ezt jelzi, pl. if belsejébe ugráskor talál egy csukózárójelet,
aminek nem volt nyitója. De ennek csak akkor van értelme, ha külön körben
dolgozza fel az if és külön körben a switch dolgait. Ha igen, akkor lehet,
hogy ő fogja megcsinálni a kód ismétlést, amit javasoltam Neked, hogy ne
legyen kavarodás a kettő átfedéséből.
Gábor
----- Original Message -----
From: "hg12345" <hg12345 at freemail.hu>
To: <elektro at tesla.hu>
Sent: Monday, May 19, 2008 1:29 PM
Subject: Re: [elektro] C kérdés plusz
Hi!
A goto-t ugyan úgy kezeli mint az asm. Ha kilépsz a függvényból akkor
minden ottmarad a stack-ken!
> Ez eddig is világos volt. Én olyasmire gondoltam, hogy írsz pl. egy
rekurzív
> függvényt. Az végrehajtja magát 150-szer, majd teljesül valami
feltétel, és
> kiugrasz belőle egy gotoval. Biztos, hogy valahol épít egy stack-et a
> fordító, ha nem is a cpu stack területéről van szó. Ilyenkor ottmarad
egy
> rakás adat. Következő meghíváskor detto, aztán megint. De Palasik
Sanyi azt
> mondta, hogy függvényből nem lehet gotoval kilépni. Ugyan goto-t
én legalább
> 20 éve nem használtam (assemblyn kívül), de elhiszem neki, így
válasz is
> lett a kérdésre.
>
>
> Gábor
>
> ----- Original Message -----
> From: "Papp Zoltán" <zombi at c2.hu>
> To: <elektro at tesla.hu>
> Sent: Monday, May 19, 2008 8:51 AM
> Subject: Re: [elektro] C kérdés plusz
>
>
> 2008.05.17. 00:00:45 dátumon Palasik Sandor
<palasik at mail.datanet.hu> írta:
>
> >> És ilyenkor mi van a stack-el? A fordító annyira okos, hogy azt is
> >> rendbeteszi? Ezzel nem kisérleteznék.
> >
> > Függvénybe nem lehet goto-val beleugrani, sem kilépni belőle.
Máshol nem
> > játszik a stack.
>
> Illetve a függvény belépéskor és kilépéskor a használt regiszterek
> értékeit a stackbe menti le a program, de attól még, hogy te egy
ciklusa
> kellős közepébe teszel egy RETURN-t, ott lefordítva ASM-ben egy
GOTO lesz
> a fgv. végén található rutinra, amelyik a stackből visszaszedi a
> regiszterek értékeit, és csak utána lesz az assembly RET utasítás.
>
> Érdemes nézegetni a lefordított kódokat, sok minden megvilágosodik.
>
> --
> Papp Zoltán
> OneWay Electronics Kft
> Hangszerviz
>
> -----------------------------------------
> elektro[-flame|-etc]
>
> _____________ NOD32 3107 (20080518) Információ
_____________
>
> Az üzenetet a NOD32 antivirus system megvizsgálta.
> http://www.nod32.hu
>
>
> -----------------------------------------
> elektro[-flame|-etc]
>
_______________________________________________________
Szerintem ezt megéri megnézni: http://eduverzum.educomm.hu ! Mi a cégnél már
így tanulunk – ki angolul, ki németül. Próbáljátok ki ti is!
http://ad.adverticum.net/b/cl,1,6022,112478,180889/click.prm
-----------------------------------------
elektro[-flame|-etc]
_____________ NOD32 3107 (20080518) Információ _____________
Az üzenetet a NOD32 antivirus system megvizsgálta.
http://www.nod32.hu
More information about the Elektro
mailing list