Title :
Procedural Abstraction with Reverse Prefix Trees
Author :
Schaeckeler, Stefan ; Shang, Weijia
Author_Institution :
Dept. of Comput. Eng., Santa Clara Univ., Santa Clara, CA
Abstract :
For memory constrained environments like embedded systems, optimization for size is often as important as, if not more important than, optimization for execution speed. A common technique for compacting code is procedural abstraction. Equivalent code fragments are identified and abstracted into a procedure. The standard algorithm for identifying these fragments is based on suffix trees. We propose in this paper the calculation of suffix trees over the program text not in the common top-down fashion, but reversed, i.e. bottom-up. With this simple modification, not only equivalent fragments can be identified, but also fragments equivalent to (possibly often differently long) suffixes of the longest fragments. A longest fragment is then abstracted, and all fragments are replaced by procedure calls to their corresponding start instruction somewhere in the abstracted procedure. This allows us to harvest more and longer fragments than with standard suffix trees, improving code size reductions on average by 8.277% over standard suffix trees.
Keywords :
embedded systems; optimising compilers; tree data structures; code compaction; code execution speed optimization; code size optimization; embedded system; memory constrained environment; post-pass optimization; procedural abstraction; procedure call; reverse prefix tree; suffix tree; Assembly; Code standards; Compaction; Constraint optimization; Costs; Embedded computing; Embedded system; Personal digital assistants; Random access memory; Visualization; code compaction; code size reduction; embedded systems; post-pass optimization; procedural abstraction; program visualization; reverse prefix tree; suffix tree;
Conference_Titel :
Code Generation and Optimization, 2009. CGO 2009. International Symposium on
Conference_Location :
Seattle, WA
Print_ISBN :
978-0-7695-3576-0
DOI :
10.1109/CGO.2009.25