C-s kerdes
Fuzesi Arnold
arnold.fuzesi.lista at gmail.com
Wed Jun 20 01:16:10 CEST 2007
Tablazatkezeleshez is jó az még szvsz....
RETLW hegyek előkészítése elég nyögvenyelős volt...
Egy trükkös call-al stack-be betolni a cimet.
Aztan egy szamitott goto a RETLW-re.
Majd az vissza a stack-bol kibanyaszott helyre.
PUSH/POP-al ez kenyelmesebb picit.
Bár nemsokkal. :)
A.
----- Original Message -----
From: "Moczik Gabor" <pm at progzmaster.hu>
To: <elektro at tesla.hu>
Sent: Tuesday, June 19, 2007 11:55 PM
Subject: Re: C-s kerdes
Fuzesi Arnold wrote:
> Igy van.
> Cstack-ről beszéltem természetesen.
> Rstack egyértelmű hogy hw-es... maskulonben bajban lennénk :)
Nem egeszen erre gondoltam. Azt hogy a CALL/RETURN utasitas automatikusan
kezeli, az egy dolog, termeszetes.
En arra gondoltam, hogy a stack PIC-en logikailag nincs a RAM-ban, es
regebbi PIC-eken nem is erheto el semmilyen modon. Az uj PIC-eken van
PUSH/POP, de szvsz tovabbra is mazohista, aki push/pop-olni akar dolgokat
egy 32 szavas stackben....
Egy dologra jo: multitaszk rendszer irasahoz!
Az ISR kiszedi a stack-rol a megszakitott taszk visszateresi cimet, elrakja
valahova, es PUSH-sal beleteszi egy masik taszk cimet, a RETFIE utasitas az
uj taszkot fogja folytatni, nem azt amit megszakitottak. Utana kesobb vagy
valamilyen feltetel teljesulese eseten az elmentett cimet rakja vissza.
> (kultur prociknal viszont indexregiszterekkel mukodik, áthelyezhető
> stb...igyaztan az rstack tulkepp ugyan azon a mem teruleten osztozik amin
> a
> cstack, valtozok, heap stb. csak hw támogatással....)
Itt nemhogy ugyanazon a memoriaban van, hanem gyakran ugyanott van az rstack
es a cstack.
PC-n pl. ugy szokas, hogy egy fuggveny belepeskor kiolvassa az SP regiszter
erteket, elmenti a BP-be, utana kivon az SP-bol annyit, amennyi lokalis
valtozonak hely kell. Utana a lokalis valtozokat BP-offset formaban lehet
cimezni. Ha befejezodik a fuggveny, akkor a BP-t visszatolti az SP-be, ezzel
megszuntetve a lokalis valtozokat es visszaallitva a stacket a visszateresi
cimre.
Az SP mindig ervenyes ures helyre mutat, igy ha a fuggvenybol masik
fuggvenyt hivsz, jo helyre rakja a cuccot.
Van PASCAL es C hivasi konvencio, a ketto annyiban kulonbozik, hogy a hivott
fuggveny vagy hivo program kezeli-e le ezt a dolgot. Pascal-ban ezert nem
lehet valtozo parameterezesu fuggvenyt (pl. printf) irni.
--
((( Móczik Gábor )))--((( pm -> @ -> progzmaster -> . -> hu )))
((( Skype: moczik )))
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list