D on lm32-CPU: string argument on stack instead of register

Johan j at j.nl
Fri Jul 31 15:30:10 UTC 2020

On Friday, 31 July 2020 at 10:22:20 UTC, Michael Reese wrote:
> My question: Is there a way I can tell the D compiler to use 
> registers instead of stack for string arguments, or any other 
> trick to reduce code size while maintaining an ideomatic D 
> codestyle?

A D string is a "slice", which is a struct (pointer + length). 
Depending on the function call ABI, structs are passed in 
registers or on the stack.
On x86, the D calling convention is to put small POD structs in 
registers, similar to the C++ calling convention.
I don't know whether GDC has attributes to change the calling 
convention of functions (besides extern(C/C++/Windows/etc.)), but 
that's where you'd need to look.
Otherwise, file a bug with GDC. Slice arguments are common enough 
to require enregistering them in the D calling convention on your 
lm32 platform.


More information about the Digitalmars-d-learn mailing list