stack u PIC 18Fxxx
Jan Kral
kral@fortech.cz
Středa Leden 5 16:17:49 CET 2005
Jiste ze v uvedenem mate pravdu. Puvodni dotaz vyznel tak, ze je to casove kriticke a jakykoliv test navic je nemozny nebo nechteny. Takze je jen na tom kdo to programuje, aby se samozrejme takoveto potencialni chybe vyhnul, mnou popsanym zpusobem ziska co potrebuje a to rychle.
Jinak se bude tezko falsovat z cyklu nejaka podminka, kdyz treba v dobe vyvolani preruseni jeste neni ani naplneny registr, ktery se testuje a pod.
Kdyz uz nekdo zavrhuje pouziti prikazu goto, tak jak se bez nej obejit v ASM?
JK
> > Cim by se dal timto udelat bordel? Jestlize z obsluhy
> preruseni odejdu pres RET, tak je to uplne stejne jako kdyz
> navratovou adresu ze zasobniku vyhodim a jdu presne kam
> potrebuji JMPem. Podivejte se nekdy jak se predavaji
> parametry treba v C podprogramum a jak vraceji vysledky. To
> je teprve libusta a zadny bordel v tom neni.
>
> Tak priklad:
>
> Ak nastane prerusenie v bode *1, v stacku mate register, ktory tam
> zostane uz navzdy. Podobne v bode *2, vtedy tam zostane
> navratova adresa
> odkial bol podprogram volany.
> Pochopitelne sa da urobit aj "upratovanie", t.j. prestavit
> stack pointer
> v bode *3 na dohodnutu hodnotu; ale to moze a nemusi vadit. Toto je
> presne pristup, ktorym sa vytvori mozno funkcny, ale
> neudrziavatelny kod
> (ak ho po roku upravite, uz sa nebudete pamatat na tu fintu a
> uprava ju
> pokazi). A to je presne aj pricina, preco Wirth zavrhuje - inak ak sa
> pouzije uvazene, velmi uzitocny - prikaz goto.
> Koser je tu slucku ukoncit; a kedze v nej je tak ci tak test (na
> ukoncenie vzorkovania po naplneni buffra) staci podmienku v preruseni
> "sfalsovat".
Další informace o konferenci Hw-list