# HG changeset patch # User Tassilo Philipp # Date 1664441484 -7200 # Node ID fea865cd1305ad73bfb8dba224ddbe5795c9b3d0 # Parent f2f0e53d8b020d1b7bae98b71aa2d3a9aa14823e - whitespace cosmetics diff -r f2f0e53d8b02 -r fea865cd1305 dyncall/dyncall_call_x86.S --- a/dyncall/dyncall_call_x86.S Tue Sep 27 16:38:24 2022 +0200 +++ b/dyncall/dyncall_call_x86.S Thu Sep 29 10:51:24 2022 +0200 @@ -57,17 +57,17 @@ GLOBAL(dcCall_x86_cdecl) BEGIN_PROC(dcCall_x86_cdecl) - PUSH(EBP) /* prolog. */ + PUSH(EBP) /* prolog. */ MOVL(ESP,EBP) - PUSH(ESI) /* save preserved registers. */ + PUSH(ESI) /* save preserved registers. */ PUSH(EDI) - MOVL(DWORD(EBP,12),ESI) /* ESI = arg buffer ptr */ - MOVL(DWORD(EBP,16),ECX) /* ECX = arg buffer size */ - ADDL(LIT(15),ECX) /* ECX = align(ECX,16) */ + MOVL(DWORD(EBP,12),ESI) /* ESI = arg buffer ptr */ + MOVL(DWORD(EBP,16),ECX) /* ECX = arg buffer size */ + ADDL(LIT(15),ECX) /* ECX = align(ECX,16) */ ANDL(LIT(-16),ECX) - MOVL(ECX,DWORD(EBP,16)) /* save ECX. */ - SUBL(ECX,ESP) /* allocate stack size */ - MOVL(ESP,EDI) /* EDI = stack ptr */ + MOVL(ECX,DWORD(EBP,16)) /* save ECX. */ + SUBL(ECX,ESP) /* allocate stack size */ + MOVL(ESP,EDI) /* EDI = stack ptr */ /* work around for rep movsd (not supported by SunPro) @@ -86,6 +86,8 @@ POP(EBP) RET() END_PROC(dcCall_x86_cdecl) + + /* ---- C++ this calls (microsoft) ------------------------------------------ Details: @@ -95,27 +97,28 @@ GLOBAL(dcCall_x86_win32_msthis) BEGIN_PROC(dcCall_x86_win32_msthis) - PUSH(EBP) /* prolog. */ + PUSH(EBP) /* prolog. */ MOVL(ESP,EBP) - PUSH(ESI) /* save preserved. */ + PUSH(ESI) /* save preserved. */ PUSH(EDI) - MOVL(DWORD(EBP,12),ESI) /* ESI = pointer on args. */ - MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ - MOVL(DWORD(ESI,0),EAX) /* EAX = this pointer. */ - ADDL(LIT(4),ESI) /* increment args pointer by thisptr. */ - SUBL(LIT(4),ECX) /* decrement size by sizeof(thisptr). */ - SUBL(ECX,ESP) /* allocate argument-block on stack. */ - MOVL(ESP,EDI) /* EDI = stack args. */ - REP(MOVSB) /* copy arguments. */ - MOVL(EAX,ECX) /* ECX = this pointer. */ - CALL_DWORD(EBP,8) /* call function. */ - POP(EDI) /* restore preserved. */ + MOVL(DWORD(EBP,12),ESI) /* ESI = pointer on args. */ + MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ + MOVL(DWORD(ESI,0),EAX) /* EAX = this pointer. */ + ADDL(LIT(4),ESI) /* increment args pointer by thisptr. */ + SUBL(LIT(4),ECX) /* decrement size by sizeof(thisptr). */ + SUBL(ECX,ESP) /* allocate argument-block on stack. */ + MOVL(ESP,EDI) /* EDI = stack args. */ + REP(MOVSB) /* copy arguments. */ + MOVL(EAX,ECX) /* ECX = this pointer. */ + CALL_DWORD(EBP,8) /* call function. */ + POP(EDI) /* restore preserved. */ POP(ESI) - MOVL(EBP,ESP) /* epilog. */ + MOVL(EBP,ESP) /* epilog. */ POP(EBP) RET() END_PROC(dcCall_x86_win32_msthis) + /*---- win32 stdcall --------------------------------------------------------- Details: @@ -125,23 +128,24 @@ GLOBAL(dcCall_x86_win32_std) BEGIN_PROC(dcCall_x86_win32_std) - PUSH(EBP) /* prolog. */ + PUSH(EBP) /* prolog. */ MOVL(ESP,EBP) - PUSH(ESI) /* save ESI, EDI. */ + PUSH(ESI) /* save ESI, EDI. */ PUSH(EDI) - MOVL(DWORD(EBP,12),ESI) /* ESI = args. */ - MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ - SUBL(ECX,ESP) /* allocate size bytes on stack. */ - MOVL(ESP,EDI) /* EDI = copy destination stack. */ - REP(MOVSB) /* copy BYTEs. */ - CALL_DWORD(EBP,8) /* call target. */ - POP(EDI) /* restore EDI, ESI. */ + MOVL(DWORD(EBP,12),ESI) /* ESI = args. */ + MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ + SUBL(ECX,ESP) /* allocate size bytes on stack. */ + MOVL(ESP,EDI) /* EDI = copy destination stack. */ + REP(MOVSB) /* copy BYTEs. */ + CALL_DWORD(EBP,8) /* call target. */ + POP(EDI) /* restore EDI, ESI. */ POP(ESI) - MOVL(EBP,ESP) /* epilog. */ + MOVL(EBP,ESP) /* epilog. */ POP(EBP) RET() END_PROC(dcCall_x86_win32_std) + /*---- win32 fastcall (GNU/Microsoft) ---------------------------------------- Details: @@ -152,29 +156,30 @@ GLOBAL(dcCall_x86_win32_fast) BEGIN_PROC(dcCall_x86_win32_fast) - PUSH(EBP) /* prolog. */ + PUSH(EBP) /* prolog. */ MOVL(ESP,EBP) - PUSH(ESI) /* save preserved. */ + PUSH(ESI) /* save preserved. */ PUSH(EDI) - MOVL(DWORD(EBP,12),ESI) /* ESI = copy source args. */ - MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ - MOVL(DWORD(ESI,0),EAX) /* EAX = first argument. */ - MOVL(DWORD(ESI,4),EDX) /* EDX = second argument. */ - ADDL(LIT(8),ESI) /* skip registers. */ + MOVL(DWORD(EBP,12),ESI) /* ESI = copy source args. */ + MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ + MOVL(DWORD(ESI,0),EAX) /* EAX = first argument. */ + MOVL(DWORD(ESI,4),EDX) /* EDX = second argument. */ + ADDL(LIT(8),ESI) /* skip registers. */ SUBL(LIT(8),ECX) - MOVL(ECX,DWORD(EBP,16)) /* save stack alloc size. */ - SUBL(ECX,ESP) /* allocate stack. */ - MOVL(ESP,EDI) /* EDI = stack args. */ - REP(MOVSB) /* copy BYTEs. */ - MOVL(EAX,ECX) /* ECX = first argument. */ - CALL_DWORD(EBP,8) /* call target. */ - POP(EDI) /* restore preserved. */ + MOVL(ECX,DWORD(EBP,16)) /* save stack alloc size. */ + SUBL(ECX,ESP) /* allocate stack. */ + MOVL(ESP,EDI) /* EDI = stack args. */ + REP(MOVSB) /* copy BYTEs. */ + MOVL(EAX,ECX) /* ECX = first argument. */ + CALL_DWORD(EBP,8) /* call target. */ + POP(EDI) /* restore preserved. */ POP(ESI) - MOVL(EBP,ESP) /* epilog. */ + MOVL(EBP,ESP) /* epilog. */ POP(EBP) RET() END_PROC(dcCall_x86_win32_fast) + /*--- syscall int80 linux --------------------------------------------------- Details: @@ -184,27 +189,28 @@ GLOBAL(dcCall_x86_syscall_int80h_linux) BEGIN_PROC(dcCall_x86_syscall_int80h_linux) - PUSH(EBP) /* prolog. */ + PUSH(EBP) /* prolog. */ MOVL(ESP,EBP) - PUSH(EBX) /* save preserved. */ + PUSH(EBX) /* save preserved. */ PUSH(ESI) PUSH(EDI) - MOVL(DWORD(EBP,12),EAX) /* EAX = argument buffer. */ - MOVL(DWORD(EAX,0),EBX) /* move first five arguments. */ - MOVL(DWORD(EAX,4),ECX) + MOVL(DWORD(EBP,12),EAX) /* EAX = argument buffer. */ + MOVL(DWORD(EAX,0),EBX) /* move first five arguments. */ + MOVL(DWORD(EAX,4),ECX) MOVL(DWORD(EAX,8),EDX) MOVL(DWORD(EAX,12),ESI) MOVL(DWORD(EAX,16),EDI) - MOVL(DWORD(EBP,8),EAX) /* EAX = syscall id. */ + MOVL(DWORD(EBP,8),EAX) /* EAX = syscall id. */ INT(LIT(HEX(80))) - POP(EDI) /* restore preserved. */ + POP(EDI) /* restore preserved. */ POP(ESI) POP(EBX) - MOVL(EBP,ESP) /* epilog. */ + MOVL(EBP,ESP) /* epilog. */ POP(EBP) RET() END_PROC(dcCall_x86_syscall_int80h_linux) + /*--- syscall int80 bsd ----------------------------------------------------- Details: @@ -214,20 +220,20 @@ GLOBAL(dcCall_x86_syscall_int80h_bsd) BEGIN_PROC(dcCall_x86_syscall_int80h_bsd) - PUSH(EBP) /* prolog. */ + PUSH(EBP) /* prolog. */ MOVL(ESP,EBP) - PUSH(ESI) /* save preserved. */ + PUSH(ESI) /* save preserved. */ PUSH(EDI) - MOVL(DWORD(EBP,12),ESI) /* ESI = pointer on args. */ - MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ - SUBL(ECX,ESP) /* allocate stack space. */ - MOVL(ESP,EDI) /* EDI = stack args. */ + MOVL(DWORD(EBP,12),ESI) /* ESI = pointer on args. */ + MOVL(DWORD(EBP,16),ECX) /* ECX = size. */ + SUBL(ECX,ESP) /* allocate stack space. */ + MOVL(ESP,EDI) /* EDI = stack args. */ REP(MOVSB) - MOVL(DWORD(EBP,8),EAX) /* load system call id. */ + MOVL(DWORD(EBP,8),EAX) /* load system call id. */ CALL(_do_int) - POP(EDI) /* restore preserved. */ + POP(EDI) /* restore preserved. */ POP(ESI) - MOVL(EBP,ESP) /* epilog. */ + MOVL(EBP,ESP) /* epilog. */ POP(EBP) RET() _do_int: