First i need a function to decide how to move register SetB from SetA where available register set is present as "available". The return value are tuple. The 1st element is Vec<(register name0, register name1)>. The spillover are register set.
The replacement is used to perform replacement operation to move register to conflicted status to free register. register name0 is being replaced by register name1. The spillover are registers required to push to stack.
MoveAway(setA, setB, available) -> (replacement, spillover)if setA ∩ setB = φ { (φ, φ ) }elseoverlap = setA ∩ setBreplacement = overlap zip available //this will generate vec<(reg name0, reg name1)>spillover = overlap - available
And this function can be simplifed to
MoveAway(setA, setB, available) -> (replacement, spillover)overlap = setA ∩ setBreplacement = overlap zip available //this will generate vec<(reg name0, reg name1)>spillover = overlap - available
No comments:
Post a Comment