Pages

Thursday, May 7, 2026

SelfNote: Register Spillover and Replacement

This is post is to record some notes when I refine my register allocation study/design when dealing with RiscV processors. 

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 = φ { (φ, φ ) }
    else 
        overlap = setA ∩ setB
        replacement = 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 ∩ setB
        replacement = overlap zip available   //this will generate vec<(reg name0, reg name1)>
        spillover = overlap - available 


 

No comments: