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
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.
Profile-Guided Code Compression, by Saumya Debray and William Evans.
Proc. ACM SIGPLAN 2002 Conference on Programming Language Design
and Implementation (PLDI 2002).
Global Code and Data Compaction,
by Bjorn De Sutter, Bruno De Bus, Koen De Bosschere, and Saumya
Proc. ACM SIGPLAN Workshop on Languages, Compilers, and
Tools for Embedded Systems (LCTES'2001), June 2001.
Techniques for Code Compaction, by Saumya Debray, William Evans,
Robert Muth and Bjorn De Sutter.
ACM Transactions on Programming Languages and
Systems vol. 22 no. 2, March 2000, pp. 378-415.
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.
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.