Register allocation during computer program code compilation is
accomplished by determining a set of spill candidates, by evaluating a
cost function for each spill candidate using a plurality of spill
strategies, and by selecting the spill candidate having the lowest cost
function value. Preferably, the set of possible spill candidates is
determined by the Chaitin method of constructing an interference graph of
all live ranges of symbolic registers, and iteratively removing nodes and
placing them on a stack. Preferably, multiple spill strategies are
represented as varying numbers of deaths N of live ranges of other
symbolic registers, a spill strategy N signifying that spill code is
introduced whenever the number of deaths occurring between two successive
uses of a symbolic register equals or exceeds N. In the preferred
embodiment, the cost is a function of the number, type and frequency of
each operation introduced by the spill, and is divided by a benefit factor
represented as the degree of the node.
La ripartizione del registro durante la compilazione di codice di programma destinato all'elaboratore è compiuta determinando un insieme dei candidati di caduta, valutando una funzione di costo per ogni candidato di caduta usando una pluralità di strategie di caduta e selezionando il candidato di caduta che ha il valore di funzione di basso costo. Preferibilmente, l'insieme dei candidati possibili di caduta è determinato con il metodo di Chaitin di costruzione del grafico di interferenza con tutti gamme in tensione di registri simbolici ed iteratamente di rimozione dei nodi e di disposizione loro su una pila. Preferibilmente, le strategie multiple di caduta sono rappresentate come numeri di variazione di morti la N delle gamme in tensione di altri registri simbolici, una strategia N di caduta indicando che il codice di caduta è introdotto ogni volta che il numero di morti che accadono fra due usi successivi di un registro simbolico è uguale o eccede la N. Nel metodo di realizzazione preferito, il costo è una funzione del numero, del tipo e della frequenza di ogni funzionamento introdotto dalla caduta ed è diviso da un fattore del beneficio rappresentato come il grado del nodo.