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