First working Win64 program!

David Nadlinger see at klickverbot.at
Wed Aug 15 06:05:06 PDT 2012


On Wednesday, 15 August 2012 at 11:15:35 UTC, Paulo Pinto wrote:
> Does this not required that the D and C compiler are in sync 
> about data layout?
>
> Small sizes structs are often kept in registers.

Yes, extern(C) is intended to be fully ABI-compatible with the 
respective C ABI on the host system. On *nix systems, this means 
that the System V AMD64 ABI is followed for parameter passing. 
The DMD implementation of it, however, still has bugs in the 
cases mentioned above, as the register assignment scheme is 
difficult to implement in Walter's backend. The current state 
_is_ self-consistent, though, so the problems only surface when 
interfacing with C code.

David


More information about the Digitalmars-d-announce mailing list