From: Philipp K. K. <pk...@sp...> - 2012-04-02 09:32:23
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 02.04.2012 11:08, Erik Petrich wrote: > > I was actually thinking of using this newer strategy for handling > larger return values for long and float as well. The existing > implementation is using some globally allocated variables, which > should be saved/restored by an interrupt handler if the handler (or > any functions indirectly called by it) return a float or long. If > they were passed on the stack, either by value or reference, > reentrancy would be guaranteed automatically. I admit that working > with floats in an interrupt handler is a generally bad idea, but > using a long is occasionally useful. > > For these smaller (4 byte) return values, I think method 1 would be > more efficient. For large aggregates, and perhaps long long too, > method 2 would be better. But you've shown this can be entirely > handled by the backend code generator, so there's nothing that > really forces us to choose only one or the other. > > Erik I see the advantages of passing return values on stack. And I think sdcc really needs to support struct. Nevertheless, for now I'd go with the quick-and-dirty way for long long on hc08 for today. I'm currently working on long long for hc08. Philipp -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk95chQACgkQbtUV+xsoLpq65gCbBV9PJ8VwjOdi8zkC6BaCP+G5 xiIAoLXAD1/G/hBsL1Q9bpQwevLPrDqz =8xbh -----END PGP SIGNATURE----- |