Jag undrar om det finns något bra sätt att komma åt dom olika sektionerna i ett datapaket när sektioner är uppdelade över två olika bytes?
Jag har gjort ett misslyckat försök med en union innehållande en struct och bitfälts-variabler med olika bredd, det blev väldigt konstiga värden då.
Första fältet (cmd) är 6 bitar brett, sen 5 bitar (func) och resterande är 7 bitar breda.
Det som jag gjort här nedan fungerar, men frågan är om det går att göra på något bättre sätt?
Utan att lusläsa ditt program så ser det bra ut, gott om parenteser, och egen kontroll ner på bit-nivå.
Dock saknas kommentarer för varje rad så att man exakt vet vad som händer.
Det blir svårläst i ett senare skede när man skall förstå hur man tänkte då.
Så som du gjort är enligt min erfarenhet det bästa och säkraste sättet att veta exakt vad som händer.
Att hålla på med unioner, structer, bitfält m.m. och överlåta till nån okänd kompilator-programmerare att bestämma hur resultatet skall bli är normalt ingen bra metod.
Så, lägg till kommentarer så är din lösning den bästa, säkraste, enklaste och lättaste att förstå.
Och du fick ju ett exempel från din andra tråd med bitshift-frågan hur en till synes enkel operation inte blir som du tänkt.
När man bitmanipulerar gäller full egenkontroll.
Om du kör programmet i en 32-bits processor är det mer effektivt om alla byten ligger i en 32-bits variabel.
Kör du med en 8-bitare är det svårt att göra effektivare.