|
ABSTRACT
More and more computers are being incorporated in devices where the available amount of memory is limited. This contrasts with the increasing need for additional functionality and the need for rapid application development. While object-oriented programming languages, providing mechanisms such as inheritance and templates, allow fast development of complex applications, they have a detrimental effect on program size. This paper introduces new techniques to reuse the code of whole procedures at the binary level and a supporting technique for data reuse. These techniques benefit specifically from program properties originating from the use of templates and inheritance. Together with our previous work on code abstraction at lower levels of granularity, they achieve additional code size reductions of up to 38% on already highly optimized and compacted binaries, without sacrificing execution speed. We have incorporated these techniques in Squeeze++, a prototype link-time binary rewriter for the Alpha architecture, and extensively evaluate them on a suite of 8 real-life C++ applications. The total code size reductions achieved post link-time (i.e. without requiring any change to the compiler) range from 27 to 70%, averaging at around 43%.
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
|
Ole Agesen , David Ungar, Sifting out the gold: delivering compact applications from an exploratory object-oriented programming environment, Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications, p.355-370, October 23-28, 1994, Portland, Oregon, United States
|
| |
2
|
B. S. Baker and U. Manber. Deducing similarities in Java sources from bytecodes. In USENIX Annual Technical Conference, pages 179--190, June 1998.
|
 |
3
|
|
 |
4
|
|
| |
5
|
R. Cohn, D. Goodwin, P. Lowney, and N. Rubin. Spike: An optimizer for alpha/nt executables. In USENIX Windows NT Workshop, Aug. 1997.
|
 |
6
|
|
 |
7
|
Bjorn De Sutter , Bruno De Bus , Koen De Bosschere , Saumya Debray, Combining Global Code and Data Compaction, Proceedings of the ACM SIGPLAN workshop on Languages, compilers and tools for embedded systems, p.29-38, August 2001, Snow Bird, Utah, United States
|
 |
8
|
Jeffrey Dean , Greg DeFouw , David Grove , Vassily Litvinov , Craig Chambers, Vortex: an optimizing compiler for object-oriented languages, Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.83-100, October 06-10, 1996, San Jose, California, United States
|
 |
9
|
|
 |
10
|
|
| |
11
|
Embedded C++ Technical Committee. The Embedded C++ Specification, Oct. 1999.
|
 |
12
|
Jens Ernst , William Evans , Christopher W. Fraser , Todd A. Proebsting , Steven Lucco, Code compression, Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation, p.358-365, June 16-18, 1997, Las Vegas, Nevada, United States
|
| |
13
|
|
| |
14
|
|
 |
15
|
|
 |
16
|
|
 |
17
|
|
| |
18
|
C. Fraser and T. Proebsting. Custom instruction sets for code compression. http://research.microsoft.com/ toddpro, 1995.
|
| |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
Darko Kirovski , Johnson Kin , William H. Mangione-Smith, Procedure based program compression, Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture, p.204-213, December 01-03, 1997, Research Triangle Park, North Carolina, United States
|
| |
23
|
K. D. Kissell. MIPS16: High-density MIPS for the embedded market. In Proc. of Real Time Systems '97 (RTS97), 1997.
|
| |
24
|
|
| |
25
|
J. Levine. Linkers & Loaders. Morgan Kaufmann Publishers, 2000.
|
| |
26
|
|
 |
27
|
|
| |
28
|
|
| |
29
|
B. Schwarz, G. Andrews, M. Legendre, and S. Debray. PLTO: A link-time optimizer for the intel ia-32 architecture. In Proc. Workshop on Binary Translation (WBT), Sept. 2001.
|
 |
30
|
|
 |
31
|
|
 |
32
|
|
 |
33
|
Frank Tip , Chris Laffra , Peter F. Sweeney , David Streeter, Practical experience with an application extractor for Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.292-305, November 01-05, 1999, Denver, Colorado, United States
|
 |
34
|
Frank Tip , Jens Palsberg, Scalable propagation-based call graph construction algorithms, Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.281-293, October 2000, Minneapolis, Minnesota, United States
|
| |
35
|
TriMedia Technologies Inc. TriMedia32 Architecture, Oct. 2000.
|
| |
36
|
J. Turley. Thumb squeezes ARM code size. Microprocessor Report, 9(4):1--5, Mar. 1995.
|
 |
37
|
Vasanth Bala , Evelyn Duesterwald , Sanjeev Banerjia, Dynamo: a transparent dynamic optimization system, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.1-12, June 18-21, 2000, Vancouver, British Columbia, Canada
|
| |
38
|
|
| |
39
|
|
| |
40
|
|
CITED BY 17
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A. Dreweke , M. Worlein , I. Fischer , D. Schell , Th. Meinl , M. Philippsen, Graph-Based Procedural Abstraction, Proceedings of the International Symposium on Code Generation and Optimization, p.259-270, March 11-14, 2007
|
|
|
|
|
|
|
|
|
|
|
|
|
|