Journal ArticleDOI
x86 Instruction Reordering for Code Compression
Reads0
Chats0
TLDR
This work shows that reordering instructions within basic blocks using data ow constraints can improve code compression without changing the behavior of the code.Abstract:
Runtime executable code compression is a method which uses standard data compression methods and binary machine code transformations to achieve smaller le size, yet maintaining the ability to execute the compressed le as a regular executable. With a disassembler, an almost perfect instructional and functional level disassembly can be generated. Using the structural information of the compiled machine code each function can be split into so called basic blocks. In this work we show that reordering instructions within basic blocks using data ow constraints can improve code compression without changing the behavior of the code. We use two kinds of data aection (read, write) and 20 data types including registers: 8 basic x86 registers, 11 eags, and memory data. Due to the complexity of the reordering, some simplication is required. Our solution is to search local optimum of the compression on the function level and then combine the results to get a suboptimal global result. Using the reordering method better results can be achieved, namely the compression size gain for gzip can be as high as 1.24%, for lzma 0.68% on the tested executables.read more
References
More filters
Dissertation
Efficient, transparent, and comprehensive runtime code manipulation
TL;DR: D DynamoRIO is presented, a fully-implemented runtime code manipulation system that supports code transformations on any part of a program, while it executes, with zero to thirty percent time and memory overhead on both Windows and Linux.
Journal ArticleDOI
Compiler techniques for code compaction
TL;DR: This article explores the use of compiler techniques to accomplish code compaction to yield smaller executables and shows that careful, aggressive, interprocedural optimization, together with procedural abstraction of repeated code fragments, can yield significantly better reductions in code size than previous approaches.
PLTO: A Link-Time Optimizer for the Intel IA-32 Architecture
TL;DR: This paper describes PLTO, a link-time instrumentation and optimization tool developed for the Intel IA-32 architecture, and how it addresses problems of this architecture and the resulting performance improvements it is able to achieve.
Proceedings ArticleDOI
Compressing Java class files
TL;DR: This paper has developed a wire-code format for collections of Java class files that is typically 1/2 to 1/5 of the size of the corresponding compressed jar file.
Journal ArticleDOI
Survey of code-size reduction methods
TL;DR: It is fairly hard to make any fair comparisons of the methods or draw conclusions about their applicability, according to an extensive assessment criteria for evaluating the methods.