Register allocation & spilling via graph coloring
暂无分享,去创建一个
In a previous paper we reported the successful use of graph coloring techniques for doing global register allocation in an experimental PL/I optimizing compiler. When the compiler cannot color the register conflict graph with a number of colors equal to the number of available machine registers, it must add code to spill and reload registers to and from storage. Previously the compiler produced spill code whose quality sometimes left much to be desired, and the ad hoe techniques used took considerable amounts of compile time. We have now discovered how to extend the graph coloring approach so that it naturally solves the spilling problem. Spill decisions are now made on the basis of the register conflict graph and cost estimates of the value of keeping the result of a computation in a register rather than in storage. This new approach produces better object code and takes much less compile time.
[1] Edith Schonberg,et al. Higher level programming : introduction to the use of the set-theoretic programming language SETL , 1981 .
[2] John Cocke,et al. Register Allocation Via Coloring , 1981, Comput. Lang..
[3] John Cocke,et al. A methodology for the real world , 1981 .
[4] George Radin,et al. The 801 minicomputer , 1982, ASPLOS I.
[5] John Cocke,et al. Optimization of range checking , 1982, SIGPLAN '82.