phase12: match func_80102F58 (686 bodies / 695 regions)
This commit is contained in:
@@ -991,7 +991,7 @@
|
||||
984 0x801007E0 0x80100808 40 fallthrough 3 frame 1 - 1
|
||||
#
|
||||
# listed=984
|
||||
# excluded_already_registered=691
|
||||
# excluded_already_registered=693
|
||||
# excluded_bad_extent_start=8
|
||||
# excluded_degenerate_body=252
|
||||
# excluded_delay_slot_start=5
|
||||
@@ -1000,6 +1000,6 @@
|
||||
# excluded_low_confidence_grade=90
|
||||
# excluded_named_exclusion=9
|
||||
# excluded_no_extent=0
|
||||
# excluded_recorded_negative=105
|
||||
# excluded_recorded_negative=103
|
||||
# excluded_restores_unsaved=11
|
||||
# excluded_trapping_arith=48
|
||||
|
||||
|
@@ -176,7 +176,6 @@
|
||||
0x80101E50 76 near-match custom-compare loop shape (back-up-mismatch path; cc1 rewrites to 52B)
|
||||
0X80102A00 128 near-match candidate_bytes=124 vs 128 expected, ONE extra instruction in the original: the original has a `nop` at 0x80102A64 between `lw v0,-724(v0)` (0x80102A6
|
||||
0X80102A80 132 near-match rare-epilogue-r1-r2-measured; residual 4B at 0x80102A88; tried default maspsx 136 vs 132 LENGTH-MISMATCH (reorder nop block
|
||||
0x80102F58 - near-match -
|
||||
0x80102FE4 - near-match -
|
||||
0x80103AA4 - near-match -
|
||||
0x8010400C 44 near-match constant-base-in-register
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 118 and column 203.
|
+2
-1
@@ -624,7 +624,7 @@
|
||||
0x800FF47C 0x800FF4BC src/func_800FF47C.c cc1bin=gcc-2.8.1-psx
|
||||
0x800FF6A4 0x800FF6DC src/func_800FF6A4.c
|
||||
0x800FFBEC 0x800FFC3C src/func_800FFBEC.c maspsx=epilogue
|
||||
0x800FFF60 0x800FFFEC src/func_800FFF60.c maspsx=epilogue
|
||||
0x800FFF60 0x800FFFEC src/func_800FFF60.c maspsx=epilogue gp=-D_801221A8,-D_801221AA,-D_801221AC
|
||||
0x80100038 0x801000A0 src/func_80100038.c maspsx=epilogue
|
||||
0x80100318 0x80100334 src/func_80100318.c
|
||||
0x80100334 0x8010036C src/func_80100334.c maspsx=epilogue
|
||||
@@ -644,6 +644,7 @@
|
||||
0x80102A80 0x80102B04 src/func_80102A80.c maspsx=epilogue
|
||||
0x80102B10 0x80102B2C src/func_80102B10.c maspsx=off
|
||||
0x80102B30 0x80102B5C src/func_80102B30.c maspsx=off
|
||||
0x80102F58 0x80102F94 src/func_80102F58.c maspsx=epilogue
|
||||
0x80102FA4 0x80102FD4 src/func_80102FA4.c
|
||||
0x80102FD4 0x80102FE0 src/func_80102FD4.c
|
||||
0x80102FE4 0x80103014 src/func_80102FE4.c
|
||||
|
||||
|
@@ -207,6 +207,9 @@ D_80122188 0x80122188 gp
|
||||
D_8012218C 0x8012218C gp
|
||||
D_80122190 0x80122190 gp
|
||||
D_80122194 0x80122194 gp
|
||||
D_801221A8 0x801221A8 gp
|
||||
D_801221AA 0x801221AA gp
|
||||
D_801221AC 0x801221AC gp
|
||||
D_801221B0 0x801221B0 gp
|
||||
D_801221C4 0x801221C4 gp
|
||||
D_801221C8 0x801221C8 gp
|
||||
|
||||
|
@@ -4,7 +4,22 @@
|
||||
**Plan:** `phase-ends/Phase12_PLAN.md` — **APPROVED** by the developer 2026-09-24.
|
||||
**Ledger:** `phase-ends/logs/Phase12.md` (the running record; staging under `.run/p12/`).
|
||||
|
||||
## STATE — SESSION STOP, 2026-09-24 23:35 (supersedes the cycle-1 block below, kept as history)
|
||||
## STATE — SOLO CONTINUATION, 2026-09-24 (current)
|
||||
|
||||
**686 bodies / 695 regions**, from 685 / 694 at the last session stop — **+1 body / +1 region**.
|
||||
The Phase 12 milestone remains 750 bodies, so **+64 remains**. The promoted whole-binary gate is green:
|
||||
`c_regions=695`, `differing_bytes=0`, SHA-1
|
||||
`e173426c157384ebf1b6caf8c6fea18a85a14af9`; 344 synthetic tests pass and extents report
|
||||
`regions=695 disagreements=0 result=AGREE`.
|
||||
|
||||
Task 1/10 completed `0x80102F58` (60 bytes) and its three proven gp symbol rows. No harness parser
|
||||
change was needed: the existing comma grammar `gp=-A,-B,-C` expresses the required per-site exclusions
|
||||
on the already-registered `0x800FFF60` row. The source is now a tracked claim rather than the stop-time
|
||||
unregistered work-in-progress. Worklist regeneration remains at 984 rows; its
|
||||
`excluded_already_registered=693` continues the already-characterised two-row registry lag and is not a
|
||||
correctness issue because the 695-region gate proves the registry simultaneously.
|
||||
|
||||
## STATE — SESSION STOP, 2026-09-24 23:35 (historical; superseded by the state above, kept for provenance)
|
||||
|
||||
**685 bodies / 694 regions**, from 602 / 611 at the Phase 11 close — **+83 bodies**. **Milestone 750 was NOT
|
||||
reached and will not be this session; +65 remains** (stretch 800 needs +115).
|
||||
|
||||
@@ -1825,3 +1825,31 @@ Commit `0cb720d`'s message says "merge worker D's final row 0x8002D014 (685 bodi
|
||||
mine: **take the extent from the table, and guard every commit on the gate's exit code.** The invariant
|
||||
that makes the first mechanical — *a region's extent ends exactly 8 bytes past its LAST `jr $31`* — is
|
||||
recorded above, and `--end = last jr $31 + 8` would have caught this in one line.
|
||||
|
||||
## SOLO CONTINUATION — 2026-09-24
|
||||
|
||||
The unavailable pi/herdr roster was replaced by a strictly sequential solo continuation: one function is
|
||||
selected, evidenced, source-matched, candidate-gated, promoted, and committed before the next begins.
|
||||
The full protocol remains in force; only concurrency and the copied charter/ledger are absent.
|
||||
|
||||
### Task 1/10 — `0x80102F58` (60 B) MATCH
|
||||
|
||||
* Re-derived from the tracked source and the exact extent row: `0x80102F58..0x80102F94`, 60 bytes,
|
||||
grade `exact`, term `jr_ra`.
|
||||
* Fresh range result: `candidate_bytes=60 differing_bytes=0 result=MATCH`, source md5 before the
|
||||
documentation update `84422e3e9b35f046d5646686210ac5c7`, region token `maspsx=epilogue`.
|
||||
* Added proven symbol rows `D_801221A8`, `D_801221AA`, and `D_801221AC`, all gp-marked. Their addresses
|
||||
are computed from the observed gp displacements 2160/2162/2164 plus the proved gp base 0x80121938.
|
||||
* The handover identified a parser multiplicity problem. Direct inspection of the enforcing tool found
|
||||
the existing tested grammar already accepts a comma-separated list. Therefore **no tool change was
|
||||
made**: `0x800FFF60` now uses `gp=-D_801221A8,-D_801221AA,-D_801221AC`, while the new row consumes the
|
||||
same three registry rows gp-relatively. This directly demonstrates finding 16's per-site rule and
|
||||
avoids widening the override grammar unnecessarily.
|
||||
* `sf3_merge` accepted 1 region and 3 symbols. Candidate whole-binary gate: 695 regions,
|
||||
`differing_bytes=0`, both SHA-1 values `e173426c157384ebf1b6caf8c6fea18a85a14af9`, exit 0.
|
||||
* Promoted range recheck and `make check`: 344 tests OK; extents `regions=695 disagreements=0`; gate
|
||||
`c_regions=695 differing_bytes=0 result=MATCH`.
|
||||
* Removed the registered row from `near_match_negatives.tsv` (193 -> 192 data rows). Worklist regeneration
|
||||
remains 984 rows and reproduces the already-recorded `excluded_already_registered=693` two-row lag.
|
||||
|
||||
**Count after task 1: 686 bodies / 695 regions (+84 bodies from the Phase 12 open baseline).**
|
||||
|
||||
+6
-8
@@ -3,17 +3,15 @@
|
||||
*
|
||||
* Stores the two halfword parameters into the gp-globals at 0x801221A8 and 0x801221AA,
|
||||
* then, if the gp-global at 0x801221AC is zero, calls func_80107874 with both parameters
|
||||
* SIGN-EXTENDED. Matched with `--fill-epilogue` once three symbol rows exist.
|
||||
* SIGN-EXTENDED. Region token: `maspsx=epilogue`.
|
||||
*
|
||||
* *** SYMBOL ROWS REQUIRED (coordinator write) ***
|
||||
* D_801221A8 0x801221A8 gp
|
||||
* D_801221AA 0x801221AA gp
|
||||
* D_801221AC 0x801221AC gp
|
||||
* The three accesses are `sh a0,2160(gp)`, `sh a1,2162(gp)` and `lw v0,2164(gp)`, so the
|
||||
* symbols are the gp base (0x80121938) plus 2160/2162/2164 -- read the DISPLACEMENT and
|
||||
* add, do not infer from a neighbouring name. Without the rows each access assembles to
|
||||
* `lui at,0x8012` + the load/store: 72 bytes instead of 60 (two extra instructions per
|
||||
* access). Verified against a staged copy of the registry.
|
||||
* add, do not infer from a neighbouring name. The symbol registry therefore marks
|
||||
* D_801221A8, D_801221AA and D_801221AC gp-relative. The already-registered sibling
|
||||
* 0x800FFF60 accesses these same addresses absolutely and declares comma-form `gp=-...`
|
||||
* exclusions, a direct instance of the per-site access rule. Without the three gp rows
|
||||
* this function assembles to 72 bytes rather than 60.
|
||||
*
|
||||
* **THE PARAMETERS ARE `short`.** The emitted `sll a0,a0,0x10 / sra a0,a0,0x10` (and the
|
||||
* same for a1) is the halfword-to-word SIGN EXTENSION that cc1 inserts when a narrow
|
||||
|
||||
Reference in New Issue
Block a user