Robert F. schrieb:
> Meines Wissens nach versucht der Compiler bei der "var:n"-Notation
> Variablen zusammenzufassen,
Es läuft darauf hinaus.
Aber eigentlich definierst du damit nur 2 Bitfelder.
> in diesen Fall also (hoffentlich) das
> einzelne Bit von state und chan_id.
Kann man so sagen
> Ist das bei 8-bit Systemen (AVR) sinnvoll in Hinblick auf Verbrauch von
> (S)RAM und insbesondere bei Zugriffen?
Kommt drauf an.
Wenn du 2 Millionen derartige Objekte hast, wird die Speicherersparnis
schon beträchtlich sein.
Hast du aber nur 2 davon, spart das gerade einmal 2 Bytes ein :-)
aber
> Weil die Information, dass das x. Bit eines Registers zu einer (anderen)
> Variable gehört, muss ja irgendwo gespeichert werden
gespeichert in dem Sinne wird es nirgends im Programm. Der Compiler
nimmt das zur Kentnis und muss beim Zugriff auf die Bitfelder Code
generieren, die nur die angegebenen Bits setzen/löschen. In dem Sinne
...
(Kosten: min.
> 8bit), und abgerufen werden (Zugriffskosten)...
... werden die Zugriffskosten höher und logischerweise auch der
Programmcode, der für den Zugriff verantwortlich ist.
In der Programmierung gibt es eine 'Faustregel - Grundgesetz':
"Time for Space, and vice versa"
Bedeutet: Man erkauft sich oft geringere Laufzeit mit mehr
Speicherverbrauch. Und auch umgekehrt: geringeren Speicherverbrauch mit
erhöhter Laufzeit.