Witajcie
Mam dość prostą funkcję ISR, która korzysta z kilku zmiennych statycznych (flag typu uint8_t) oraz sprawdza stan (switchem) jednej zmiennej globalnej (oczywiście volatile) by sterować swoim działaniem w wyniku którego ustawia (lub odczytuje) poszczególne bity kolejnych bajtów niewielkich tablic globalnych (typu uint8_t) oraz wachluje portem IO. W zasadzie to wszystko, co robi, nie wykonując żadnej arytmetyki (poza sprawdzaniem/ustawianiem bitów zmiennych i indeksowaniem tablic)...a mimo wszystko kompilator odkłada w prologu ponad 11 rejestrów procesora (większość między R18 a R31, plus tradycyjne R0 i R1). Dość dużo, jak na mój gust, czy normalne? Zastanawiam się, jak to zoptymalizować. robiw
Mam dość prostą funkcję ISR, która korzysta z kilku zmiennych statycznych (flag typu uint8_t) oraz sprawdza stan (switchem) jednej zmiennej globalnej (oczywiście volatile) by sterować swoim działaniem w wyniku którego ustawia (lub odczytuje) poszczególne bity kolejnych bajtów niewielkich tablic globalnych (typu uint8_t) oraz wachluje portem IO. W zasadzie to wszystko, co robi, nie wykonując żadnej arytmetyki (poza sprawdzaniem/ustawianiem bitów zmiennych i indeksowaniem tablic)...a mimo wszystko kompilator odkłada w prologu ponad 11 rejestrów procesora (większość między R18 a R31, plus tradycyjne R0 i R1). Dość dużo, jak na mój gust, czy normalne? Zastanawiam się, jak to zoptymalizować. robiw
