On Sunday, 12 November 2017 at 22:00:58 UTC, Basile B. wrote:
On Sunday, 12 November 2017 at 21:27:28 UTC, Dibyendu Majumdar

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

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;
    }
}

```

I am not sure I have understood above; will DMD generate the right Win64 unwind info for this contrived example:

int luaV_interp(lua_State *L)
{
        asm pure nothrow {
                naked;
                push RDI;
                push RSI;
                push RBX;
                push R12;
                push R13;
                push R14;
                push R15;
                sub RSP, 5*8;
                mov  RAX, 0;
                add RSP, 5*8;
                pop R15;
                pop R14;
                pop R13;
                pop R12;
                pop RBX;
                pop RSI;
                pop RDI;
                pop RBP;
                ret;
        }
}


Reply via email to