C-s kerdes

Moczik Gabor pm at progzmaster.hu
Tue Jun 19 23:55:08 CEST 2007


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 )))



More information about the Elektro mailing list