Unreachable procedures in object-oriented programming
ACM Letters on Programming Languages and Systems (LOPLAS)
Link-time optimization of address calculation on a 64-bit architecture
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A retargetable, optimizing linker
A retargetable, optimizing linker
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Communications of the ACM
Procedure based program compression
MICRO 30 Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture
DIGITAL FX!32: combining emulation and binary translation
Digital Technical Journal
A study of dead data members in C++ applications
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Enhanced code compression for embedded RISC processors
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Automatic inference of models for statistical code compression
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Practical experience with an application extractor for Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A code compression system based on pipelined interpreters
Software—Practice & Experience
Compiler techniques for code compaction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamo: a transparent dynamic optimization system
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Scalable propagation-based call graph construction algorithms
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java bytecode compression for low-end embedded systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Alto: a link-time optimizer for the Compaq alpha
Software—Practice & Experience
Combining Global Code and Data Compaction
OM '01 Proceedings of the 2001 ACM SIGPLAN workshop on Optimization of middleware and distributed systems
Analyzing and compressing assembly code
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Sharing code among instances of Ada generics
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Profile-guided code compression
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
MOS '96 Selected Presentations and Invited Papers Second International Workshop on Mobile Object Systems - Towards the Programmable Internet
Generating compact code for generic subprograms
Generating compact code for generic subprograms
Efficient execution of compressed programs
Efficient execution of compressed programs
A decompression core for powerPC
IBM Journal of Research and Development
Spike: an optimizer for alpha/NT executables
NT'97 Proceedings of the USENIX Windows NT Workshop on The USENIX Windows NT Workshop 1997
Deducing similarities in Java sources from bytecodes
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Practical extraction techniques for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the side-effects of code abstraction
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Post-pass compaction techniques
Communications of the ACM - Program compaction
System-wide compaction and specialization of the linux kernel
LCTES '05 Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
A dictionary construction technique for code compression systems with echo instructions
LCTES '05 Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Link-time binary rewriting techniques for program compaction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generic software pipelining at the assembly level
SCOPES '05 Proceedings of the 2005 workshop on Software and compilers for embedded systems
Bidirectional liveness analysis, or how less than half of the alpha's registers are used
Journal of Systems Architecture: the EUROMICRO Journal
Link-time compaction and optimization of ARM executables
ACM Transactions on Embedded Computing Systems (TECS)
Refactoring for Parameterizing Java Classes
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Graph-Based Procedural Abstraction
Proceedings of the International Symposium on Code Generation and Optimization
Revisiting Java Bytecode Compression for Embedded and Mobile Computing Environments
IEEE Transactions on Software Engineering
Automated reduction of the memory footprint of the Linux kernel
ACM Transactions on Embedded Computing Systems (TECS) - Special Section LCTES'05
Evaluating the adoption potential of design science efforts: The case of APSARA
Decision Support Systems
Code compression for performance enhancement of variable-length embedded processors
ACM Transactions on Embedded Computing Systems (TECS)
Comparison and evaluation of code clone detection techniques and tools: A qualitative approach
Science of Computer Programming
Instruction Set Limitation in Support of Software Diversity
Information Security and Cryptology --- ICISC 2008
Clone detection via structural abstraction
Software Quality Control
Code compaction of matching single-entry multiple-exit regions
SAS'03 Proceedings of the 10th international conference on Static analysis
Steganography for executables and code transformation signatures
ICISC'04 Proceedings of the 7th international conference on Information Security and Cryptology
Hi-index | 0.00 |
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%.