[elektro] C kérdés plusz

Acs Gabor agabor at electrodesign.hu
Mon May 19 12:29:08 CEST 2008


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




More information about the Elektro mailing list