scispace - formally typeset
Journal ArticleDOI

x86 Instruction Reordering for Code Compression

Zsombor Paroczi
- 01 Jan 2013 - 
- Vol. 21, Iss: 1, pp 177-190
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.