Schmidt: C - wie Speicher nicht verschwenden? 9-Bit Variable?

Beitrag lesen

Hallo ihr Lieben,

ich programmiere auf einem 8bit Mikroprozessor (ATMega168PA) in der Sprache C. Kompiliere mit GCC für AVR. (WINAVR)

Ich möchte euch um Hilfe zur effizienten Speichernutzung bitten.

Ich muss viele zustände Speichern. Sagen wir für den Anfang ich muss 64 Zustände speichern.
Jeder Zustand enthält 9Bit an Information.
Ich muss in einer Schleife nacheinander auf die gespeicherten Zustände zugreifen können.
Es gibt meines wissens beim GCC für AVR keine 9Bit Variable.

Ich habe zwei Ideen im Kopf.
1. Ich speicher die 9Bit jeweils in einer 16Bit Variable. Diese Variablen wiederum sind bestandteil eines Arrays. So kann ich per Index bequem nacheinander in einer Schleife auf die Variablen zugreifen. -> myVar[i] <- Jedoch verschwende ich für jeden Zustand 7Bit.

2. Ich Speicher die Zustände in Bitfeldern die jeweils 9Bit breit sind. Hat das Speicher gespart? Das Problem ist jedoch, dass ich dann meines Wissens nach nicht in einer Schleife nacheinander auf die Zustände zugreifen kann. Behelfen könnte ich mir mit einem Aray aus Zeigern auf die einzelnen Bitfelder. Aber wenn ein Zeiger selbst mehr als 6Bit Speicherplatz einnimmt, dann komme ich am Ende in der Summe nicht auf weniger Speicherverbrauch.

Desweiteren weiß ich nicht ob bei einer der Methoden nicht ohnehin automatisch noch diverse Zeiger angelegt werden, welche den Speicherbedarf erhöhen.

Könnt ihr meine Ideen beurteilen, verbessern, oder habt ihr eine komplett andere Idee?

Vielen Dank
Schmidt