Witam ;
Myślę ,że na miejsce i organizację danych można spojrzeć też od tej strony :
1.
Szybkość dostępu przez ALU:
wtedy kolejność byłaby najszybciej
RAM ,wolniej
FLASH , żółwie tempo ale z zapisem
EEPROM,
2. Szybkość dostępu do tej samej pamięci wymuszona organizacją potrzebnych zmiennych w pamięci :
A.
Grupowanie w unie/ struktury , w większości też
kolejność deklaracji tych zmiennych(
w
większości ale bez gwarancji ) .
B. Zmienne używane przez funkcje , szczególnie te często wywoływane , w tablicach o ile są jednakiego typu,
deklarować/definiować po kolei .
3. Z uwagi na stos o ile nie jest niezbędne sporadyczne korzystanie ze zmiennych, korzystać ze wskaźników.
ps. niniejsze bardzo ogólne sugestie napisał "asemblerowiec" proszę zatem zachować niezbędny dystans,...
ps. wyjaśnienie : Z uwagi na zestaw rozkazów asemblera dla AVR najszybszy dostęp z użyciem jedynie jednego wskaźnika/adresu uzyskujemy wówczas , gdy "odległość" między pierwszą a ostatnią potrzebną zmienną jest poniżej 65 bajtów = wtedy na stosie potrzebujemy jedynie dwa bajty wskaźnika, a i to niekoniecznie (
nie dotyczy EEPROMktóry zresztą przy szybkich i ważnych funkcjach/procedurach nadaje się wyłącznie jako dostępne w bardzo żółwim tempie źródło danych konfiguracyjnych , lub z konieczności jako miejsce przechowywania efektów działania na czas zaniku napięcia).;
------------------------ [ Dodano po: 18 minutach ]ps. Oczywiście nie należy zapominać iż translację C na asm zrobi i tak kompilator , na razie
nie mam większych pretensji do kompilatora o tworzony kod ,choć nie umiem póki co
tego gościa przekonać, ani zmusić do używania odczytu flash z autoinkrementacją,
jestem tylko początkującym w C , więc póki co wierzę iż dogadamy się z czasem
