Register Liveness Analysis of Executable Code
Robert Muth · 2012
Liveness analysis of variables is a well-understood technique employed by most compilers to guide optimizations such as useless code elimination and register allocation. Liveness analysis can also be performed on object code if we let registers take the place of variables. The increasing interest in systems that modify object code or executables has generated a need for a fast and accurate register liveness analysis. This paper shows how to accurately compute register liveness information in a time and space efficient manner and how to cope with irregular control flow not encountered in high level languages. Tradeoffs between the precision of the analysis and its computation time and space are discussed. In particular, context sensitive and context insensitive register liveness analysis are compared. Experimental results on precision, time and space usage are provided as well as the impact of liveness analysis on optimizations. KEY WORDS: register liveness analysis; data flow analysis; 2 1