The Squeeze Project: Executable Code Compression

In recent years there has been an increasing trend towards the incorporation of computers into a wide variety of mobile and embedded devices such as palm-tops, telephones, embedded controllers, etc. In many of these devices, the amount of memory available is limited, due to considerations such as space, weight, power consumption, or price. At the same time, there is an increasing desire to use more and more sophisticated software in such devices, such as encryption software in telephones, speech/image processing software in palm-tops, fault diagnosis software in embedded processors, etc. Since these devices typically have no secondary storage, an application that requires more memory than is available will not be able to run. This makes it desirable to try and reduce the memory footprint -- the instructions and data -- of applications where possible. The goal of the Squeeze Project is to devise techniques for reducing the memory footprint of executables.



Source code is available for a prototype code compaction system that we have developed for the Compaq Alpha architecture.

Squeeze version 0.3.4, Feb 2001

Squeeze version 0.2, March 2000


Squeeze++ is an evolution of Squeeze, developed by Dr. Bjorn De Sutter at the University of Gent, Belgium. In addition to a number of performance enhancements to Squeeze, this system compacts both code and statically allocated data, and applies some code reuse techniques specifically targeted at C++ language features such as inheritance and the use of templates.


Saumya Debray
Will Evans
Koen De Bosschere (University of Gent, Belgium)
Bjorn De Sutter (University of Gent, Belgium)

For questions/comments, contact:

This research was supported in part by the National Science Foundation under grant nos. ASC-9720738 and CCR-0073394.

Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.