Zum Hauptinhalt springen

3.1.1.4. Sequence Execution (Sequenzausführung)

Sobald sowohl Literale als auch Sequenzen dekodiert sind, werden sie kombiniert, um den dekodierten Inhalt des Blocks zu erzeugen.

Jede Sequenz besteht aus einem Tupel (literals_length, offset_value, match_length), das wie im Sequences_Section (Abschnitt 3.1.1.3.2) beschrieben dekodiert wurde. Um eine Sequenz auszuführen, werden zunächst literals_length Bytes aus den dekodierten Literalen zur Ausgabe kopiert.

Dann werden match_length Bytes aus zuvor dekodierten Daten kopiert. Der Offset, von dem kopiert werden soll, wird durch offset_value bestimmt:

  • if Offset_Value > 3: dann ist der Offset Offset_Value - 3;

  • if Offset_Value is from 1-3: der Offset ist ein spezieller Wiederholungsoffset-Wert. Siehe Abschnitt 3.1.1.5 für Informationen darüber, wie der Offset in diesem Fall bestimmt wird.

Der Offset wird von der aktuellen Position (nach dem Kopieren der Literale) definiert, sodass ein Offset von 6 und eine Übereinstimmungslänge von 3 bedeutet, dass 3 Bytes von 6 Bytes zuvor kopiert werden sollten. Beachten Sie, dass alle Offsets, die zu zuvor dekodierten Daten führen, kleiner als die Window_Size sein müssen, die im Frame_Header_Descriptor (Abschnitt 3.1.1.1.1) definiert ist.


Ausführungsfluss Beispiel

Beispiel 1: Grundlegende Sequenzausführung

Angenommen, die Sequenz ist (literals_length=5, offset_value=10, match_length=4):

  1. Literale kopieren: Kopiere 5 Bytes aus dem Literal-Abschnitt zur Ausgabe
  2. Offset berechnen: Offset_Value=10 > 3, also Offset = 10 - 3 = 7
  3. Übereinstimmung kopieren: Kopiere 4 Bytes von 7 Bytes vor der Ausgabeposition

Beispiel 2: Verwendung eines Wiederholungsoffsets

Angenommen, die Sequenz ist (literals_length=3, offset_value=1, match_length=8):

  1. Literale kopieren: Kopiere 3 Bytes aus dem Literal-Abschnitt zur Ausgabe
  2. Wiederholungsoffset verwenden: offset_value=1 bedeutet Repeated_Offset1 verwenden
  3. Übereinstimmung kopieren: Kopiere 8 Bytes von der Repeated_Offset1-Position

Wichtige Einschränkungen

  1. Window_Size-Begrenzung: Alle Offsets müssen < Window_Size sein
  2. Datenintegrität: Stellen Sie sicher, dass Offsets nicht den Bereich der dekodierten Daten überschreiten
  3. Literale erschöpft: Nach Ausführung aller Sequenzen werden verbleibende Literale am Ende der Ausgabe angehängt