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