On Sunday, 12 November 2017 at 21:27:28 UTC, Dibyendu Majumdar wrote:
On Sunday, 12 November 2017 at 18:48:02 UTC, Eugene Wissner wrote:
https://dlang.org/spec/iasm.html#agregate_member_offsets

aggregate.member.offsetof[someregister]

Sorry I didn't phrase my question accurately. Presumably to use above with the mnemonics I would need additional mixin templates where the aggregate type and member etc would need to be parameters?

You can use just string parameters instead of enums, then you can pass arbitrary arguments to the instructions. The compiler will tell you if something is wrong with the syntax of the generated assembly.

Okay thank you. Sigh. It would be so much simpler to be able to just define mnemonics for registers.

Anyway, another question:

Does the compiler generate appropriate unwind information on Win64? Prsumably if a function is marked 'naked' then it doesn't?

Thanks and Regards
Dibyendu

yeah about stack frame..., also don't forget to mark the asm block "pure nothrow" if possible...
It's not documented but the syntax is like that:

```
void foo()
{
    asm pure nothrow
    {
        naked;
        ret;
    }
}

```

Reply via email to