mirror of
https://github.com/rehan-remade/universal-modder.git
synced 2026-11-05 01:37:40 +00:00
[PR #275] [MERGED] kb(technique): MWCC register allocation in matching decomps: vreg-index colouring, lifetime-split and sub-address-temp levers (+ objdiff/decomp.me workflow) #279
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rehan-remade/universal-modder#279
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/rehan-remade/universal-modder/pull/275
Author: @rasanaruto-lgtm
Created: 10/12/2026
Status: ✅ Merged
Merged: 10/14/2026
Merged by: @rehan-remade
Base:
main← Head:kb-mwcc-regalloc📝 Commits (7)
2c7be8ekb(technique): MWCC register-allocation vreg-index rule + lifetime-split lever (and closing-gaps note)dac93d3kb: add formal no-path + UNSAT checks and the queryable dataset to the MWCC regalloc note0dc71a1kb: add independent corroboration (SFA allocation_model, melee/tww) + toolchain .comment notea590654kb(technique): add the sub-address-temp lever; correct the 'unreachable' claimsae6741fkb: MWCC register-allocation technique notes: review fixesfdee18bMerge remote-tracking branch 'origin/main' into land/pr-275120baf2kb: regenerate the index📊 Changes
4 files changed (+399 additions, -1 deletions)
View changed files
📝
knowledge/INDEX.md(+3 -1)📝
knowledge/index.json(+50 -0)➕
knowledge/techniques/closing-mwcc-register-allocation-gaps-in-a-matching-decompil.md(+157 -0)➕
knowledge/techniques/mwcc-register-allocation-vreg-index-colouring-rule-and-the-l.md(+189 -0)📄 Description
Adds two technique notes on MWCC register allocation for matching decompilation:
knowledge/techniques/mwcc-register-allocation-vreg-index-colouring-rule-and-the-l.md(new) - the two rules this session proved: MWCC's colourer hands saved registers out by descending vreg index (locals form one block in reverse declaration order, temps above; a first-declared local can't out-rank a constant pool), and a lifetime split only recolours when the value is non-rematerializable and the copy's live range overlaps (x2 = xwith an overlapping range;&xis just a reliable way to force it).knowledge/techniques/closing-mwcc-register-allocation-gaps-in-a-matching-decompil.md(from an earlier session) - the address-of /(double)0pool levers.Also refreshes
knowledge/INDEX.md/index.json.um kb checkpasses.Source case: Mario Kart Wii
KartState::updateCollisions, taken 86.99% -> 93.44% by the split lever, then documented as a frontend vreg-numbering artefact.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.