annotate test/gen-masm/call_x86.masm @ 663:127b569978cc default tip

- another tweak handling clang trying to be too smart (see last commit)
author Tassilo Philipp
date Sun, 24 Mar 2024 13:52:44 +0100
parents 3e629dc19168
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 .386
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 .MODEL FLAT
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 .CODE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 _dcCall_x86_cdecl PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 push ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 mov ebp, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 push esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 push edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 mov esi, dword ptr[ebp+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 mov ecx, dword ptr[ebp+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 sub esp, ecx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 mov edi, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 shr ecx, 2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 rep movsd
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 call dword ptr[ebp+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 add esp, dword ptr[ebp+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 pop edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 pop esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 mov esp, ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 pop ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 _dcCall_x86_cdecl ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 _dcCall_x86_win32_msthis PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 push ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 mov ebp, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 push esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 push edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 mov esi, dword ptr [ebp+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 mov ecx, dword ptr [ebp+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 mov eax, dword ptr [esi+0]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 add esi, 4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 sub ecx, 4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 sub esp, ecx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 mov edi, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 rep movsb
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 mov ecx, eax
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 call dword ptr[ebp+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 pop edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 pop esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 mov esp, ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 pop ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 _dcCall_x86_win32_msthis ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 _dcCall_x86_win32_std PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 push ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 mov ebp, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 push esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 push edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 mov esi, dword ptr[ebp+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 mov ecx, dword ptr[ebp+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 sub esp, ecx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 mov edi, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 rep movsb
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 call dword ptr[ebp+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 pop edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 pop esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 mov esp, ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 pop ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 _dcCall_x86_win32_std ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 _dcCall_x86_win32_fast PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 push ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 mov ebp, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 push esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 push edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 mov esi, dword ptr[ebp+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 mov ecx, dword ptr[ebp+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 mov eax, dword ptr[esi+0]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 mov edx, dword ptr[esi+4]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 add esi, 8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 sub ecx, 8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 mov dword ptr [ebp+16], ecx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 sub esp, ecx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 mov edi, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 rep movsb
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 mov ecx, eax
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 call dword ptr[ebp+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83 pop edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 pop esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 mov esp, ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 pop ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88 _dcCall_x86_win32_fast ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 _dcCall_x86_sys_int80h_linux PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91 push ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 mov ebp, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 push ebx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 push esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 push edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 mov eax, dword ptr[ebp+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97 mov ebx, dword ptr[eax+0]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 mov ecx, dword ptr[eax+4]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 mov edx, dword ptr[eax+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100 mov esi, dword ptr[eax+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 mov edi, dword ptr[eax+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 mov eax, dword ptr[ebp+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 int 80h
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 pop edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 pop esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 pop ebx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 mov esp, ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108 pop ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 _dcCall_x86_sys_int80h_linux ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 _dcCall_x86_sys_int80h_bsd PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113 push ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 mov ebp, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 push esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116 push edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 mov esi, dword ptr[ebp+12]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118 mov ecx, dword ptr[ebp+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119 sub esp, ecx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 mov edi, esp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 shr ecx, 2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122 rep movsd
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 mov eax, dword ptr[ebp+8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124 call _do_int
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 pop edi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 pop esi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 mov esp, ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 pop ebp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130 _do_int:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 int 80h
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133 _dcCall_x86_sys_int80h_bsd ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134 END