-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathcallconv.s.x64-windows
More file actions
475 lines (472 loc) · 10.9 KB
/
Copy pathcallconv.s.x64-windows
File metadata and controls
475 lines (472 loc) · 10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26726.0
include listing.inc
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC int_args
PUBLIC float_args
PUBLIC var_args_int
PUBLIC var_args
PUBLIC test_int_args
PUBLIC test_float_args
PUBLIC test_var_args_int
PUBLIC test_var_args_float
PUBLIC test_unknown_function
PUBLIC __real@3f800000
PUBLIC __real@4000000000000000
PUBLIC __real@4010000000000000
PUBLIC __real@4018000000000000
PUBLIC __real@401c000000000000
PUBLIC __real@4020000000000000
PUBLIC __real@4022000000000000
PUBLIC __real@4024000000000000
PUBLIC __real@4026000000000000
PUBLIC __real@4028000000000000
PUBLIC __real@40400000
PUBLIC __real@40800000
PUBLIC __real@40a00000
PUBLIC __real@40c00000
PUBLIC __real@40e00000
PUBLIC __real@41000000
PUBLIC __real@42c20000
EXTRN unknown_function:PROC
EXTRN _fltused:DWORD
pdata SEGMENT
$pdata$var_args_int DD imagerel $LN3
DD imagerel $LN3+171
DD imagerel $unwind$var_args_int
$pdata$var_args DD imagerel $LN3
DD imagerel $LN3+173
DD imagerel $unwind$var_args
$pdata$test_int_args DD imagerel $LN3
DD imagerel $LN3+100
DD imagerel $unwind$test_int_args
$pdata$test_float_args DD imagerel $LN3
DD imagerel $LN3+152
DD imagerel $unwind$test_float_args
$pdata$test_var_args_int DD imagerel $LN3
DD imagerel $LN3+107
DD imagerel $unwind$test_var_args_int
$pdata$test_var_args_float DD imagerel $LN3
DD imagerel $LN3+178
DD imagerel $unwind$test_var_args_float
$pdata$test_unknown_function DD imagerel $LN3
DD imagerel $LN3+73
DD imagerel $unwind$test_unknown_function
pdata ENDS
; COMDAT __real@42c20000
CONST SEGMENT
__real@42c20000 DD 042c20000r ; 97
CONST ENDS
; COMDAT __real@41000000
CONST SEGMENT
__real@41000000 DD 041000000r ; 8
CONST ENDS
; COMDAT __real@40e00000
CONST SEGMENT
__real@40e00000 DD 040e00000r ; 7
CONST ENDS
; COMDAT __real@40c00000
CONST SEGMENT
__real@40c00000 DD 040c00000r ; 6
CONST ENDS
; COMDAT __real@40a00000
CONST SEGMENT
__real@40a00000 DD 040a00000r ; 5
CONST ENDS
; COMDAT __real@40800000
CONST SEGMENT
__real@40800000 DD 040800000r ; 4
CONST ENDS
; COMDAT __real@40400000
CONST SEGMENT
__real@40400000 DD 040400000r ; 3
CONST ENDS
; COMDAT __real@4028000000000000
CONST SEGMENT
__real@4028000000000000 DQ 04028000000000000r ; 12
CONST ENDS
; COMDAT __real@4026000000000000
CONST SEGMENT
__real@4026000000000000 DQ 04026000000000000r ; 11
CONST ENDS
; COMDAT __real@4024000000000000
CONST SEGMENT
__real@4024000000000000 DQ 04024000000000000r ; 10
CONST ENDS
; COMDAT __real@4022000000000000
CONST SEGMENT
__real@4022000000000000 DQ 04022000000000000r ; 9
CONST ENDS
; COMDAT __real@4020000000000000
CONST SEGMENT
__real@4020000000000000 DQ 04020000000000000r ; 8
CONST ENDS
; COMDAT __real@401c000000000000
CONST SEGMENT
__real@401c000000000000 DQ 0401c000000000000r ; 7
CONST ENDS
; COMDAT __real@4018000000000000
CONST SEGMENT
__real@4018000000000000 DQ 04018000000000000r ; 6
CONST ENDS
; COMDAT __real@4010000000000000
CONST SEGMENT
__real@4010000000000000 DQ 04010000000000000r ; 4
CONST ENDS
; COMDAT __real@4000000000000000
CONST SEGMENT
__real@4000000000000000 DQ 04000000000000000r ; 2
CONST ENDS
; COMDAT __real@3f800000
CONST SEGMENT
__real@3f800000 DD 03f800000r ; 1
CONST ENDS
xdata SEGMENT
$unwind$var_args_int DD 011601H
DD 04216H
$unwind$var_args DD 011801H
DD 04218H
$unwind$test_int_args DD 010401H
DD 0c204H
$unwind$test_float_args DD 010401H
DD 0c204H
$unwind$test_var_args_int DD 010401H
DD 0c204H
$unwind$test_var_args_float DD 010401H
DD 0e204H
$unwind$test_unknown_function DD 010401H
DD 06204H
xdata ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
test_unknown_function PROC
; File c:\prj\misc\test\callconv.c
; Line 51
$LN3:
sub rsp, 56 ; 00000038H
; Line 52
movsd xmm0, QWORD PTR __real@4018000000000000
movsd QWORD PTR [rsp+40], xmm0
mov DWORD PTR [rsp+32], 5
movsd xmm3, QWORD PTR __real@4010000000000000
movq r9, xmm3
mov r8d, 3
movsd xmm1, QWORD PTR __real@4000000000000000
movq rdx, xmm1
mov ecx, 1
call unknown_function
; Line 53
add rsp, 56 ; 00000038H
ret 0
test_unknown_function ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
test_var_args_float PROC
; File c:\prj\misc\test\callconv.c
; Line 47
$LN3:
sub rsp, 120 ; 00000078H
; Line 48
movsd xmm0, QWORD PTR __real@4028000000000000
movsd QWORD PTR [rsp+104], xmm0
movsd xmm0, QWORD PTR __real@4026000000000000
movsd QWORD PTR [rsp+96], xmm0
movsd xmm0, QWORD PTR __real@4024000000000000
movsd QWORD PTR [rsp+88], xmm0
movsd xmm0, QWORD PTR __real@4022000000000000
movsd QWORD PTR [rsp+80], xmm0
movsd xmm0, QWORD PTR __real@4020000000000000
movsd QWORD PTR [rsp+72], xmm0
movsd xmm0, QWORD PTR __real@401c000000000000
movsd QWORD PTR [rsp+64], xmm0
movsd xmm0, QWORD PTR __real@4018000000000000
movsd QWORD PTR [rsp+56], xmm0
mov DWORD PTR [rsp+48], 5
movsd xmm0, QWORD PTR __real@4010000000000000
movsd QWORD PTR [rsp+40], xmm0
mov DWORD PTR [rsp+32], 3
movsd xmm3, QWORD PTR __real@4000000000000000
movq r9, xmm3
mov r8d, 98 ; 00000062H
mov edx, 97 ; 00000061H
movss xmm0, DWORD PTR __real@3f800000
movd ecx, xmm0
call var_args
; Line 49
add rsp, 120 ; 00000078H
ret 0
test_var_args_float ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
test_var_args_int PROC
; File c:\prj\misc\test\callconv.c
; Line 43
$LN3:
sub rsp, 104 ; 00000068H
; Line 44
mov DWORD PTR [rsp+88], 108 ; 0000006cH
mov DWORD PTR [rsp+80], 107 ; 0000006bH
mov DWORD PTR [rsp+72], 106 ; 0000006aH
mov DWORD PTR [rsp+64], 105 ; 00000069H
mov DWORD PTR [rsp+56], 104 ; 00000068H
mov DWORD PTR [rsp+48], 103 ; 00000067H
mov DWORD PTR [rsp+40], 102 ; 00000066H
mov DWORD PTR [rsp+32], 101 ; 00000065H
mov r9d, 100 ; 00000064H
mov r8d, 99 ; 00000063H
mov edx, 98 ; 00000062H
movss xmm0, DWORD PTR __real@42c20000
movd ecx, xmm0
call var_args
; Line 45
add rsp, 104 ; 00000068H
ret 0
test_var_args_int ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
test_float_args PROC
; File c:\prj\misc\test\callconv.c
; Line 39
$LN3:
sub rsp, 104 ; 00000068H
; Line 40
movsd xmm0, QWORD PTR __real@4028000000000000
movsd QWORD PTR [rsp+88], xmm0
movsd xmm0, QWORD PTR __real@4026000000000000
movsd QWORD PTR [rsp+80], xmm0
movsd xmm0, QWORD PTR __real@4024000000000000
movsd QWORD PTR [rsp+72], xmm0
movsd xmm0, QWORD PTR __real@4022000000000000
movsd QWORD PTR [rsp+64], xmm0
movss xmm0, DWORD PTR __real@41000000
movss DWORD PTR [rsp+56], xmm0
movss xmm0, DWORD PTR __real@40e00000
movss DWORD PTR [rsp+48], xmm0
movss xmm0, DWORD PTR __real@40c00000
movss DWORD PTR [rsp+40], xmm0
movss xmm0, DWORD PTR __real@40a00000
movss DWORD PTR [rsp+32], xmm0
movss xmm3, DWORD PTR __real@40800000
movss xmm2, DWORD PTR __real@40400000
mov edx, 98 ; 00000062H
mov ecx, 97 ; 00000061H
call float_args
; Line 41
add rsp, 104 ; 00000068H
ret 0
test_float_args ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
test_int_args PROC
; File c:\prj\misc\test\callconv.c
; Line 35
$LN3:
sub rsp, 104 ; 00000068H
; Line 36
mov DWORD PTR [rsp+88], 108 ; 0000006cH
mov DWORD PTR [rsp+80], 107 ; 0000006bH
mov DWORD PTR [rsp+72], 106 ; 0000006aH
mov DWORD PTR [rsp+64], 105 ; 00000069H
mov DWORD PTR [rsp+56], 104 ; 00000068H
mov DWORD PTR [rsp+48], 103 ; 00000067H
mov DWORD PTR [rsp+40], 102 ; 00000066H
mov DWORD PTR [rsp+32], 101 ; 00000065H
mov r9d, 100 ; 00000064H
mov r8d, 99 ; 00000063H
mov edx, 98 ; 00000062H
mov ecx, 97 ; 00000061H
call int_args
; Line 37
add rsp, 104 ; 00000068H
ret 0
test_int_args ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
d$ = 0
c$ = 4
e$ = 8
f$ = 12
args$ = 16
x$ = 48
a$ = 56
b$ = 64
var_args PROC
; File c:\prj\misc\test\callconv.c
; Line 24
$LN3:
mov DWORD PTR [rsp+24], r8d
mov DWORD PTR [rsp+16], edx
movss DWORD PTR [rsp+8], xmm0
mov QWORD PTR [rsp+32], r9
sub rsp, 40 ; 00000028H
; Line 26
lea rax, QWORD PTR b$[rsp+8]
mov QWORD PTR args$[rsp], rax
; Line 27
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR c$[rsp], eax
; Line 28
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR d$[rsp], eax
; Line 29
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR e$[rsp], eax
; Line 30
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR f$[rsp], eax
; Line 31
mov QWORD PTR args$[rsp], 0
; Line 32
mov eax, DWORD PTR d$[rsp]
mov ecx, DWORD PTR c$[rsp]
add ecx, eax
mov eax, ecx
mov ecx, DWORD PTR e$[rsp]
imul ecx, DWORD PTR f$[rsp]
add eax, ecx
; Line 33
add rsp, 40 ; 00000028H
ret 0
var_args ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
d$ = 0
c$ = 4
e$ = 8
f$ = 12
args$ = 16
a$ = 48
b$ = 56
var_args_int PROC
; File c:\prj\misc\test\callconv.c
; Line 13
$LN3:
mov DWORD PTR [rsp+16], edx
mov DWORD PTR [rsp+8], ecx
mov QWORD PTR [rsp+24], r8
mov QWORD PTR [rsp+32], r9
sub rsp, 40 ; 00000028H
; Line 15
lea rax, QWORD PTR b$[rsp+8]
mov QWORD PTR args$[rsp], rax
; Line 16
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR c$[rsp], eax
; Line 17
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR d$[rsp], eax
; Line 18
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR e$[rsp], eax
; Line 19
mov rax, QWORD PTR args$[rsp]
add rax, 8
mov QWORD PTR args$[rsp], rax
mov rax, QWORD PTR args$[rsp]
mov eax, DWORD PTR [rax-8]
mov DWORD PTR f$[rsp], eax
; Line 20
mov QWORD PTR args$[rsp], 0
; Line 21
mov eax, DWORD PTR d$[rsp]
mov ecx, DWORD PTR c$[rsp]
add ecx, eax
mov eax, ecx
mov ecx, DWORD PTR e$[rsp]
imul ecx, DWORD PTR f$[rsp]
add eax, ecx
; Line 22
add rsp, 40 ; 00000028H
ret 0
var_args_int ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
a$ = 8
b$ = 16
c$ = 24
d$ = 32
e$ = 40
f$ = 48
g$ = 56
h$ = 64
i$ = 72
j$ = 80
k$ = 88
l$ = 96
float_args PROC
; File c:\prj\misc\test\callconv.c
; Line 9
movss DWORD PTR [rsp+32], xmm3
movss DWORD PTR [rsp+24], xmm2
mov DWORD PTR [rsp+16], edx
mov DWORD PTR [rsp+8], ecx
; Line 10
movss xmm0, DWORD PTR c$[rsp]
mulss xmm0, DWORD PTR d$[rsp]
; Line 11
ret 0
float_args ENDP
_TEXT ENDS
; Function compile flags: /Odtp
_TEXT SEGMENT
a$ = 8
b$ = 16
c$ = 24
d$ = 32
e$ = 40
f$ = 48
g$ = 56
h$ = 64
i$ = 72
j$ = 80
k$ = 88
l$ = 96
int_args PROC
; File c:\prj\misc\test\callconv.c
; Line 5
mov DWORD PTR [rsp+32], r9d
mov DWORD PTR [rsp+24], r8d
mov DWORD PTR [rsp+16], edx
mov DWORD PTR [rsp+8], ecx
; Line 6
mov eax, DWORD PTR a$[rsp]
; Line 7
ret 0
int_args ENDP
_TEXT ENDS
END