On Saturday, 6 March 2021 at 16:09:03 UTC, Imperatorn wrote:
On Saturday, 6 March 2021 at 15:40:56 UTC, Rumbu wrote:
On Saturday, 6 March 2021 at 12:15:43 UTC, Mike Parker wrote:
[...]
Where exactly is documented the extern(D) x86-64 calling
convention? Because currently seems like a mess according to
the dissasembly. First X parameters on stack from left to
right, last 4 in registers. But wait, if you have less than 4
parameters, they are passed in register. Again, WTF?
Reading this, I'm experiencing true fear for the first time in
my life.
I'm also learning that extern(D) is different across compilers in
some cases, but it isn't that bad.
Preferred ABI boundaries across executables is extern(C).
If you deal with static librariries, then they are likely built
from the same compiler too.
When LDC change the extern(D) ABI, it is rightfully a minor
change as everything will get rebuilt.
https://github.com/ldc-developers/ldc/releases/tag/v1.25.0
Besides, such changes are there for efficiency :)