One method for compacting executable computer code is to replace commonly repeated sequences of instructions with macro instructions from a decoding dictionary. The size of the decoding dictionary is often smallin comparison to the number of all possible macros. Choosing the macros that yield the best compaction is a di cult subset selection problem because multiple, but colliding, macros may be applicable to many code segments. We show that a genetic algorithm using a new crossover operator, MSX, gives better compaction than heuristics designed speci cally for this problem. We also compare MSX with other crossover operators on a surrogate problem that models the essential properties of the code compaction problem.
Keith E. Mathias, Larry J. Eshelman, J. David Scha