Das lernst du heute
- Felder herausziehen und einsetzen
- Höchstens 53 Bit
- Werte packen
Vorgestern hast du Felder mit srl und and herausgeholt. Zwei Befehle erledigen das in einer Zeile – und auch den umgekehrten Weg.
ext: ein Feld herausziehen
ext r? a start länge holt aus a das Feld ab Bit start mit länge Bits und legt es rechtsbündig ins Register:
ext r0 %1101_0110 4 4 # Bits 4–7: %1101 = 13
ext r1 %1101_0110 1 2 # Bits 1–2: %11 = 3
Das entspricht srl plus and mit einer Maske aus länge Einsen.
ins: ein Feld einsetzen
ins r? wert start länge schreibt die unteren länge Bits von wert ab Bit start in das Register und lässt alle anderen Bits stehen. Das Register ist Ziel und Ausgangswert:
move r0 $FF # %1111_1111
ins r0 0 2 3 # Bits 2–4 auf 0: 227
ins r0 5 2 3 # Bits 2–4 auf %101: 247
Ist wert zu groß für das Feld, schneidet ins ab: Nur die unteren länge Bits kommen hinein.
Höchstens 53 Bit
Ein Feld darf nicht über Bit 52 hinausreichen: start + länge höchstens 53, länge mindestens 1. Sonst hält der Chip mit einem Fehler an (PayloadOverflow, ShiftOverflow oder ShiftUnderflow). Das ist die 53-Bit-Grenze der Kommazahl vom Montag.
Werte packen
Mit Feldern packst du mehrere kleine Werte in eine Zahl. Ein Beispiel für eine Pumpstation:
| Bits | Feld | Bereich |
|---|---|---|
| 0–3 | Zustand | 0–15 |
| 4–11 | Druck in 10-kPa-Schritten | 0–255 |
| 12 | Alarm | 0–1 |
13 Bits für drei Werte: ein Register oder ein Stack-Platz statt drei. Nächste Woche nutzt du das, um Werte zwischen Chips zu verschicken.
Ein Feld nimmt nur ganze, nicht negative Zahlen. 101,3 wird beim Einsetzen zu 101, und −5 landet als Bitmuster aus lauter Einsen im Feld. Runde vorher und halte negative Werte draußen.
Schaubild
Übung
Aufgabe
In paket (r0) steckt das Statuswort der Pumpstation (Tabelle oben). Ohne srl und and:
zustand= Bits 0–3druck= Bits 4–11 mal 10, also in kPaalarm= Bit 12neu= dasselbe Paket, aber mit Zustand 9
Hinweise
Hinweis 1
ext zustand paket 0 4 holt den Zustand.
Hinweis 2
Druck: ext druck paket 4 8, dann mul mit DRUCKSCHRITT.
Hinweis 3
Neues Paket: erst move neu paket, dann ins neu 9 0 4.
Quiz
4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden