ACM Home Page
Please provide us with feedback. Feedback
Compiler techniques for code compaction
Full text PdfPdf (409 KB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 22 ,  Issue 2  (March 2000) table of contents
Pages: 378 - 415  
Year of Publication: 2000
ISSN:0164-0925
Authors
Saumya K. Debray  Univ. of Arizona, Tucson
William Evans  Univ. of Arizona, Tucson
Robert Muth  Compaq Computer Corp., Shrewsbury, MA
Bjorn De Sutter  Univ. of Ghent, Ghent, Belgium
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 23,   Downloads (12 Months): 150,   Citation Count: 57
Additional Information:

abstract   references   cited by   index terms   review   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/349214.349233
What is a DOI?

ABSTRACT

In recent years there has been an increasing trend toward the incorpor ation of computers into a variety of devices where the amount of memory available is limited. This makes it desirable to try to reduce the size of applications where possible. This article explores the use of compiler techniques to accomplish code compaction to yield smaller executables. The main contribution of this article is to show that careful, aggressive, interprocedural optimization, together with procedural abstraction of repeated code fragments, can yield significantly better reductions in code size than previous approaches, which have generally focused on abstraction of repeated instruction sequences. We also show how “equivalent” code fragments can be detected and factored out using conventional compiler techniques, and without having to resort to purely linear treatments of code sequences as in suffix-tree-based approaches, thereby setting up a framework for code compaction that can be more flexible in its treatment of what code fragments are considered equivalent. Our ideas have been implemented in the form of a binary-rewriting tool that reduces the size of executables by about 30% on the average.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
2
 
3
BAKER, B. S. AND MANBER, U. 1998. Deducing similarities in Java sources from bytecodes. In Proc. USENIX Annual Technical Conference. Usenix, Berkeley, CA, 179-190.
 
4
5
 
6
DEBRAY, S., EVANS, W., MUTH, R., AND DE SUTTER, B. 2000. Compiler techniques for code compaction. Tech. Rep. 00-04, Dept. of Computer Science, The University of Arizona. Mar.
7
 
8
9
 
10
FRASER, C. AND PROEBSTING, T. 1995. Custom instruction sets for code compression. Unpublished manuscript, http ://research.microsoft. com/ toddpro/papers/pldi2, ps.
11
 
12
 
13
14
 
15
 
16
MUTH, R., DEBRAY, S. I~., WATTERSON, S., AND BOSSCHERE, I~. D. 1998. alto : A link-time optimizer for the DEC Alpha. Tech. Rep. 98-14, Dept. of Computer Science, The University of Arizona. Dec. To appear in Software Practice and Experience.
17
18
 
19
VAN DE WIEL, R. 2000. The "Code Compaction" Bibliography. http://www.win.tue.nl/cs/pa/rikvdw/bibl.html.
 
20
ZASTRE, M. J. 1993. Compacting object code via parameterized procedural abstraction. M.S. thesis, Dept. of Computing Science, University of Victoria.

CITED BY  57


REVIEW

"Robert Ballance : Reviewer"

Cell phones, vehicles, appliances—all use embedded microcontrollers. Manufacturers need to fit increasing sophisticated programs into small amounts of memory. Code compaction techniques are needed in order to meet these size   more...

Collaborative Colleagues:
Saumya K. Debray: colleagues
William Evans: colleagues
Robert Muth: colleagues
Bjorn De Sutter: colleagues