Commit | Line | Data |
---|---|---|
b96d3a20 JH |
1 | .text |
2 | .intel_syntax noprefix | |
3 | # REX prefix and addressing modes. | |
4 | add edx,ecx | |
5 | add edx,r9d | |
6 | add r10d,ecx | |
7 | add rdx,rcx | |
8 | add r10,r9 | |
9 | add r8d,eax | |
10 | add r8w,ax | |
11 | add r8,rax | |
12 | add eax,0x44332211 | |
13 | add rax,0xfffffffff4332211 | |
14 | add ax,0x4433 | |
15 | add rax,0x44332211 | |
16 | add dl,cl | |
17 | add bh,dh | |
18 | add dil,sil | |
19 | add r15b,sil | |
20 | add dil,r14b | |
21 | add r15b,r14b | |
22 | PUSH RAX | |
23 | PUSH R8 | |
24 | POP R9 | |
25 | ADD AL,0x11 | |
26 | ADD AH,0x11 | |
27 | ADD SPL,0x11 | |
28 | ADD R8B,0x11 | |
29 | ADD R12B,0x11 | |
30 | MOV RAX,CR0 | |
31 | MOV R8,CR0 | |
32 | MOV RAX,CR8 | |
33 | MOV CR8,RAX | |
34 | REP MOVSQ #[RSI],[RDI] | |
35 | REP MOVSW #[RSI,[RDI] | |
36 | REP MOVSQ #[RSI],[RDI] | |
37 | MOV AL, 0x11 | |
38 | MOV AH, 0x11 | |
39 | MOV SPL, 0x11 | |
40 | MOV R12B, 0x11 | |
41 | MOV EAX,0x11223344 | |
42 | MOV R8D,0x11223344 | |
43 | MOV RAX,0x1122334455667788 | |
44 | MOV R8,0x1122334455667788 | |
45 | add eax,[rax] | |
46 | ADD EAX,[R8] | |
47 | ADD R8D,[R8] | |
48 | ADD RAX,[R8] | |
49 | ADD EAX,[0x22222222+RIP] | |
50 | ADD EAX,[RBP+0x00] | |
ee86248c | 51 | ADD EAX,FLAT:[0x22222222] |
b96d3a20 JH |
52 | ADD EAX,[R13+0] |
53 | ADD EAX,[RAX+RAX*4] | |
54 | ADD EAX,[R8+RAX*4] | |
55 | ADD R8D,[R8+RAX*4] | |
56 | ADD EAX,[R8+R8*4] | |
57 | ADD [RCX+R8*4],R8D | |
58 | ADD EDX,[RAX+RAX*8] | |
59 | ADD EDX,[RAX+RCX*8] | |
60 | ADD EDX,[RAX+RDX*8] | |
61 | ADD EDX,[RAX+RBX*8] | |
62 | ADD EDX,[RAX] | |
63 | ADD EDX,[RAX+RBP*8] | |
64 | ADD EDX,[RAX+RSI*8] | |
65 | ADD EDX,[RAX+RDI*8] | |
66 | ADD EDX,[RAX+R8*8] | |
67 | ADD EDX,[RAX+R9*8] | |
68 | ADD EDX,[RAX+R10*8] | |
69 | ADD EDX,[RAX+R11*8] | |
70 | ADD EDX,[RAX+R12*8] | |
71 | ADD EDX,[RAX+R13*8] | |
72 | ADD EDX,[RAX+R14*8] | |
73 | ADD EDX,[RAX+R15*8] | |
74 | ADD ECX,0x11 | |
75 | ADD DWORD PTR [RAX],0x11 | |
76 | ADD QWORD PTR [RAX],0x11 | |
77 | ADD DWORD PTR [R8],0x11 | |
78 | ADD DWORD PTR [RCX+RAX*4],0x11 | |
79 | ADD DWORD PTR [R9+RAX*4],0x11 | |
80 | ADD DWORD PTR [RCX+R8*4],0x11 | |
81 | ADD DWORD PTR [0x22222222+RIP],0x33 | |
82 | ADD QWORD PTR [RIP+0x22222222],0x33 | |
83 | ADD DWORD PTR [RIP+0x22222222],0x33333333 | |
84 | ADD QWORD PTR [RIP+0x22222222],0x33333333 | |
85 | ADD DWORD PTR [RAX*8+0x22222222],0x33 | |
86 | ADD DWORD PTR [RAX+0x22222222],0x33 | |
87 | ADD DWORD PTR [RAX+0x22222222],0x33 | |
88 | ADD DWORD PTR [R8+RBP*8],0x33 | |
ee86248c | 89 | ADD DWORD PTR FLAT:[0x22222222],0x33 |
b96d3a20 | 90 | #new instructions |
ee86248c JB |
91 | MOVABS AL,FLAT:[0x8877665544332211] |
92 | MOVABS EAX,FLAT:[0x8877665544332211] | |
93 | MOVABS FLAT:[0x8877665544332211],AL | |
94 | MOVABS FLAT:[0x8877665544332211],EAX | |
95 | MOVABS RAX,FLAT:[0x8877665544332211] | |
96 | MOVABS FLAT:[0x8877665544332211],RAX | |
b96d3a20 JH |
97 | cqo |
98 | cdqe | |
99 | movsx rax, eax | |
100 | movsx rax, ax | |
101 | movsx rax, al | |
873494c8 JB |
102 | retf |
103 | retf 16 | |
104 | retfw | |
105 | retfw 2 | |
106 | retfd | |
107 | retfd 4 | |
108 | retfq | |
109 | retfq 8 | |
b96d3a20 JH |
110 | bar: |
111 | .att_syntax | |
112 | #testcase for symbol references. | |
113 | ||
114 | #immediates - various sizes: | |
115 | ||
116 | mov $symbol, %al | |
117 | mov $symbol, %ax | |
118 | mov $symbol, %eax | |
119 | mov $symbol, %rax | |
120 | ||
121 | #addressing modes: | |
122 | ||
123 | #absolute 64bit addressing | |
124 | movabs symbol, %eax | |
125 | ||
126 | #absolute 32bit addressing | |
127 | mov symbol, %eax | |
128 | ||
129 | #arithmetic | |
130 | mov symbol(%rax), %eax | |
131 | ||
132 | #RIP relative | |
133 | mov symbol(%rip), %eax | |
134 | ||
135 | .intel_syntax noprefix | |
136 | ||
137 | #immediates - various sizes: | |
b7240065 JB |
138 | mov al, offset flat:symbol |
139 | mov ax, offset flat:symbol | |
140 | mov eax, offset flat:symbol | |
141 | mov rax, offset flat:symbol | |
b96d3a20 | 142 | |
a724f0f4 | 143 | #parts aren't supported by the parser, yet (and not at all for symbol refs) |
9306ca4a JB |
144 | #mov eax, high part symbol |
145 | #mov eax, low part symbol | |
b96d3a20 JH |
146 | |
147 | #addressing modes | |
148 | ||
149 | #absolute 64bit addressing | |
150 | movabs eax, [symbol] | |
151 | ||
152 | #absolute 32bit addressing | |
153 | mov eax, [symbol] | |
154 | ||
155 | #arithmetic | |
156 | mov eax, [rax+symbol] | |
157 | ||
158 | #RIP relative | |
159 | mov eax, [rip+symbol] | |
160 | ||
b300c311 L |
161 | foo: |
162 | .att_syntax | |
163 | #absolute 64bit addressing | |
164 | mov 0x8877665544332211,%al | |
165 | mov 0x8877665544332211,%ax | |
166 | mov 0x8877665544332211,%eax | |
167 | mov 0x8877665544332211,%rax | |
168 | mov %al,0x8877665544332211 | |
169 | mov %ax,0x8877665544332211 | |
170 | mov %eax,0x8877665544332211 | |
171 | mov %rax,0x8877665544332211 | |
172 | movb 0x8877665544332211,%al | |
173 | movw 0x8877665544332211,%ax | |
174 | movl 0x8877665544332211,%eax | |
175 | movq 0x8877665544332211,%rax | |
176 | movb %al,0x8877665544332211 | |
177 | movw %ax,0x8877665544332211 | |
178 | movl %eax,0x8877665544332211 | |
179 | movq %rax,0x8877665544332211 | |
180 | ||
28a9d8f5 L |
181 | #absolute signed 32bit addressing |
182 | mov 0xffffffffff332211,%al | |
183 | mov 0xffffffffff332211,%ax | |
184 | mov 0xffffffffff332211,%eax | |
185 | mov 0xffffffffff332211,%rax | |
186 | mov %al,0xffffffffff332211 | |
187 | mov %ax,0xffffffffff332211 | |
188 | mov %eax,0xffffffffff332211 | |
189 | mov %rax,0xffffffffff332211 | |
190 | movb 0xffffffffff332211,%al | |
191 | movw 0xffffffffff332211,%ax | |
192 | movl 0xffffffffff332211,%eax | |
193 | movq 0xffffffffff332211,%rax | |
194 | movb %al,0xffffffffff332211 | |
195 | movw %ax,0xffffffffff332211 | |
196 | movl %eax,0xffffffffff332211 | |
197 | movq %rax,0xffffffffff332211 | |
198 | ||
f5804c90 L |
199 | cmpxchg16b (%rax) |
200 | ||
201 | .intel_syntax noprefix | |
fb9c77c7 | 202 | cmpxchg16b oword ptr [rax] |
f5804c90 | 203 | |
ca61edf2 | 204 | .att_syntax |
321fd21e L |
205 | movsx %al, %si |
206 | movsx %al, %esi | |
207 | movsx %al, %rsi | |
208 | movsx %ax, %esi | |
209 | movsx %ax, %rsi | |
210 | movsx %eax, %rsi | |
ca61edf2 L |
211 | movsx (%rax), %dx |
212 | movsbl (%rax), %edx | |
213 | movsbq (%rax), %rdx | |
214 | movsbw (%rax), %dx | |
215 | movswl (%rax), %edx | |
216 | movswq (%rax), %rdx | |
217 | ||
321fd21e L |
218 | movzx %al, %si |
219 | movzx %al, %esi | |
220 | movzx %al, %rsi | |
221 | movzx %ax, %esi | |
222 | movzx %ax, %rsi | |
ca61edf2 L |
223 | movzx (%rax), %dx |
224 | movzb (%rax), %edx | |
225 | movzb (%rax), %rdx | |
226 | movzb (%rax), %dx | |
227 | movzbl (%rax), %edx | |
228 | movzbq (%rax), %rdx | |
229 | movzbw (%rax), %dx | |
230 | movzwl (%rax), %edx | |
231 | movzwq (%rax), %rdx | |
232 | ||
233 | .intel_syntax noprefix | |
321fd21e L |
234 | movsx si,al |
235 | movsx esi,al | |
236 | movsx rsi,al | |
237 | movsx esi,ax | |
238 | movsx rsi,ax | |
239 | movsx rsi,eax | |
ca61edf2 L |
240 | movsx edx,BYTE PTR [rax] |
241 | movsx rdx,BYTE PTR [rax] | |
242 | movsx dx,BYTE PTR [rax] | |
243 | movsx edx,WORD PTR [rax] | |
244 | movsx rdx,WORD PTR [rax] | |
245 | ||
321fd21e L |
246 | movzx si,al |
247 | movzx esi,al | |
248 | movzx rsi,al | |
249 | movzx esi,ax | |
250 | movzx rsi,ax | |
ca61edf2 L |
251 | movzx edx,BYTE PTR [rax] |
252 | movzx rdx,BYTE PTR [rax] | |
253 | movzx dx,BYTE PTR [rax] | |
254 | movzx edx,WORD PTR [rax] | |
255 | movzx rdx,WORD PTR [rax] | |
256 | ||
f2a9c676 L |
257 | movq xmm1,QWORD PTR [rsp] |
258 | movq xmm1,[rsp] | |
259 | movq QWORD PTR [rsp],xmm1 | |
260 | movq [rsp],xmm1 | |
261 | ||
7d5e4556 L |
262 | .att_syntax |
263 | fnstsw | |
264 | fnstsw %ax | |
265 | fstsw | |
266 | fstsw %ax | |
267 | ||
268 | .intel_syntax noprefix | |
269 | fnstsw | |
270 | fnstsw ax | |
271 | fstsw | |
272 | fstsw ax | |
5c07affc L |
273 | |
274 | .att_syntax | |
275 | movsx (%rax),%ax | |
321fd21e L |
276 | movsxb (%rax), %dx |
277 | movsxb (%rax), %edx | |
278 | movsxb (%rax), %rdx | |
279 | movsxw (%rax), %edx | |
280 | movsxw (%rax), %rdx | |
281 | movsxl (%rax), %rdx | |
5c07affc L |
282 | movsxd (%rax),%rax |
283 | movzx (%rax),%ax | |
321fd21e L |
284 | movzxb (%rax), %dx |
285 | movzxb (%rax), %edx | |
286 | movzxb (%rax), %rdx | |
287 | movzxw (%rax), %edx | |
288 | movzxw (%rax), %rdx | |
5c07affc L |
289 | |
290 | movnti %eax, (%rax) | |
291 | movntil %eax, (%rax) | |
292 | movnti %rax, (%rax) | |
293 | movntiq %rax, (%rax) | |
294 | ||
295 | .intel_syntax noprefix | |
296 | ||
297 | movsx ax, BYTE PTR [rax] | |
298 | movsx eax, BYTE PTR [rax] | |
299 | movsx eax, WORD PTR [rax] | |
300 | movsx rax, WORD PTR [rax] | |
301 | movsx rax, DWORD PTR [rax] | |
302 | movsxd rax, [rax] | |
303 | movzx ax, BYTE PTR [rax] | |
304 | movzx eax, BYTE PTR [rax] | |
305 | movzx eax, WORD PTR [rax] | |
306 | movzx rax, WORD PTR [rax] | |
307 | ||
308 | movnti dword ptr [rax], eax | |
309 | movnti qword ptr [rax], rax | |
22e00a3f JB |
310 | |
311 | mov eax, tr1 | |
312 | mov tr0, rcx |