Mercurial > pub > dyncall > dyncall
diff test/gen-masm/call_x86.masm @ 0:3e629dc19168
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:24:28 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/gen-masm/call_x86.masm Thu Mar 19 22:24:28 2015 +0100 @@ -0,0 +1,134 @@ +.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] + sub esp, ecx + mov edi, esp + shr ecx, 2 + rep movsd + 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 + shr ecx, 2 + rep movsd + 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