Thread overview | |||||
---|---|---|---|---|---|
|
March 25, 2018 inline asm return values | ||||
---|---|---|---|---|
| ||||
Given this... int mulDiv64(int a, int b, int c) { asm { mov EAX,a; imul b; idiv c; } } which computes a*b/c, with the intermediate value in 64 bit. It returns value that is left in EAX. Is this stuff documented somewhere? I mean I found the page on inline asm but it's pretty sparse. I'm porting code from C++ and tested it so it works, but it'd be nice to be able to look up the rules on how to do return values with asm without having to dump it to the stack and then return that. Is the inline asm portable between compilers? |
March 25, 2018 Re: inline asm return values | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dave Jones | On Sunday, 25 March 2018 at 10:58:37 UTC, Dave Jones wrote: > Is this stuff documented somewhere? See https://dlang.org/spec/abi.html#function_calling_conventions. It defines the D calling convention for Win32 (int return value in EAX) and states that it matches the C calling convention on all other platforms [but note that the args are actually reversed]. > Is the inline asm portable between compilers? LDC supports the DMD-style inline asm too, GDC doesn't. |
March 25, 2018 Re: inline asm return values | ||||
---|---|---|---|---|
| ||||
Posted in reply to kinke | On Sunday, 25 March 2018 at 12:23:03 UTC, kinke wrote:
> On Sunday, 25 March 2018 at 10:58:37 UTC, Dave Jones wrote:
>> Is this stuff documented somewhere?
>
> See https://dlang.org/spec/abi.html#function_calling_conventions. It defines the D calling convention for Win32 (int return value in EAX) and states that it matches the C calling convention on all other platforms [but note that the args are actually reversed].
>
>> Is the inline asm portable between compilers?
>
> LDC supports the DMD-style inline asm too, GDC doesn't.
Thanks!
|
Copyright © 1999-2021 by the D Language Foundation