[fpc-devel] AVR calling convention for shortstring result type
Florian Klämpfl
florian at freepascal.org
Mon Dec 11 22:44:29 CET 2017
Am 11.12.2017 um 21:58 schrieb Christo:
> I'm trying to write an assembler function to read a string from program memory using LPM and
> return a shortstring result. Consider the following prototype function:
>
> function readProgmemStr(constref s: shortstring): shortstring;
>
> It appears from the generated code as if the function result location is assigned before the
> function is called, with the reference to the function result passed as first parameter (in
> R24:R25) and the reference to s passed as the second parameter (in R22:R23). Is this indeed the
> current parameter handling for shortstring function result type?
Yes.
>
> If so it probably warrants a mention on the AVR wiki page. Are there any other data types that
> deviates from the GCC AVR calling convention in this way?
Where do the GCC AVR calling say something about how to pass shortstrings? FPC always use a first
"hidden" parameter to pass e.g. pointers to storage space for data types not being returned in
registers.
More information about the fpc-devel
mailing list