A data compressor uses data known to exist on a destination computer for
compressing an input data stream by encoding portions of the input data
stream as references to matching portions of the known data. The known
data is preprocessed to better correlate with the input data stream. The
preprocessing includes identifying and modifying internal references in
the known data, such as relative offsets and addresses of jump and call
instructions in executable code or cross references and hyperlinks in
documents. The preprocessing is driven by generating a set of data that
describes specific individual modifications or alternatively indicates
relationships between the known data and the input data stream, such as
code or data block motion, from which individual modifications can be
deterministically made. This generated descriptive data is included with
the compressed data stream so that identical preprocessing can be applied
to the known data at the destination computer based on the generated
descriptive data prior to decompression. Preprocessing the known data
improves compression of the input data stream since changed internal
references that interrupt matches of the input data stream to the known
data can be eliminated.
Un compresseur de données emploie des données connues pour exister sur un ordinateur de destination pour comprimer un flux de données d'entrée en codant des parties du flux de données d'entrée comme références aux parties assorties des données connues. Les données connues sont prétraitées pour améliorer la corrélation avec le flux de données d'entrée. Le prétraitement inclut des références internes d'identification et de modification dans les données connues, telles que des excentrages et des adresses relatifs des instructions de saut et d'appel en code ou renvois exécutables et des hyperliens dans les documents. Le prétraitement est conduit en produisant d'un ensemble de données qui décrivent différentes modifications spécifiques ou indiquent alternativement des rapports entre les données connues et le flux de données d'entrée, tel que le mouvement de bloc de code ou de données, à partir duquel différentes modifications peuvent être de manière déterministe faites. Ces données descriptives produites sont incluses avec le flux de données comprimé de sorte que le prétraitement identique puisse être appliqué aux données connues à la destination sur ordinateur sur les données descriptives produites avant la décompression. Le prétraitement des données connues améliore la compression du flux de données d'entrée puisqu'on peut éliminer des références internes changées qui interrompent des matchs du flux de données d'entrée aux données connues.