Using YMM registers causes an undefined label error

Guillaume Piolat first.name at spam.org
Sat Mar 6 16:15:13 UTC 2021


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 :)


More information about the Digitalmars-d-learn mailing list