| DEBRAY,S.K., EVANS,W.,MUTH, R., AND B. DE SUTTER. 2000. Compiler techniques for code compression. ACMTrans. Program. Lang. Operating Syst. 22,2(Mar.), 378--415. |
....place in the continuum of representation levels for the application at hand. 6 Compression of Abstract Syntax Trees Among the major approaches to mobile code compression are (a) schemes that use code factoring compiler optimizations to reduce code size while leaving the code directly executable [12], b) schemes that compress object code by exploiting certain statistical properties of the underlying instruction format [14, 18, 25, 31] and (c) schemes that compress the abstract syntax tree (AST) of a program by using either statistical [7, 13] or dictionary based approaches [17] Our ....
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....[28,29] uses PPM to drive the arithmetic coder in a fashion similar to ours and Cheney [6] suggests similar ideas for term compression. Franz [11] was the rst to use a tree encoding for mobile code. Even though seemingly placed in the same application domain, research on code compression [9,12,18,7] is generally not comparable to the above line of work on source text and AST compression. The reason is that code compression focuses much more on the speci cs of machine code like choice of op codes, operand formats, lack of apparent high level structure, and so on. Nevertheless, some overlap ....
Debray, S., W. Evans and R. Muth, Compiler techniques for code compression, in: Workshop on Compiler Support for System Software, 1999.
....is that the reduction of redundancy increases the e#ectiveness of encryption by making statistical attacks harder. Among the major approaches to mobile code compression are (1) schemes that use code factoring compiler optimizations to reduce code size while leaving the code directly executable [DEM99], 2) schemes that compress object code by exploiting certain statistical properties of the underlying instruction format 97, Fra99, Luc00, Pug99] and (3) schemes that compress the abstract syntax tree (AST) of a program by using either dictionary based [FK97] or statistical [Cam88, ECM98] ....
....semantics in their tree) Franz [Fra94, FK97] was the first to use a tree encoding for (executable) mobile code. He uses a dictionary based encoding to compress the abstract syntax tree of Oberon programs. Even though seemingly placed in the same application domain, research on code compression [EEF 97, Fra99, Luc00, DEM99] is generally not comparable to the above line of work on source text and AST compression. The reason is that code compression focuses much more on the specifics of machine code Unfortunately, we learned of Cameron s and Tarhio s work only after we developed our solution independently of both. ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....similar to tree compression in order to compress PCC proofs. Rather than transmitting the entire proof, only those points in the proof are transmitted where a choice must be made among alternative paths. Even though seemingly placed in the same application domain, research on code compression [18, 22, 36, 16] is generally not comparable to the above line of work on source text and AST compression. The reason is that code compression focuses much more on the speci cs of machine code such as choice of opcodes, operand formats, lack of apparent high level structure, and so on. Nevertheless, will we try ....
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....based on the order of blocks in the program. Experiments on Windows NT applications produced promising results. Our work builds upon this project (see Section 3 for more details) Other projects on comparing two binary programs were mostly done for the purpose of code patching or code compression [BM98, BMM99, DEM99]. These algorithms generally look for code regions that have identical or highly similar contents. They typically view each code region individually, and deal with a fixed set of simple changes. The goal of profile propagation is much broader. Our binary matching is designed to accommodate all ....
S. Debray, W. Evans, and R. Muth, "Compiler Techniques for Code Compression." Proc. of the ACM SIGPLAN 1999 Workshop on Compiler Support for System Software.
....sequences. Once the sequences are identical, then procedure abstraction or cross jumping is applied. They report a 5 average code size reduction and 6 average decrease in dynamic instructions when their code reduction optimizations are applied to optimized programs. Debray et al. Debray et al. [Debray99] also combine the techniques of procedure abstraction and register renaming in a binary rewriting tool. The primary difference is that they use basic blocks, rather than live ranges as the unit of renaming registers. They find basic blocks with matching data flow graphs and attempt to rename the ....
S. Debray, W. Evans, and R. Muth, "Compiler Techniques for Code Compression", Proc. 2nd Workshop on Compiler Support for Systems Software (WCSSS-99), May 1999.
....place in the continuum of representation levels for the application at hand. 6 Compression of Abstract Syntax Trees Among the major approaches to mobile code compression are (a) schemes that use code factoring compiler optimizations to reduce code size while leaving the code directly executable [12], b) schemes that compress object code by exploiting certain statistical properties of the underlying instruction format [14, 18, 25, 31] and (c) schemes that compress the abstract syntax tree (AST) of a program by using either statistical [7, 13] or dictionary based approaches [17] Our ....
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....additional processor cycles to decrease the demand on storage access [FK97] leading to a net gain in performance. Among the major approaches to mobile code compression are (1) schemes that use code factoring compiler optimizations to reduce code size while leaving the code directly executable [DEM99] 2) schemes that compress object code by exploiting certain statistical properties of the underlying instruction format [EEF 97, Fra99, Luc00, Pug99] and (3) schemes that compress the abstract syntax tree (AST) of a program by using either dictionary based [FK97] or statistical [Cam88, ....
....[Fra94, FK97] was the first to use a tree encoding for (executable) mobile code. He uses a dictionary based encoding to compress the abstract syntax tree of Oberon programs. Even though seemingly placed in the same application domain, research on code compression [EEF 97, Fra99, Luc00, DEM99] is generally not comparable to the above line of work on source text and AST compression. The reason is that code compression focuses much more on the specifics of machine code like choice of op codes, operand formats, lack of apparent high level structure, and so on. Nevertheless, will we try ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....trees are used to identify repetitions in the native executable code. The code saving is on average 5 , that is a 95 factor of compression. This work di ers from ours since it is done on native code where it is not possible to create new instructions and new instruction formats. Debray et al. [5] propose a similar approach but it is done at the compiler level which brings more opportunity for compaction. They obtain an average 78 factor of compression. Hoogerbrugge et al. 10] have very good results in producing compact code and in spirit it is one of the closest work to ours. It is ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, 1999.
....additional CPU cycles in order to decrease the demand on storage access [FK97] leading to a net win in performance. Among the major approaches to mobile code compression are (a) schemes that use code factoring compiler optimizations to reduce code size while leaving the code directly executable [DEM99] b) schemes that compress object code by exploiting certain statistical properties of the underlying instruction format [EEF 97, Fra99, Luc00, Pug99] and (c) schemes that compress the abstract syntax tree (AST) of a program by using either dictionary based [FK97] or statistical [Cam88, ....
....[Fra94, FK97] was the first to use a tree encoding for (executable) mobile code. He uses a dictionary based encoding to compress the abstract syntax tree of Oberon programs. Even though seemingly placed in the same application domain, research on code compression [EEF 97, Fra99, Luc00, DEM99] is generally not comparable to the above line of work on source text and AST compression. The reason is that code compression focuses much more on the specifics of machine code like choice of op codes, operand formats, lack of apparent high level structure, and so on. Nevertheless, will we try ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....place in the continuum of representation levels for the application at hand. 6 Compression of Abstract Syntax Trees Among the major approaches to mobile code compression are (a) schemes that use code factoring compiler optimizations to reduce code size while leaving the code directly executable [12], b) schemes that compress object code by exploiting certain statistical properties of the underlying instruction format [14, 18, 25, 31] and (c) schemes that compress the abstract syntax tree (AST) of a program by using either statistical [7, 13] or dictionary based approaches [17] Our ....
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....sequences of instructions with a branching instruction. Sux trees are used to identify repetitions in the native executable code. The code saving is on average 5 . This work di ers from ours since it is done on native code where it is not possible to create new instructions. Debray et al. [5] propose a similar approach but it is done at the compiler level which brings more opportunity for compaction. They obtain an average 78 factor of compression. Hoogerbrugge et al. 11] have very good results in producing compact code and in spirit it is one of the closest work to ours. It is ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, 1999.
....is rarely used in desktop compilers since they tend to concentrate on maximizing speed. Cross calling could be used to make code t in the instruction cache and thereby make it run faster but that is outside the scope of this paper. For more information about cross calling and cross jumping, see [6, 12]. 7 3 Stack Layout Optimization: Basic Concepts We try to keep the discussion as general as possible as stack layout optimization is applicable to any architecture with an indirect load instruction. 3.1 De nitions 1. The number of bytes that the indirect load instruction can access (2 N ....
....to the code and our job is to assign o sets to live ranges. 28 8.4 Code Size optimization There has not been much work done in the eld of minimizing the stack size in recent years. Most of the work done on size optimization have been done on reducing code size. For example, Debray et. al [6] did a recent study on code compression but do not mention the stack. Bowman et al. 2] did some work on reducing both the size of the stack and the size of the code. Bowman recommend a heuristic that places large variables with many interferences on the stack rst as this allows them to share ....
[Article contains additional citation context not shown here]
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. Technical Report TR99-07, The Department of Computer Science, University of Arizona, Friday, April 23 1999. Wed, 08 Jan 99 00:00:00 GMT.
....algorithms but improve applicability of the algorithm by using an abstract representation in which register names are represented as offsets pointing to the previous use of the name. Thus, two program fragments which only differ in their use of registers can be identified. Debray, Evans and Muth [4] generate a flow graph from the executable code, and use a matching technique to locate repeated occurrences of flow graph fragments. The matching algorithm allows 2 Sven Olof Nystrom, Johan Runeson and Jan Sjodin: Code Compression Techniques for Embedded Systems code fragments that use different ....
....Given the set of canonical single entry single exit regions in a program, it is possible to find candidates for rewriting by matching all pairs of regions. This, however, would be unreasonably expensive, as the number of pairs grows quadratically with the number of regions. Following Debray et al. [4], we employ a fingerprinting scheme, in which a fingerprint is computed for each region. The fingerprint is designed so that two regions with different fingerprints are guaranteed not to match. The regions can then be partitioned into groups with identical fingerprints. The regions within one ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
....(1998) detected similarities in Java bytecodes without referring to the source files, which is similar to our comparing binary programs without using the source code. Their work focused on calculating a single similarity metric for two files, not on matching them on the code and data block level. Debray et al. 1999) compared a binary with itself to find redundancies for the purpose of code compression. Instead of trying to find only identical instruction sequences, they detected similar basic blocks based on instruction opcodes, then looked for transformations that make them identical. For their purpose, ....
Debray, S., Evans, W., & Muth, R. (1999). Compiler Techniques for Code Compression. In Proceedings of the ACM SIGPLAN 1999 Workshop on Compiler Support for System Software.
....abstraction involves finding multiple code fragments (automatically) that are semantically equivalent, and replacing them with calls to a new procedure. The optimization can be applied at different levels of the compiler, for example at the source code level [9] or the machine code level [9, 5, 2, 3]. The following sections describe how to apply procedural abstraction at the intermediate code level, before register allocation. 2.1 Basic Concepts We will assume that we are working at the intermediate code level of the compiler, before register allocation. An instruction I in the intermediate ....
....Since each node may be contained in multiple regions, this can get expensive. Using information from the program structure tree, we can make sure that each node is only matched when the innermost region in which it is contained is matched. 2.6. 1 Fingerprinting As suggested by Debray et al. [3], a numerical value called a fingerprint is computed for each region. The fingerprint is designed so that two regions with different fingerprints are guaranteed not to match. The regions of a program can then be partitioned into groups with identical fingerprints (using for example a hashtable ....
[Article contains additional citation context not shown here]
Saumya Debray, William Evans, and Robert Muth. Compiler Techniques for Code Compression. In Workshop on Compiler Support for System Software, May 1999.
....In blocks that are 16 bytes large, the last 8 bytes are very often padding and so contain no real data or addresses. It is clear that most of the blocks are small enough to put severe restrictions on the possible uses of the data addresses. 4. GLOBALLY UNIFORM CONSTANT PROPAGATION As shown in [7], aggressive global optimization techniques, such as constant propagation, achieve good results for code compaction. One of the reasons for this success is that at link time address calculations are candidates for optimization as well. Indirect data accesses and indirect control ow transfers can ....
....elimination, inlining, copy propagation, etc. The optimizations are repeated because they create optimization possibilities for each other that cannot be exploited by a single run over the optimizations. 7. EXPERIMENTAL RESULTS For evaluating these algorithms, we have implemented them in Squeeze [7], a binary rewriting tool that compacts binaries for the Alpha architecture. Squeeze achieves code compaction by two means. On the one hand it aggressively applies some well known interprocedural optimizations such as interprocedural constant propagation, context sensitive liveness analyses, ....
[Article contains additional citation context not shown here]
S. Debray, W. Evans, R. Muth, and B. De Sutter. Compiler techniques for code compression. ACM TOPLAS, 22(2):378-415, March 2000.
....21] are language dependent, requiring higher level descriptions of libraries, classes or run time environments and above all type information. This highly limits their applicability, e.g. on libraries that are available in object format only. In the past we have proposed applying code compaction [7] on a very general program representation: binary programs. The techniques discussed were limited to code compaction only and evaluated for C programs only. How the data was used by the programs was not analyzed. It is however not di#cult to see that there are significant dependences between the ....
....more aggressive can. On the other hand the link time optimizer is hampered by a lack of semantic information because of the low level source language it works on. Without going into details, we give a short overview of the most important optimizations we want to perform. The reader is referred to [7] for more details on these optimizations. 3.2.1 Interprocedural constant propagation Since the entire program is available for inspection at linktime, interprocedural constant propagation is performed on the whole program. This is limited to propagating constant register contents through the ....
[Article contains additional citation context not shown here]
S. Debray, W. Evans, R. Muth, and B. De Sutter. Compiler techniques for code compression. ACM TOPLAS, 22(2):378--415, March 2000.
....the whole SPECint2000 benchmark suite. last 8 bytes are very often padding and so contain no real data or addresses. It is clear that most of the blocks are small enough to put severe restrictions on the possible uses of the data addresses. 3. GLOBALLY UNIFORM CONSTANT PROPAGATION As shown in [4], aggressive global optimization techniques, such as constant propagation, achieve good results for code compaction. One of the reasons for this success is that at link time address calculations are candidates for optimization as well. Indirect data accesses and indirect control ow transfers can ....
....constant propagation, while elimination of unreachable code eliminates load instructions that access memory, and thereby allow more data to be identi ed as dead and eliminated. Space constraints preclude a more detailed discussion of these interactions, but the interested reader is referred to [4]. 7. EXPERIMENTAL RESULTS For evaluating these algorithms, we have implemented them in Squeeze [4] a binary rewriting tool that compacts binaries for the Alpha architecture. Squeeze achieves code compaction by two means. On the one hand it aggressively applies some well known interprocedural ....
[Article contains additional citation context not shown here]
S. Debray, W. Evans, R. Muth, and B. De Sutter. Compiler techniques for code compression. ACM TOPLAS, 22(2):378-415, March 2000.
....the entire operating system into the 192 kB ROM. So they replaced common opcode sequences with illegal instructions 1 and installed an interpretor to handle the illegal instruction exceptions [42] A similar but less system specific mechanism factors common code sequences into subroutine calls [35, 27, 21]. This can in principle be done by a compiler but often the intermediate representations used in the compiler do not provide enough support for this kind of transformation. In addition, more of the code is visible at link time, e.g. libraries, increasing the number of opportunities for ....
Saumya Debray, William Evans, and Robert Muth. Compiler techniques for code compression. Technical Report TR99-07, The Department of Computer Science, University of Arizona, Friday, April 23 1999.
No context found.
DEBRAY,S.K., EVANS,W.,MUTH, R., AND B. DE SUTTER. 2000. Compiler techniques for code compression. ACMTrans. Program. Lang. Operating Syst. 22,2(Mar.), 378--415.
No context found.
S. Debray,W.Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software,May1999.
No context found.
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
No context found.
Debray, S. K., Evans, W., and Muth, R. Compiler techniques for code compression. Tech. Rep. TR99-07, University of Arizona, April 1999.
No context found.
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
No context found.
S. Debray, W. Evans, and R. Muth. Compiler techniques for code compression. In Workshop on Compiler Support for System Software, May 1999.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC