mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-09-02 15:02:51 +08:00
The preamble scan cursor and the buffered-length parameter carry no state between calls, so they do not need static xdata slots. As plain locals the compiler places both in registers, trimming 64 bytes of BANK1 code and two bytes of xdata. The offsets shared by config_take() stay static: direct data space is fully allocated on machines like the SWTGW218AS, so plain locals there add overlay bytes that no longer link, and xdata-class locals spill three temporaries into direct space while growing the code by roughly 120 bytes. Document pre_acc, whose accumulation across TCP segments is why it must remain global.