Skip to content

Instantly share code, notes, and snippets.

@maekawatoshiki
Last active July 12, 2020 15:00
Show Gist options
  • Save maekawatoshiki/f6186124b6c2b91863d6de93cb79c3c2 to your computer and use it in GitHub Desktop.
Save maekawatoshiki/f6186124b6c2b91863d6de93cb79c3c2 to your computer and use it in GitHub Desktop.
簡単で効率的なレジスタ割り付けを考えたい

生存区間分割を実装しないとすると,こうするのが一番いいんじゃないかなという案.

virts = 物理レジスタを割り付けたい仮想レジスタの集合

for virt in virts
    if 関数呼び出しに起因してvirtがevict&reloadされる回数 > virtをspillした場合のevict&reload回数
        if virtにcallee-saved registerを割り付け可能
            virtにcallee-saved registerを割り付ける
        else
            virtをspillする
        continue
        
    virtを関数呼び出し周りでevict&reload
        
    if virtにcaller-saved registerを割り付け可能
        virtにcaller-saved registerを割り付ける
        continue
        
    virtはspillされないといけない
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment