1	.intel_syntax noprefix
2	.text
3start:
4
5	# operand sizes
6
7	add	al, [eax]
8	add	al, byte ptr [eax]
9	add	ax, [eax]
10	add	ax, word ptr [eax]
11	add	eax, [eax]
12	add	eax, dword ptr [eax]
13	add	byte ptr [eax], 1
14	add	dword ptr [eax], 1
15	add	word ptr [eax], 1
16	addpd	xmm0, [eax]
17	addpd	xmm0, xmmword ptr [eax]
18	addps	xmm0, [eax]
19	addps	xmm0, xmmword ptr [eax]
20	addsd	xmm0, [eax]
21	addsd	xmm0, qword ptr [eax]
22	addss	xmm0, [eax]
23	addss	xmm0, dword ptr [eax]
24	bound	ax, dword ptr [ecx]
25	bound	eax, qword ptr [ecx]
26	call	word ptr [eax]
27	call	dword ptr [eax]
28	call	fword ptr [eax]
29	cmps	[esi], byte ptr es:[edi]
30	cmps	dword ptr [esi], es:[edi]
31	cmps	word ptr [esi], word ptr es:[edi]
32	cmpxchg8b qword ptr [eax]
33	fadd	dword ptr [eax]
34	fadd	qword ptr [eax]
35	fbld	[eax]
36	fbld	tbyte ptr [eax]
37	fbstp	[eax]
38	fbstp	tbyte ptr [eax]
39	fiadd	dword ptr [eax]
40	fiadd	word ptr [eax]
41	fild	dword ptr [eax]
42	fild	qword ptr [eax]
43	fild	word ptr [eax]
44	fist	dword ptr [eax]
45	fist	word ptr [eax]
46	fistp	dword ptr [eax]
47	fistp	qword ptr [eax]
48	fistp	word ptr [eax]
49	fisttp	dword ptr [eax]
50	fisttp	qword ptr [eax]
51	fisttp	word ptr [eax]
52	fld	dword ptr [eax]
53	fld	qword ptr [eax]
54	fld	tbyte ptr [eax]
55	fldcw	[eax]
56	fldcw	word ptr [eax]
57	fldenv	[eax]
58	fldenvd	[eax]
59	fldenvw	[eax]
60	fst	dword ptr [eax]
61	fst	qword ptr [eax]
62	fstp	dword ptr [eax]
63	fstp	qword ptr [eax]
64	fstp	tbyte ptr [eax]
65	lds	ax, [eax]
66	lds	eax, [eax]
67	lds	ax, dword ptr [eax]
68	lds	eax, fword ptr [eax]
69	lea	eax, [eax]
70	lea	eax, byte ptr [eax]
71	lea	eax, dword ptr [eax]
72	lea	eax, fword ptr [eax]
73	lea	eax, qword ptr [eax]
74	lea	eax, tbyte ptr [eax]
75	lea	eax, word ptr [eax]
76	lea	eax, xmmword ptr [eax]
77	lgdt	[eax]
78	lgdtd	[eax]
79	lgdtw	[eax]
80	movs	es:[edi], byte ptr [esi]
81	movs	dword ptr es:[edi], [esi]
82	movs	word ptr es:[edi], word ptr [esi]
83	movsx	eax, byte ptr [eax]
84	movsx	eax, word ptr [eax]
85	paddb	mm0, [eax]
86	paddb	mm0, mmword ptr [eax]
87	paddb	mm0, qword ptr [eax]
88	paddb	xmm0, [eax]
89	paddb	xmm0, xmmword ptr [eax]
90	paddb	xmm0, oword ptr [eax]
91	pinsrw	mm0, word ptr [eax], 3
92	pinsrw	xmm0, word ptr [eax], 7
93	push	dword ptr [eax]
94	xlat	[ebx]
95	xlat	byte ptr [ebx]
96	xlatb
97
98	# memory operands
99
100	mov	eax, dword ptr [byte+eax]
101	mov	eax, dword ptr byte[eax]
102	mov	eax, [dword+eax]
103	mov	eax, dword[eax]
104	mov	eax, [fword+eax]
105	mov	eax, fword[eax]
106	mov	eax, [qword+eax+dword]
107	mov	eax, qword[eax+dword]
108	mov	eax, [tbyte+eax+dword*2]
109	mov	eax, tbyte[eax+dword*2]
110	mov	eax, [word+eax*dword]
111	mov	eax, word[eax*dword]
112	movzx	eax, word ptr byte ptr [eax]
113	movzx	eax, byte ptr [word ptr [eax]]
114	movzx	eax, word ptr es:[eax]
115	movzx	eax, byte ptr [fs:[eax]]
116	movzx	eax, gs:word ptr [eax]
117
118	mov	eax, FLAT:1
119	mov	eax, FLAT:[1]
120	mov	eax, gs:1
121	mov	eax, gs:[1]
122	mov	eax, x
123	mov	eax, FLAT:x
124	mov	eax, gs:x
125	mov	eax, [x]
126
127	mov	eax, [eax*1]
128	mov	eax, [eax*+1]
129	mov	eax, [+1*eax]
130	mov	eax, [eax*+2]
131	mov	eax, [+2*eax]
132	mov	eax, [ecx*dword]
133	mov	eax, [dword*ecx]
134	mov	eax, 1[eax]
135	mov	eax, [eax]+1
136	mov	eax, [eax - 5 + ecx]
137	mov	eax, [eax + 5 and 3 + ecx]
138	mov	eax, [eax + 5 * 3 + ecx]
139	mov	eax, [oword][eax]
140	mov	eax, [eax][oword]
141	mov	eax, xmmword[eax][ecx]
142	mov	eax, [eax]+[ecx]
143	mov	eax, [eax]+1[ecx]
144	mov	eax, [eax+2[ecx]]
145	mov	eax, [eax][ecx]+3
146	mov	eax, [4][eax][ecx]
147	mov	eax, [eax][5][ecx]
148	mov	eax, [eax][ecx][6]
149	mov	eax, [eax+ecx*(2+2)+7]
150	mov	eax, [eax+(ecx+2)*4]
151	mov	eax, [[eax]]
152	mov	eax, [eax[ecx]]
153	mov	eax, [[eax][ecx]]
154	mov	eax, es:[eax]
155	mov	eax, fs:gs:[eax]
156
157	# expressions
158
159	push	+ 1
160	push	- 1
161	push	not 1
162	push	1 + 1
163	push	2 - 1
164	push	2 * 2
165	push	3 / 2
166	push	3 mod 2
167	push	4 shl 1
168	push	5 shr 2
169	push	6 and 3
170	push	7 xor 4
171	push	8 or 5
172
173	push	+dword
174	push	-dword
175	push	not dword
176	push	not +dword
177	push	not -dword
178	push	not not dword
179
180	# offset expressions
181
182	mov	eax, 1
183	mov	eax, [1]
184	mov	eax, dword ptr 1
185	mov	eax, dword ptr [1]
186	mov	eax, offset x
187	mov	eax, offset flat:x
188	mov	eax, offset gs:x
189	mov	eax, offset [x]
190	mov	eax, offset flat:[x]
191	mov	eax, offset gs:[x]
192	mov	eax, [offset x]
193	mov	eax, [offset [x]]
194	mov	eax, dword ptr [offset [x]]
195	mov	eax, FLAT:[offset [x]]
196	mov	eax, gs:[offset [x]]
197	mov	eax, offset [dword ptr [x]]
198	mov	eax, offset [gs:[x]]
199	mov	eax, [eax + offset x]
200	mov	eax, [eax + offset 1]
201	mov	eax, [offset x + eax]
202	mov	eax, [offset 1 + eax]
203	mov	eax, offset x + 1[eax]
204	mov	eax, [eax] + offset x
205	mov	eax, [eax] + offset 1
206	mov	eax, offset x + [1]
207	mov	eax, [offset x] - [1]
208	mov	eax, offset x + es:[2]
209	mov	eax, offset x + offset es:[3]
210	mov	eax, [4] + offset x
211	mov	eax, [5] + [offset x]
212	mov	eax, ss:[6] + offset x
213	mov	eax, ss:[7] + [offset x]
214
215	# other operands
216	call	3:5
217	jmp	5:[3]
218	call	dword ptr xtrn
219	jmp	word ptr xtrn
220	call	[xtrn]
221	jmp	[xtrn]
222