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