File: vacall-i386-macro.S

package info (click to toggle)
clisp 1%3A2.41-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 49,804 kB
  • ctags: 16,291
  • sloc: lisp: 75,912; ansic: 49,247; xml: 24,289; asm: 21,993; sh: 11,234; fortran: 6,692; cpp: 2,660; objc: 2,481; makefile: 2,355; perl: 164; sed: 55
file content (133 lines) | stat: -rw-r--r-- 3,530 bytes parent folder | download | duplicates (11)
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
#include "asmi386.h"
TEXT()
	ALIGN(2)
GLOBL(C(__vacall_r))
	DECLARE_FUNCTION(__vacall_r)
FUNBEGIN(__vacall_r)
	INSN2(sub,l	,NUM(36),R(esp))
	INSN2(mov,l	,NUM(0),X4 MEM(esp))
	INSN2(lea,l	,X4 MEM_DISP(esp,44),R(ecx))
	INSN2(mov,l	,R(ecx),X4 MEM_DISP(esp,4))
	INSN2(mov,l	,NUM(0),X4 MEM_DISP(esp,8))
	INSN2(mov,l	,NUM(0),X4 MEM_DISP(esp,12))
	INSN2(mov,l	,R(ebx),X4 MEM_DISP(esp,32))
	INSN2(mov,l	,R(esp),R(edx))
	INSN1(push,l	,R(edx))
	INSN2(mov,l	,X4 MEM_DISP(esp,44),R(ecx))
	INSN2(mov,l	,X4 MEM_DISP(ecx,4),R(edx))
	INSN1(push,l	,R(edx))
	INSN2(mov,l	,X4 MEM_DISP(esp,48),R(ecx))
	INSN2(mov,l	,X4 MEM(ecx),R(edx))
	INSN1(call,_	,INDIR(R(edx)))
	INSN2(add,l	,NUM(8),R(esp))
	INSN2(cmp,l	,NUM(0),X4 MEM_DISP(esp,12))
	INSN1(je,_	,L3)
	INSN2(cmp,l	,NUM(1),X4 MEM_DISP(esp,12))
	INSN1(je,_	,L45)
	INSN2(cmp,l	,NUM(2),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L6)
L45:
	INSN2MOVX(movs,b	,X1 MEM_DISP(esp,24),R(eax))
	INSN1(jmp,_	,L3)
L6:
	INSN2(cmp,l	,NUM(3),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L8)
	INSN2MOVX(movz,b	,X1 MEM_DISP(esp,24),R(eax))
	INSN1(jmp,_	,L3)
L8:
	INSN2(cmp,l	,NUM(4),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L10)
	INSN2MOVX(movs,w	,X2 MEM_DISP(esp,24),R(eax))
	INSN1(jmp,_	,L3)
L10:
	INSN2(cmp,l	,NUM(5),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L12)
	INSN2MOVX(movz,w	,X2 MEM_DISP(esp,24),R(eax))
	INSN1(jmp,_	,L3)
L12:
	INSN2(cmp,l	,NUM(6),X4 MEM_DISP(esp,12))
	INSN1(je,_	,L46)
	INSN2(cmp,l	,NUM(7),X4 MEM_DISP(esp,12))
	INSN1(je,_	,L46)
	INSN2(cmp,l	,NUM(8),X4 MEM_DISP(esp,12))
	INSN1(je,_	,L46)
	INSN2(cmp,l	,NUM(9),X4 MEM_DISP(esp,12))
	INSN1(je,_	,L46)
	INSN2(mov,l	,X4 MEM_DISP(esp,12),R(edx))
	INSN2(add,l	,NUM(-10),R(edx))
	INSN2(cmp,l	,NUM(1),R(edx))
	INSN1(ja,_	,L22)
	INSN2(mov,l	,X4 MEM_DISP(esp,24),R(eax))
	INSN2(mov,l	,X4 MEM_DISP(esp,28),R(edx))
	INSN1(jmp,_	,L3)
L22:
	INSN2(cmp,l	,NUM(12),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L24)
	INSN1(fld,s	,X4 MEM_DISP(esp,24))
	INSN1(jmp,_	,L3)
L24:
	INSN2(cmp,l	,NUM(13),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L26)
	INSN1(fld,l	,X8 MEM_DISP(esp,24))
	INSN1(jmp,_	,L3)
L26:
	INSN2(cmp,l	,NUM(14),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L28)
L46:
	INSN2(mov,l	,X4 MEM_DISP(esp,24),R(eax))
	INSN1(jmp,_	,L3)
L28:
	INSN2(cmp,l	,NUM(15),X4 MEM_DISP(esp,12))
	INSN1(jne,_	,L3)
	INSN2(test,b	,NUM(1),X1 MEM(esp))
	INSN1(jne,_	,L47)
	INSN2(test,b	,NUM(4),X1 MEM_DISP(esp,1))
	INSN1(je,_	,L33)
	INSN2(cmp,l	,NUM(1),X4 MEM_DISP(esp,16))
	INSN1(jne,_	,L34)
	INSN2(mov,l	,X4 MEM_DISP(esp,8),R(edx))
	INSN2MOVX(movz,b	,X1 MEM(edx),R(eax))
	INSN1(jmp,_	,L3)
L34:
	INSN2(cmp,l	,NUM(2),X4 MEM_DISP(esp,16))
	INSN1(jne,_	,L37)
	INSN2(mov,l	,X4 MEM_DISP(esp,8),R(edx))
	INSN2MOVX(movz,w	,X2 MEM(edx),R(eax))
	INSN1(jmp,_	,L3)
L37:
	INSN2(cmp,l	,NUM(4),X4 MEM_DISP(esp,16))
	INSN1(jne,_	,L39)
	INSN2(mov,l	,X4 MEM_DISP(esp,8),R(edx))
	INSN2(mov,l	,X4 MEM(edx),R(eax))
	INSN1(jmp,_	,L3)
L39:
	INSN2(cmp,l	,NUM(8),X4 MEM_DISP(esp,16))
	INSN1(jne,_	,L33)
	INSN2(mov,l	,X4 MEM_DISP(esp,8),R(edx))
	INSN2(mov,l	,X4 MEM(edx),R(eax))
	INSN2(mov,l	,X4 MEM_DISP(esp,8),R(edx))
	INSN2(mov,l	,X4 MEM_DISP(edx,4),R(edx))
	INSN1(jmp,_	,L3)
L33:
	INSN2(test,b	,NUM(24),X1 MEM(esp))
	INSN1(jne,_	,L42)
	INSN2(add,l	,NUM(36),R(esp))
	ret NUM(8)
L42:
	INSN2(test,b	,NUM(16),X1 MEM(esp))
	INSN1(je,_	,L3)
L47:
	INSN2(mov,l	,X4 MEM_DISP(esp,8),R(eax))
L3:
	INSN2(test,b	,NUM(2),X1 MEM_DISP(esp,1))
	INSN1(je,_	,L44)
	INSN2(mov,l	,X4 MEM_DISP(esp,36),R(ecx))
	INSN2(mov,l	,X4 MEM_DISP(esp,4),R(esp))
	INSN1(jmp,_	,INDIR(R(ecx)))
L44:
	INSN2(add,l	,NUM(36),R(esp))
	ret NUM(4)
	INSN2(add,l	,NUM(36),R(esp))
	ret
FUNEND()