Mercurial > pub > dyncall > dyncall
view dyncall/dyncall_call_x86_generic_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 | ab2d78e48ca2 |
line wrap: on
line source
; auto-generated by gen-masm.sh .386 .MODEL FLAT .CODE _dcCall_x86_cdecl PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push EBP mov EBP,ESP push ESI push EDI mov ESI,dword ptr [EBP+12] mov ECX,dword ptr [EBP+16] add ECX,15 and ECX,-16 mov dword ptr [EBP+16],ECX sub ESP,ECX mov EDI,ESP rep movsb call dword ptr [EBP+8] add ESP,dword ptr [EBP+16] pop EDI pop ESI mov ESP,EBP pop EBP ret _dcCall_x86_cdecl ENDP _dcCall_x86_win32_msthis PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push EBP mov EBP,ESP push ESI push EDI mov ESI,dword ptr [EBP+12] mov ECX,dword ptr [EBP+16] mov EAX,dword ptr [ESI+0] add ESI,4 sub ECX,4 sub ESP,ECX mov EDI,ESP rep movsb mov ECX,EAX call dword ptr [EBP+8] pop EDI pop ESI mov ESP,EBP pop EBP ret _dcCall_x86_win32_msthis ENDP _dcCall_x86_win32_std PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push EBP mov EBP,ESP push ESI push EDI mov ESI,dword ptr [EBP+12] mov ECX,dword ptr [EBP+16] sub ESP,ECX mov EDI,ESP rep movsb call dword ptr [EBP+8] pop EDI pop ESI mov ESP,EBP pop EBP ret _dcCall_x86_win32_std ENDP _dcCall_x86_win32_fast PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push EBP mov EBP,ESP push ESI push EDI mov ESI,dword ptr [EBP+12] mov ECX,dword ptr [EBP+16] mov EAX,dword ptr [ESI+0] mov EDX,dword ptr [ESI+4] add ESI,8 sub ECX,8 mov dword ptr [EBP+16],ECX sub ESP,ECX mov EDI,ESP rep movsb mov ECX,EAX call dword ptr [EBP+8] pop EDI pop ESI mov ESP,EBP pop EBP ret _dcCall_x86_win32_fast ENDP _dcCall_x86_sys_int80h_linux PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push EBP mov EBP,ESP push EBX push ESI push EDI mov EAX,dword ptr [EBP+12] mov EBX,dword ptr [EAX+0] mov ECX,dword ptr [EAX+4] mov EDX,dword ptr [EAX+8] mov ESI,dword ptr [EAX+12] mov EDI,dword ptr [EAX+16] mov EAX,dword ptr [EBP+8] int 80h pop EDI pop ESI pop EBX mov ESP,EBP pop EBP ret _dcCall_x86_sys_int80h_linux ENDP _dcCall_x86_sys_int80h_bsd PROC OPTION PROLOGUE:NONE, EPILOGUE:NONE push EBP mov EBP,ESP push ESI push EDI mov ESI,dword ptr [EBP+12] mov ECX,dword ptr [EBP+16] sub ESP,ECX mov EDI,ESP rep movsb mov EAX,dword ptr [EBP+8] call _do_int pop EDI pop ESI mov ESP,EBP pop EBP ret _do_int: int 80h ret _dcCall_x86_sys_int80h_bsd ENDP END