mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 22:45:39 -04:00
a4bc49a23d
- S8-3 (23 fresh x10-99 families, 121-328 ins — the hardest band this session): draft 16/23 ->
capture (1 PLUMBING / 6 DIFF) -> reconcile 1/1 -> redraft 6/6 => **23/23 (100%)**.
Propagated 206 + 81 = 287 member-matches across 80+54 overlays. R22 clean-fleet 140/140.
FLEET 95.97% fn / 93.4% instr / 87.5% distinct (77,404 uniq); dedup 1905/0; 0 NON_MATCHING.
- §136b CLOSES AT 15/15 — no function ledgered "genuine byte-DIFF" survived a redraft, all session.
- §137 (NEW, the session's most reusable result): REGALLOC-PERM — a clean 2-register swap — is a
TWO-COMPILE ARITHMETIC PROBLEM. global.c:allocno_compare ranks by floor_log2(R)*R/L*1e4*size;
read R and L out of `cc1 -dl -dg` for BOTH contenders AND their ranked neighbours to get the
admissible priority WINDOW, then place a zero-byte `__asm__ __volatile__("" ::"r"(v))` so L lands
inside it. func_801833F0: contenders ONE unit apart (1297 vs 1296), window (1228,1296), five
placements probed, only L=219 -> pri 1232 worked. R and L are FORCED BY THE EMITTED CODE (L is
recomputed post-sched1), which is exactly why source-reordering is a dead end for this class.
Converts a class the permuter banked 0 from all session into a deterministic calculation.
Companion: floor_log2 makes ref-count a STEP function (5/6/7 refs are worthless, you must reach 8)
— func_8017EFA8 closed 30 register-name mismatches by taking a pseudo 4 refs -> 8 with a dead read.
- §136j — the failure MIX FLIPS WITH SIZE: <=120 ins fails ~70% on declarations; 121-328 ins fails
86% on genuine codegen. Budget reconcile for the small band, redraft for the big one — and do NOT
read 70% on a big-function wave as a broken pipeline; that is the expected shape.
- §137a — a gate verdict has a TIMESTAMP. Two "DIFF" ledger entries were STALE (draft rewritten 28
min after the gate ran, never re-gated); both were already byte-perfect. Compare verdict time to
draft mtime before redrafting. Plus two offline oracles an agent built: a FULL RELOCATION RESOLVE
(catches wrong jal/%hi/%lo targets that match_one's mask hides) and a COLLATERAL CHECK (whole-TU
objdump with/without splice). Together they discriminate all three causes of "match_one says MATCH
but the overlay SHA differs" without running make.
- §136f addendum — the collider is often an already-banked SIBLING BELOW the splice; locate it by
arithmetic (draft grows the file N lines, so TU line L reports at L+N).
- cookbook-index 380 -> 382 sections.
97 lines
1.1 KiB
JSON
97 lines
1.1 KiB
JSON
{
|
|
"banked": [
|
|
[
|
|
"ov_SC01_005",
|
|
"func_8017EFA8"
|
|
],
|
|
[
|
|
"ov_SC01_084",
|
|
"func_8017C218"
|
|
],
|
|
[
|
|
"ov_SC02_011",
|
|
"func_8018B76C"
|
|
],
|
|
[
|
|
"ov_SC02_011",
|
|
"func_80190748"
|
|
],
|
|
[
|
|
"ov_SC02_026",
|
|
"func_8017FAC0"
|
|
],
|
|
[
|
|
"ov_SC02_026",
|
|
"func_80180520"
|
|
],
|
|
[
|
|
"ov_SC02_026",
|
|
"func_801832A8"
|
|
],
|
|
[
|
|
"ov_SC02_026",
|
|
"func_8018365C"
|
|
],
|
|
[
|
|
"ov_SC02_026",
|
|
"func_8018389C"
|
|
],
|
|
[
|
|
"ov_SC02_026",
|
|
"func_80183CAC"
|
|
],
|
|
[
|
|
"ov_SC02_027",
|
|
"func_8017BFEC"
|
|
],
|
|
[
|
|
"ov_SC02_027",
|
|
"func_8017C378"
|
|
],
|
|
[
|
|
"ov_SC02_028",
|
|
"func_80182FD4"
|
|
],
|
|
[
|
|
"ov_SC02_028",
|
|
"func_801833F0"
|
|
],
|
|
[
|
|
"ov_SC02_035",
|
|
"func_801837C0"
|
|
],
|
|
[
|
|
"ov_SC03_002",
|
|
"func_8017C7B8"
|
|
],
|
|
[
|
|
"ov_SC03_002",
|
|
"func_8017C9BC"
|
|
],
|
|
[
|
|
"ov_SC03_002",
|
|
"func_8017D0BC"
|
|
],
|
|
[
|
|
"ov_SC03_014",
|
|
"func_8018AA98"
|
|
],
|
|
[
|
|
"ov_SC03_014",
|
|
"func_8018B23C"
|
|
],
|
|
[
|
|
"ov_SC03_028",
|
|
"func_8017C150"
|
|
],
|
|
[
|
|
"ov_SC03_028",
|
|
"func_8017C43C"
|
|
],
|
|
[
|
|
"ov_SC04_018",
|
|
"func_8017D77C"
|
|
]
|
|
],
|
|
"failed": []
|
|
} |