Ich vermute du möchtest kein Padding einfügen (also immer 1. erfüllen) und dabei 2. und 3. optimieren.
Genau. Also die Kriterien sollen in absteigender Reihenfolge erfüllt sein, wobei 1. das Wichtigste ist. Padding darf nur dann vorkommen, solange kein neues Byte angefangen werden müsste.
Hintergrund zu 2. und 3. ist, dass ich mir überlegt habe, dass im Falle von:
2) Zugriffe immer über eine einzelne Read-Operation (+ggfls. AND und SHR) durchgeführt werden können
3) Man sich zusätzlich noch das Shiften spart, sofern das Least-Significant-Bit des Feldes mit dem LSB des entsprechenden Bytes zusammen fällt
Wenn mir kein Denkfehler unterlaufen ist, müsste man damit die optimale Performance erreichen können.