Vizer: A framework to analyze and vectorize Intel x86 binaries
Cooper, Keith D.; Kennedy, Ken
Master of Science
Binary optimization has become increasingly important due to the widespread use of legacy programs and the presence of environments that require dynamic optimizers. Although processor technology changes constantly, software developers usually compile their programs for older processors to maintain backward compatibility. These legacy applications can be specialized by binary optimizers to take advantage of hardware features found only on newer processors. Other binary optimizers, such as just-in-time compilers and dynamic optimizers for computational grids, strive to improve the efficiency of programs at execution time. These optimizers for executables and object codes typically conduct low-level optimization and do not attempt many of the transformations that are carried out for programs written in high-level languages. This thesis presents Vizer, which is a framework for conducting high-level optimizations on binary programs. Vizer analyzes binary files and reconstructs data structures and control flow that were present in the high-level source code used to create the binary. This information can be used to implement optimizations that are otherwise not possible in binary optimizers. Vizer conducts one such optimization: the vectorization of Intel x86 object code. Vizer technology can also be used to instrument x86 executables on grid computing environments such as the Grid Application Development Software infrastructure.