Chyba optimalizace, nebo moje?
Pavel Hudecek
edizon na seznam.cz
Neděle Duben 25 13:42:17 CEST 2021
Můj finální závěr k tomu je, že neoptimalizovaně je po sei jmp, co se vrací na začátek, optimalizace ale jmp dala jinam, takže je po sei hned cli a int nemůže proběhnout.
Nakonec tedy bude tato úloha ve 3 verzích:
1. Prasácká, kdy žádné cli/sei neobsahuje a je možno pozorovat, že blikání občas škobrtne. S diskusí, kdy to stačí.
2. cli/sei/nop. S diskusí, jak je to s tou optimalizací.
3. Funkce atomicMsRd a atomicMs0. S poznámkou, že kód sežere víc flashky, je přehledný skoro jako 1, ale spolehlivý jako 2 bez starostí s optimalizací.
PH
Od: Radek Benedikt
Ahoj, hezky se nam rozvinula debata ohledne optimalizace.... Ale
zavedla cely problem nespravnym smerem.
Problem je ale jinde, autor sam napsal - kdyz pridam nop tak to
funguje. Pravda, cely priklad je napsan spis Opravdovym programatorem a
ne pojidacem kolacu. Nechce se mi hrabat v manualu od AVRka a v
casovani instrukci, ale nebudu daleko od pravdy kdyz tu zaseklou sekci
okomentuji slovy a kde bude vlastne povolene preruseni ? Ceka se na
inkrementaci ms a prerusovaci rutina se nepusti ke zlabu.
while(1) {
__asm__("cli");
if (ms>=n) break;
__asm__("sei");
}
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210425/d4b61180/attachment.html>
Další informace o konferenci Hw-list