Returning structs from COM

evilrat via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Dec 19 19:11:09 PST 2016


On Monday, 19 December 2016 at 22:47:26 UTC, kinke wrote:
> On Monday, 19 December 2016 at 09:49:13 UTC, kinke wrote:
>> [...]
>
> I did some research myself and indeed, COM classes/interfaces 
> are apparently subject to a separate ABI. Unfortunately, 
> googling it hasn't turned up any official (and not even some 
> inofficial) documentation so far. Based on the first few tests 
> on Win64, integers are returned in RAX, floats (and I guess 
> doubles too) in XMM0, and structs (incl. 2x int32 and 2x float) 
> via hidden sret pointer, with `this` pointer in RCX (1st arg) 
> and `sret` in RDX (2nd arg). Compared to the normal Win64 C++ 
> ABI it just seems more conservative by always returning structs 
> via hidden pointer.

Wow! That was quick. Such tests would take me few days.

I'm not sure how it may help but there is "specs" in MS .net core 
runtime, just search the repo for COM

like this 
https://github.com/dotnet/coreclr/blob/32f0f9721afb584b4a14d69135bea7ddc129f755/src/vm/amd64/GenericComCallStubs.asm#L177



More information about the Digitalmars-d-learn mailing list