And is there any persuading 8051 cc folk to work to eliminate the waste of the call instruction?
People I know in real life are actually shipping a chipset whose effective cost pointlessly includes an external memory merely because their C compiler doesn't know how to eliminate the call instruction. They consequently blew out of masked rom space within their die.
That is, they ship code that doesn't fit:
_asm { call a; call b; call c; ... }
Even though they have the time for code that does fit to work:
{ a, b, c ... }
And indeed they have time for the more extremely smaller alternative to work:
{ '\0', '\1', '\2', ... }
What they don't have people/ time for is the translation by hand. And they're too invested in vendor-specific extensions to contemplate switching compiler vendors. But again, so far as I know, offline, there's no convincing the compiler vendor that this is a problem worth solving, so I'm here now, hi.
Maybe someone somewhere sells a translator from 8051 machine code back to 8051 machine code that disassembles and reassembles the code image in order to omit the insignificant bytes of the call instructions? We could feed in a symbol table to let us declare which code we don't want compressed.
Thanks in advance, Pat LaVarre