Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6429 | siemargl | 1 | /* ------------------------------------------------------------------ */ |
2 | /* WARNING: relative order of tokens is important. */ |
||
3 | |||
4 | /* register */ |
||
5 | DEF_ASM(al) |
||
6 | DEF_ASM(cl) |
||
7 | DEF_ASM(dl) |
||
8 | DEF_ASM(bl) |
||
9 | DEF_ASM(ah) |
||
10 | DEF_ASM(ch) |
||
11 | DEF_ASM(dh) |
||
12 | DEF_ASM(bh) |
||
13 | DEF_ASM(ax) |
||
14 | DEF_ASM(cx) |
||
15 | DEF_ASM(dx) |
||
16 | DEF_ASM(bx) |
||
17 | DEF_ASM(sp) |
||
18 | DEF_ASM(bp) |
||
19 | DEF_ASM(si) |
||
20 | DEF_ASM(di) |
||
21 | DEF_ASM(eax) |
||
22 | DEF_ASM(ecx) |
||
23 | DEF_ASM(edx) |
||
24 | DEF_ASM(ebx) |
||
25 | DEF_ASM(esp) |
||
26 | DEF_ASM(ebp) |
||
27 | DEF_ASM(esi) |
||
28 | DEF_ASM(edi) |
||
29 | #ifdef TCC_TARGET_X86_64 |
||
30 | DEF_ASM(rax) |
||
31 | DEF_ASM(rcx) |
||
32 | DEF_ASM(rdx) |
||
33 | DEF_ASM(rbx) |
||
34 | DEF_ASM(rsp) |
||
35 | DEF_ASM(rbp) |
||
36 | DEF_ASM(rsi) |
||
37 | DEF_ASM(rdi) |
||
38 | #endif |
||
39 | DEF_ASM(mm0) |
||
40 | DEF_ASM(mm1) |
||
41 | DEF_ASM(mm2) |
||
42 | DEF_ASM(mm3) |
||
43 | DEF_ASM(mm4) |
||
44 | DEF_ASM(mm5) |
||
45 | DEF_ASM(mm6) |
||
46 | DEF_ASM(mm7) |
||
47 | DEF_ASM(xmm0) |
||
48 | DEF_ASM(xmm1) |
||
49 | DEF_ASM(xmm2) |
||
50 | DEF_ASM(xmm3) |
||
51 | DEF_ASM(xmm4) |
||
52 | DEF_ASM(xmm5) |
||
53 | DEF_ASM(xmm6) |
||
54 | DEF_ASM(xmm7) |
||
55 | DEF_ASM(cr0) |
||
56 | DEF_ASM(cr1) |
||
57 | DEF_ASM(cr2) |
||
58 | DEF_ASM(cr3) |
||
59 | DEF_ASM(cr4) |
||
60 | DEF_ASM(cr5) |
||
61 | DEF_ASM(cr6) |
||
62 | DEF_ASM(cr7) |
||
63 | DEF_ASM(tr0) |
||
64 | DEF_ASM(tr1) |
||
65 | DEF_ASM(tr2) |
||
66 | DEF_ASM(tr3) |
||
67 | DEF_ASM(tr4) |
||
68 | DEF_ASM(tr5) |
||
69 | DEF_ASM(tr6) |
||
70 | DEF_ASM(tr7) |
||
71 | DEF_ASM(db0) |
||
72 | DEF_ASM(db1) |
||
73 | DEF_ASM(db2) |
||
74 | DEF_ASM(db3) |
||
75 | DEF_ASM(db4) |
||
76 | DEF_ASM(db5) |
||
77 | DEF_ASM(db6) |
||
78 | DEF_ASM(db7) |
||
79 | DEF_ASM(dr0) |
||
80 | DEF_ASM(dr1) |
||
81 | DEF_ASM(dr2) |
||
82 | DEF_ASM(dr3) |
||
83 | DEF_ASM(dr4) |
||
84 | DEF_ASM(dr5) |
||
85 | DEF_ASM(dr6) |
||
86 | DEF_ASM(dr7) |
||
87 | DEF_ASM(es) |
||
88 | DEF_ASM(cs) |
||
89 | DEF_ASM(ss) |
||
90 | DEF_ASM(ds) |
||
91 | DEF_ASM(fs) |
||
92 | DEF_ASM(gs) |
||
93 | DEF_ASM(st) |
||
94 | |||
95 | /* generic two operands */ |
||
96 | DEF_BWLX(mov) |
||
97 | |||
98 | DEF_BWLX(add) |
||
99 | DEF_BWLX(or) |
||
100 | DEF_BWLX(adc) |
||
101 | DEF_BWLX(sbb) |
||
102 | DEF_BWLX(and) |
||
103 | DEF_BWLX(sub) |
||
104 | DEF_BWLX(xor) |
||
105 | DEF_BWLX(cmp) |
||
106 | |||
107 | /* unary ops */ |
||
108 | DEF_BWLX(inc) |
||
109 | DEF_BWLX(dec) |
||
110 | DEF_BWLX(not) |
||
111 | DEF_BWLX(neg) |
||
112 | DEF_BWLX(mul) |
||
113 | DEF_BWLX(imul) |
||
114 | DEF_BWLX(div) |
||
115 | DEF_BWLX(idiv) |
||
116 | |||
117 | DEF_BWLX(xchg) |
||
118 | DEF_BWLX(test) |
||
119 | |||
120 | /* shifts */ |
||
121 | DEF_BWLX(rol) |
||
122 | DEF_BWLX(ror) |
||
123 | DEF_BWLX(rcl) |
||
124 | DEF_BWLX(rcr) |
||
125 | DEF_BWLX(shl) |
||
126 | DEF_BWLX(shr) |
||
127 | DEF_BWLX(sar) |
||
128 | |||
129 | DEF_ASM(shldw) |
||
130 | DEF_ASM(shldl) |
||
131 | DEF_ASM(shld) |
||
132 | DEF_ASM(shrdw) |
||
133 | DEF_ASM(shrdl) |
||
134 | DEF_ASM(shrd) |
||
135 | |||
136 | DEF_ASM(pushw) |
||
137 | DEF_ASM(pushl) |
||
138 | #ifdef TCC_TARGET_X86_64 |
||
139 | DEF_ASM(pushq) |
||
140 | #endif |
||
141 | DEF_ASM(push) |
||
142 | |||
143 | DEF_ASM(popw) |
||
144 | DEF_ASM(popl) |
||
145 | #ifdef TCC_TARGET_X86_64 |
||
146 | DEF_ASM(popq) |
||
147 | #endif |
||
148 | DEF_ASM(pop) |
||
149 | |||
150 | DEF_BWL(in) |
||
151 | DEF_BWL(out) |
||
152 | |||
153 | DEF_WL(movzb) |
||
154 | DEF_ASM(movzwl) |
||
155 | DEF_ASM(movsbw) |
||
156 | DEF_ASM(movsbl) |
||
157 | DEF_ASM(movswl) |
||
158 | #ifdef TCC_TARGET_X86_64 |
||
159 | DEF_ASM(movslq) |
||
160 | #endif |
||
161 | |||
162 | DEF_WLX(lea) |
||
163 | |||
164 | DEF_ASM(les) |
||
165 | DEF_ASM(lds) |
||
166 | DEF_ASM(lss) |
||
167 | DEF_ASM(lfs) |
||
168 | DEF_ASM(lgs) |
||
169 | |||
170 | DEF_ASM(call) |
||
171 | DEF_ASM(jmp) |
||
172 | DEF_ASM(lcall) |
||
173 | DEF_ASM(ljmp) |
||
174 | |||
175 | DEF_ASMTEST(j,) |
||
176 | |||
177 | DEF_ASMTEST(set,) |
||
178 | DEF_ASMTEST(set,b) |
||
179 | DEF_ASMTEST(cmov,) |
||
180 | |||
181 | DEF_WLX(bsf) |
||
182 | DEF_WLX(bsr) |
||
183 | DEF_WLX(bt) |
||
184 | DEF_WLX(bts) |
||
185 | DEF_WLX(btr) |
||
186 | DEF_WLX(btc) |
||
187 | |||
188 | DEF_WLX(lsl) |
||
189 | |||
190 | /* generic FP ops */ |
||
191 | DEF_FP(add) |
||
192 | DEF_FP(mul) |
||
193 | |||
194 | DEF_ASM(fcom) |
||
195 | DEF_ASM(fcom_1) /* non existent op, just to have a regular table */ |
||
196 | DEF_FP1(com) |
||
197 | |||
198 | DEF_FP(comp) |
||
199 | DEF_FP(sub) |
||
200 | DEF_FP(subr) |
||
201 | DEF_FP(div) |
||
202 | DEF_FP(divr) |
||
203 | |||
204 | DEF_BWLX(xadd) |
||
205 | DEF_BWLX(cmpxchg) |
||
206 | |||
207 | /* string ops */ |
||
208 | DEF_BWLX(cmps) |
||
209 | DEF_BWLX(scmp) |
||
210 | DEF_BWL(ins) |
||
211 | DEF_BWL(outs) |
||
212 | DEF_BWLX(lods) |
||
213 | DEF_BWLX(slod) |
||
214 | DEF_BWLX(movs) |
||
215 | DEF_BWLX(smov) |
||
216 | DEF_BWLX(scas) |
||
217 | DEF_BWLX(ssca) |
||
218 | DEF_BWLX(stos) |
||
219 | DEF_BWLX(ssto) |
||
220 | |||
221 | /* generic asm ops */ |
||
222 | #define ALT(x) |
||
223 | #define DEF_ASM_OP0(name, opcode) DEF_ASM(name) |
||
224 | #define DEF_ASM_OP0L(name, opcode, group, instr_type) |
||
225 | #define DEF_ASM_OP1(name, opcode, group, instr_type, op0) |
||
226 | #define DEF_ASM_OP2(name, opcode, group, instr_type, op0, op1) |
||
227 | #define DEF_ASM_OP3(name, opcode, group, instr_type, op0, op1, op2) |
||
228 | #ifdef TCC_TARGET_X86_64 |
||
229 | # include "x86_64-asm.h" |
||
230 | #else |
||
231 | # include "i386-asm.h" |
||
232 | #endif |
||
233 | |||
234 | #define ALT(x) |
||
235 | #define DEF_ASM_OP0(name, opcode) |
||
236 | #define DEF_ASM_OP0L(name, opcode, group, instr_type) DEF_ASM(name) |
||
237 | #define DEF_ASM_OP1(name, opcode, group, instr_type, op0) DEF_ASM(name) |
||
238 | #define DEF_ASM_OP2(name, opcode, group, instr_type, op0, op1) DEF_ASM(name) |
||
239 | #define DEF_ASM_OP3(name, opcode, group, instr_type, op0, op1, op2) DEF_ASM(name) |
||
240 | #ifdef TCC_TARGET_X86_64 |
||
241 | # include "x86_64-asm.h" |
||
242 | #else |
||
243 | # include "i386-asm.h" |
||
244 | #endif |