Mercurial > pub > dyncall > dyncall
view dyncallback/dyncall_callback_x64_masm.asm @ 27:523c45dfa8fb
- refactored arm calling conventions' callvm code, so that the code that keeps
the caller from overwriting the return value on some platforms also works on
OpenBSD (before we casted the function pointer to have long long as return
type, to hint the caller that there is one, but that triggers an intentional
SIGABRT on OpenBSD for security reasons; now the decl reflects this, directly)
author | cslag |
---|---|
date | Tue, 15 Sep 2015 12:48:52 +0200 |
parents | 3e629dc19168 |
children | 71c884e610f0 |
line wrap: on
line source
; auto-generated by gen-masm.sh .CODE DCThunk_size = 24 DCArgs_size_win64 = 80 DCArgs_size_sysv = 128 DCValue_size = 8 FRAME_arg0_win64 = 48 FRAME_arg0_sysv = 16 FRAME_return = 8 FRAME_parent = 0 FRAME_DCArgs_sysv = -128 FRAME_DCValue_sysv = -136 FRAME_DCArgs_win64 = -80 FRAME_DCValue_win64 = -80 CTX_thunk = 0 CTX_handler = 24 CTX_userdata = 32 DCCallback_size = 40 dcCallback_x64_sysv PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push RBP mov RBP,RSP sub RSP,8*8 movsd qword ptr [RSP+8*7],XMM7 movsd qword ptr [RSP+8*6],XMM6 movsd qword ptr [RSP+8*5],XMM5 movsd qword ptr [RSP+8*4],XMM4 movsd qword ptr [RSP+8*3],XMM3 movsd qword ptr [RSP+8*2],XMM2 movsd qword ptr [RSP+8*1],XMM1 movsd qword ptr [RSP+8*0],XMM0 push R9 push R8 push RCX push RDX push RSI push RDI push 0 lea RDX,qword ptr [RBP+FRAME_arg0_sysv] push RDX mov RSI,RSP push 0 mov RDI,RAX mov RCX,qword ptr [RDI+CTX_userdata] mov RDX,RSP push 0 call qword ptr [RAX+CTX_handler] mov RAX,qword ptr [RBP+FRAME_DCValue_sysv] movd XMM0,RAX mov RSP,RBP pop RBP ret dcCallback_x64_sysv ENDP dcCallback_x64_win64 PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push RBP mov RBP,RSP sub RSP,4*8 movsd qword ptr [RSP+8*3],XMM3 movsd qword ptr [RSP+8*2],XMM2 movsd qword ptr [RSP+8*1],XMM1 movsd qword ptr [RSP+8*0],XMM0 push R9 push R8 push RDX push RCX push 0 lea RDX,qword ptr [RBP+FRAME_arg0_win64] push RDX mov RDX,RSP mov RCX,RAX mov R9,qword ptr [RAX+CTX_userdata] mov R8,RSP sub RSP,4*8 call qword ptr [RAX+CTX_handler] mov RAX,qword ptr [RBP+FRAME_DCValue_win64] movd XMM0,RAX mov RSP,RBP pop RBP ret dcCallback_x64_win64 ENDP END