Far-Pointer Spill Funnel

Signals & Audio

Ten banked pointers crowd a register funnel, park on the stack, survive a clobbering call, and reconnect to their original far-data targets.

loading core…

Self-running — verified CRC 7F3B.

Click the screen, then play. (Tab away and it pauses.)

The pressure under test

A 65816 far pointer occupies a four-byte imaginary-register quad. This probe creates ten runtime-derived, non-rematerializable far pointers, keeps all of them live across a real 32-bit multiply call, then dereferences every pointer from ROM bank 1.

Measured pressure: greedy register allocation creates seven four-byte Imag32 spill slots. They expand to 28 byte stores and 28 byte reloads.

Standing producer gate: all eight LDImm destinations are hardware A/X/Y registers; no malformed imaginary-register destination returned.

Result: host, a16, and xy16 all return 0x7F3B on MAME and bsnes-jg. No new compiler defect was found.

What the ROM shows

Colored pointer ribbons enter a narrow yellow register funnel. Magenta branches represent values parked outside the funnel; recovered far-data samples choose the ribbons' exit paths. The display is driven by the same pressure kernel as the differential gate.

Compiler stress-test #131, Round 7. Source and full test record live in llvm-mos-65816.