Embodiments of systems, methods, and computer program products are provided
for compressing a computer program based on a compression criterion and
executing the compressed program. For example, a computer program may be
compressed by scanning an initial computer program to identify one or more
uncompressed instructions that have a high frequency of use. A storage
mechanism, such as a data structure, may then be populated with the
identified uncompressed instructions. A compressed computer program may be
generated by respectively replacing one or more of the identified
uncompressed instructions with a compressed instruction that identifies a
location of the corresponding uncompressed instruction in the storage
mechanism. Additional compression of the computer program may be achieved
by scanning the compressed computer program to identify one or more
uncompressed instructions that have a high frequency of use when at least
a portion of their instruction operand is ignored. A second storage
mechanism, such as a data structure, may then be populated with the
identified uncompressed instructions. Finally, a further compressed
computer program may be generated by respectively replacing one or more of
the identified uncompressed instructions with a second type of compressed
instruction that identifies a location of the corresponding uncompressed
instruction in the second storage mechanism.
Verkörperungen der Systeme, der Methoden und der Computerprogrammprodukte werden für das Zusammendrücken eines Computerprogramms zur Verfügung gestellt, das auf einem Kompression Kriterium basiert und die Durchführung des komprimierten Programms. Z.B. kann ein Computerprogramm zusammengedrückt werden, indem man ein Ausgangscomputerprogramm ablichtet, um eine oder mehr uncompressed Anweisungen zu kennzeichnen, die eine Hochfrequenz des Gebrauches haben. Eine Speichereinheit, wie eine Datenstruktur, kann mit den gekennzeichneten uncompressed Anweisungen dann bevölkert werden. Ein komprimiertes Computerprogramm kann erzeugt werden, indem man beziehungsweise eine oder mehr der gekennzeichneten uncompressed Anweisungen mit einer komprimierten Anweisung ersetzt, die eine Position der entsprechenden uncompressed Anweisung in der Speichereinheit kennzeichnet. Zusätzliche Kompression des Computerprogramms kann erzielt werden, indem man das komprimierte Computerprogramm ablichtet, um eine oder mehr uncompressed Anweisungen zu kennzeichnen, die eine Hochfrequenz des Gebrauches haben, wenn mindestens ein Teil ihrer Anweisung Rechengröße ignoriert wird. Eine zweite Speichereinheit, wie eine Datenstruktur, kann mit den gekennzeichneten uncompressed Anweisungen dann bevölkert werden. Schließlich kann ein weiteres komprimiertes Computerprogramm erzeugt werden, indem man beziehungsweise eine oder mehr der gekennzeichneten uncompressed Anweisungen mit einer zweiten Art komprimierte Anweisung ersetzt, die eine Position der entsprechenden uncompressed Anweisung in der zweiten Speichereinheit kennzeichnet.