VirtualBox

source: vbox/trunk/src/VBox/Disassembler/testcase/tstAsmLock-1.asm@ 9663

Last change on this file since 9663 was 8979, checked in by vboxsync, 17 years ago

The rest.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 19.9 KB
Line 
1; $Id: tstAsmLock-1.asm 8979 2008-05-20 19:48:26Z vboxsync $
2;; @file
3; Disassembly testcase - Valid lock sequences and related instructions.
4;
5; This is a build test, that means it will be assembled, disassembled,
6; then the disassembly output will be assembled and the new binary will
7; compared with the original.
8;
9
10;
11; Copyright (C) 2008 Sun Microsystems, Inc.
12;
13; This file is part of VirtualBox Open Source Edition (OSE), as
14; available from http://www.virtualbox.org. This file is free software;
15; you can redistribute it and/or modify it under the terms of the GNU
16; General Public License (GPL) as published by the Free Software
17; Foundation, in version 2 as it comes in the "COPYING" file of the
18; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
19; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
20;
21; Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
22; Clara, CA 95054 USA or visit http://www.sun.com if you need
23; additional information or have any questions.
24;
25
26%include "tstAsm.mac"
27%if TEST_BITS == 64
28
29; The disassembler doesn't do imm32 right for 64-bit stuff, so disable it for now.
30; %define WITH_64_BIT_TESTS_IMM32
31
32; The cmpxchg16b/8b stuff isn't handled correctly in 64-bit mode. In the 8b case
33; it could be both yasm and the vbox disassembler. Have to check docs/gas/nasm.
34; %define WITH_64_BIT_TESTS_CMPXCHG16B
35
36; Seems there are some issues with the byte, word and dword variants of r8-15.
37; Again, this could be yasm issues too...
38; %define WITH_64_BIT_TESTS_BORKED_REGS
39
40 %define WITH_64_BIT_TESTS
41%endif
42
43 BITS TEST_BITS
44
45 ;
46 ; ADC
47 ;
48 ; 80 /2 ib ADC reg/mem8, imm8 - sans reg dst
49 lock adc byte [1000h], byte 8
50 lock adc byte [xBX], byte 8
51 lock adc byte [xDI], byte 8
52 ; 81 /2 i[wd] ADC reg/memX, immX - sans reg dst
53 lock adc word [1000h], word 090cch
54 lock adc word [xBX], word 090cch
55 lock adc word [xDI], word 090cch
56 lock adc dword [1000h], dword 0cc90cc90h
57 lock adc dword [xBX], dword 0cc90cc90h
58 lock adc dword [xDI], dword 0cc90cc90h
59%ifdef WITH_64_BIT_TESTS_IMM32
60 lock adc qword [1000h], dword 0cc90cc90h
61 lock adc qword [rbx], dword 0cc90cc90h
62 lock adc qword [rdi], dword 0cc90cc90h
63 lock adc qword [r9], dword 0cc90cc90h
64%endif
65 ; 83 /2 ib ADC reg/memX, imm8 - sans reg dst
66 lock adc word [1000h], byte 07fh
67 lock adc word [xBX], byte 07fh
68 lock adc word [xDI], byte 07fh
69 lock adc dword [1000h], byte 07fh
70 lock adc dword [xBX], byte 07fh
71 lock adc dword [xDI], byte 07fh
72%ifdef WITH_64_BIT_TESTS
73 lock adc qword [1000h], byte 07fh
74 lock adc qword [rbx], byte 07fh
75 lock adc qword [rdi], byte 07fh
76 lock adc qword [r10], byte 07fh
77%endif
78
79 ; 10 /r ADC reg/mem8, reg8 - sans reg dst
80 lock adc byte [1000h], bl
81 lock adc byte [xBX], bl
82 lock adc byte [xSI], bl
83 ; 11 /r ADC reg/memX, regX - sans reg dst
84 lock adc word [1000h], bx
85 lock adc word [xBX], bx
86 lock adc word [xSI], bx
87 lock adc dword [1000h], ebx
88 lock adc dword [xBX], ebx
89 lock adc dword [xSI], ebx
90%ifdef WITH_64_BIT_TESTS
91 lock adc qword [1000h], rbx
92 lock adc qword [rbx], rbx
93 lock adc qword [rsi], rbx
94 lock adc qword [r11], rbx
95%endif
96
97 ;
98 ; ADD
99 ;
100 ; 80 /0 ib ADD reg/mem8, imm8 - sans reg dst
101 lock add byte [1000h], byte 8
102 lock add byte [xBX], byte 8
103 lock add byte [xDI], byte 8
104 ; 81 /0 i[wd] ADD reg/memX, immX - sans reg dst
105 lock add word [1000h], word 090cch
106 lock add word [xBX], word 090cch
107 lock add word [xDI], word 090cch
108 lock add dword [1000h], dword 0cc90cc90h
109 lock add dword [xBX], dword 0cc90cc90h
110 lock add dword [xDI], dword 0cc90cc90h
111%ifdef WITH_64_BIT_TESTS_IMM32
112 lock add qword [1000h], dword 0cc90cc90h
113 lock add qword [rbx], dword 0cc90cc90h
114 lock add qword [rdi], dword 0cc90cc90h
115 lock add qword [r9], dword 0cc90cc90h
116%endif
117 ; 83 /0 ib ADD reg/memX, imm8 - sans reg dst
118 lock add word [1000h], byte 07fh
119 lock add word [xBX], byte 07fh
120 lock add word [xDI], byte 07fh
121 lock add dword [1000h], byte 07fh
122 lock add dword [xBX], byte 07fh
123 lock add dword [xDI], byte 07fh
124%ifdef WITH_64_BIT_TESTS
125 lock add qword [1000h], byte 07fh
126 lock add qword [rbx], byte 07fh
127 lock add qword [rdi], byte 07fh
128 lock add qword [r10], byte 07fh
129%endif
130
131 ; 00 /r ADD reg/mem8, reg8 - sans reg dst
132 lock add byte [1000h], bl
133 lock add byte [xBX], bl
134 lock add byte [xSI], bl
135 ; 01 /r ADD reg/memX, regX - sans reg dst
136 lock add word [1000h], bx
137 lock add word [xBX], bx
138 lock add word [xSI], bx
139 lock add dword [1000h], ebx
140 lock add dword [xBX], ebx
141 lock add dword [xSI], ebx
142%ifdef WITH_64_BIT_TESTS
143 lock add qword [1000h], rbx
144 lock add qword [rbx], rbx
145 lock add qword [rsi], rbx
146 lock add qword [r11], rbx
147%endif
148
149 ;
150 ; AND
151 ;
152 ; 80 /4 ib AND reg/mem8, imm8 - sans reg dst
153 lock and byte [1000h], byte 8
154 lock and byte [xBX], byte 8
155 lock and byte [xDI], byte 8
156 ; 81 /4 i[wd] AND reg/memX, immX - sans reg dst
157 lock and word [1000h], word 090cch
158 lock and word [xBX], word 090cch
159 lock and word [xDI], word 090cch
160 lock and dword [1000h], dword 0cc90cc90h
161 lock and dword [xBX], dword 0cc90cc90h
162 lock and dword [xDI], dword 0cc90cc90h
163%ifdef WITH_64_BIT_TESTS_IMM32
164 lock and qword [1000h], dword 0cc90cc90h
165 lock and qword [rbx], dword 0cc90cc90h
166 lock and qword [rdi], dword 0cc90cc90h
167 lock and qword [r9], dword 0cc90cc90h
168%endif
169 ; 83 /4 ib AND reg/memX, imm8 - sans reg dst
170 lock and word [1000h], byte 07fh
171 lock and word [xBX], byte 07fh
172 lock and word [xDI], byte 07fh
173 lock and dword [1000h], byte 07fh
174 lock and dword [xBX], byte 07fh
175 lock and dword [xDI], byte 07fh
176%ifdef WITH_64_BIT_TESTS
177 lock and qword [1000h], byte 07fh
178 lock and qword [rbx], byte 07fh
179 lock and qword [rdi], byte 07fh
180 lock and qword [r10], byte 07fh
181%endif
182
183 ; 20 /r AND reg/mem8, reg8 - sans reg dst
184 lock and byte [1000h], bl
185 lock and byte [xBX], bl
186 lock and byte [xSI], bl
187 ; 21 /r AND reg/memX, regX - sans reg dst
188 lock and word [1000h], bx
189 lock and word [xBX], bx
190 lock and word [xSI], bx
191 lock and dword [1000h], ebx
192 lock and dword [xBX], ebx
193 lock and dword [xSI], ebx
194%ifdef WITH_64_BIT_TESTS
195 lock and qword [1000h], rbx
196 lock and qword [rbx], rbx
197 lock and qword [rsi], rbx
198 lock and qword [r11], rbx
199%endif
200
201 ;
202 ; BTC
203 ;
204 ; 0f bb /r BTC reg/memX, regX (X != 8) - sans reg dst
205 lock btc word [20cch], bx
206 lock btc word [xBX], bx
207 lock btc word [xDI], bx
208 lock btc dword [20cch], ebx
209 lock btc dword [xBX], ebx
210 lock btc dword [xDI], ebx
211%ifdef WITH_64_BIT_TESTS
212 lock btc qword [20cch], rbx
213 lock btc qword [rdx], rbx
214 lock btc qword [rdi], r10
215 lock btc qword [r8], r12
216%endif
217 ; 0f ba /7 ib BTC reg/memX, imm8 (X != 8) - sans reg dst
218 lock btc word [20cch], 15
219 lock btc word [xBX], 15
220 lock btc word [xDI], 15
221 lock btc dword [20cch], 30
222 lock btc dword [xBX], 30
223 lock btc dword [xDI], 30
224%ifdef WITH_64_BIT_TESTS
225 lock btc qword [20cch], 60
226 lock btc qword [rdx], 60
227 lock btc qword [rdi], 60
228 lock btc qword [r9], 60
229 lock btc qword [r12], 60
230%endif
231
232 ;
233 ; BTR
234 ;
235 ; 0f b3 /r BTR reg/memX, regX (X != 8) - sans reg dst
236 lock btr word [20cch], bx
237 lock btr word [xBX], bx
238 lock btr word [xDI], bx
239 lock btr dword [20cch], ebx
240 lock btr dword [xBX], ebx
241 lock btr dword [xDI], ebx
242%ifdef WITH_64_BIT_TESTS
243 lock btr qword [20cch], rbx
244 lock btr qword [rdx], rbx
245 lock btr qword [rdi], r10
246 lock btr qword [r8], r12
247%endif
248 ; 0f ba /6 ib BTR reg/memX, imm8 (X != 8) - sans reg dst
249 lock btr word [20cch], 15
250 lock btr word [xBX], 15
251 lock btr word [xDI], 15
252 lock btr dword [20cch], 30
253 lock btr dword [xBX], 30
254 lock btr dword [xDI], 30
255%ifdef WITH_64_BIT_TESTS
256 lock btr qword [20cch], 60
257 lock btr qword [rdx], 60
258 lock btr qword [rdi], 60
259 lock btr qword [r9], 60
260 lock btr qword [r12], 60
261%endif
262
263 ;
264 ; BTS
265 ;
266 ; 0f ab /r BTS reg/memX, regX (X != 8) - sans reg dst
267 lock bts word [20cch], bx
268 lock bts word [xBX], bx
269 lock bts word [xDI], bx
270 lock bts dword [20cch], ebx
271 lock bts dword [xBX], ebx
272 lock bts dword [xDI], ebx
273%if TEST_BITS == 64
274 lock bts qword [20cch], rbx
275 lock bts qword [rdx], rbx
276 lock bts qword [rdi], r10
277 lock bts qword [r8], r12
278%endif
279 ; 0f ba /5 ib BTS reg/memX, imm8 (X != 8) - sans reg dst
280 lock bts word [20cch], 15
281 lock bts word [xBX], 15
282 lock bts word [xDI], 15
283 lock bts dword [20cch], 30
284 lock bts dword [xBX], 30
285 lock bts dword [xDI], 30
286%if TEST_BITS == 64
287 lock bts qword [20cch], 60
288 lock bts qword [rdx], 60
289 lock bts qword [rdi], 60
290 lock bts qword [r9], 60
291 lock bts qword [r12], 60
292%endif
293
294 ;
295 ; CMPXCHG
296 ;
297 ; 0f b0 /r CMPXCHG reg8/mem8, regX - with reg dst
298 lock cmpxchg byte [30cch], cl
299 lock cmpxchg byte [xBX], cl
300 lock cmpxchg byte [xSI], cl
301 ; 0f b1 /r CMPXCHG regX/memX, regX - with reg dst
302 lock cmpxchg word [30cch], cx
303 lock cmpxchg word [xBX], cx
304 lock cmpxchg word [xSI], cx
305 lock cmpxchg dword [30cch], ecx
306 lock cmpxchg dword [xBX], ecx
307 lock cmpxchg dword [xSI], ecx
308%ifdef WITH_64_BIT_TESTS
309 lock cmpxchg qword [30cch], rcx
310 lock cmpxchg qword [xBX], rcx
311 lock cmpxchg qword [xSI], rcx
312 lock cmpxchg qword [rdi], r8
313 lock cmpxchg qword [r12], r9
314%endif
315
316 ;
317 ; CMPXCHG8B
318 ; CMPXCHG16B
319 ;
320 ;; @todo get back to cmpxchg8b and cmpxchg16b.
321 lock cmpxchg8b qword [1000h]
322 lock cmpxchg8b qword [xDI]
323 lock cmpxchg8b qword [xDI+xBX]
324%ifdef WITH_64_BIT_TESTS_CMPXCHG16B
325 lock cmpxchg16b [1000h]
326 lock cmpxchg16b [xDI]
327 lock cmpxchg16b [xDI+xBX]
328%endif
329
330 ;
331 ; DEC
332 ;
333 ; fe /1 DEC reg8/mem8 - sans reg dst
334 lock dec byte [40cch]
335 lock dec byte [xBX]
336 lock dec byte [xSI]
337 ; ff /1 DEC regX/memX - sans reg dst
338 lock dec word [40cch]
339 lock dec word [xBX]
340 lock dec word [xSI]
341 lock dec dword [40cch]
342 lock dec dword [xBX]
343 lock dec dword [xSI]
344%ifdef WITH_64_BIT_TESTS
345 lock dec qword [40cch]
346 lock dec qword [xBX]
347 lock dec qword [xSI]
348 lock dec qword [r8]
349 lock dec qword [r12]
350%endif
351
352 ;
353 ; INC
354 ;
355 ; fe /0 INC reg8/mem8 - sans reg dst
356 lock inc byte [40cch]
357 lock inc byte [xBX]
358 lock inc byte [xSI]
359 ; ff /0 INC regX/memX - sans reg dst
360 lock inc word [40cch]
361 lock inc word [xBX]
362 lock inc word [xSI]
363 lock inc dword [40cch]
364 lock inc dword [xBX]
365 lock inc dword [xSI]
366%ifdef WITH_64_BIT_TESTS
367 lock inc qword [40cch]
368 lock inc qword [xBX]
369 lock inc qword [xSI]
370 lock inc qword [r8]
371 lock inc qword [r12]
372%endif
373
374 ;
375 ; NEG
376 ;
377 ; f6 /3 NEG reg8/mem8 - sans reg dst
378 lock neg byte [40cch]
379 lock neg byte [xBX]
380 lock neg byte [xSI]
381 ; f7 /3 NEG regX/memX - sans reg dst
382 lock neg word [40cch]
383 lock neg word [xBX]
384 lock neg word [xSI]
385 lock neg dword [40cch]
386 lock neg dword [xBX]
387 lock neg dword [xSI]
388%ifdef WITH_64_BIT_TESTS
389 lock neg qword [40cch]
390 lock neg qword [xBX]
391 lock neg qword [xSI]
392 lock neg qword [r8]
393 lock neg qword [r12]
394%endif
395
396 ;
397 ; NOT
398 ;
399 ; f6 /2 NOT reg8/mem8 - sans reg dst
400 lock not byte [40cch]
401 lock not byte [xBX]
402 lock not byte [xSI]
403 ; f7 /2 NOT regX/memX - sans reg dst
404 lock not word [40cch]
405 lock not word [xBX]
406 lock not word [xSI]
407 lock not dword [40cch]
408 lock not dword [xBX]
409 lock not dword [xSI]
410%ifdef WITH_64_BIT_TESTS
411 lock not qword [40cch]
412 lock not qword [xBX]
413 lock not qword [xSI]
414 lock not qword [r8]
415 lock not qword [r12]
416%endif
417
418 ;
419 ; OR
420 ;
421 ; 80 /1 ib OR reg/mem8, imm8 - sans reg dst
422 lock or byte [1000h], byte 8
423 lock or byte [xBX], byte 8
424 lock or byte [xDI], byte 8
425 ; 81 /1 i[wd] OR reg/memX, immX - sans reg dst
426 lock or word [1000h], word 090cch
427 lock or word [xBX], word 090cch
428 lock or word [xDI], word 090cch
429 lock or dword [1000h], dword 0cc90cc90h
430 lock or dword [xBX], dword 0cc90cc90h
431 lock or dword [xDI], dword 0cc90cc90h
432%ifdef WITH_64_BIT_TESTS_IMM32
433 lock or qword [1000h], dword 0cc90cc90h
434 lock or qword [rbx], dword 0cc90cc90h
435 lock or qword [rdi], dword 0cc90cc90h
436 lock or qword [r9], dword 0cc90cc90h
437%endif
438 ; 83 /1 ib OR reg/memX, imm8 - sans reg dst
439 lock or word [1000h], byte 07fh
440 lock or word [xBX], byte 07fh
441 lock or word [xDI], byte 07fh
442 lock or dword [1000h], byte 07fh
443 lock or dword [xBX], byte 07fh
444 lock or dword [xDI], byte 07fh
445%ifdef WITH_64_BIT_TESTS
446 lock or qword [1000h], byte 07fh
447 lock or qword [rbx], byte 07fh
448 lock or qword [rdi], byte 07fh
449 lock or qword [r10], byte 07fh
450%endif
451
452 ; 08 /r OR reg/mem8, reg8 - sans reg dst
453 lock or byte [1000h], bl
454 lock or byte [xBX], bl
455 lock or byte [xSI], bl
456 ; 09 /r OR reg/memX, regX - sans reg dst
457 lock or word [1000h], bx
458 lock or word [xBX], bx
459 lock or word [xSI], bx
460 lock or dword [1000h], ebx
461 lock or dword [xBX], ebx
462 lock or dword [xSI], ebx
463%ifdef WITH_64_BIT_TESTS
464 lock or qword [1000h], rbx
465 lock or qword [rbx], rbx
466 lock or qword [rsi], rbx
467 lock or qword [r11], rbx
468%endif
469
470 ;
471 ; SBB
472 ;
473 ; 80 /3 ib SBB reg/mem8, imm8 - sans reg dst
474 lock sbb byte [1000h], byte 8
475 lock sbb byte [xBX], byte 8
476 lock sbb byte [xDI], byte 8
477 ; 81 /3 i[wd] SBB reg/memX, immX - sans reg dst
478 lock sbb word [1000h], word 090cch
479 lock sbb word [xBX], word 090cch
480 lock sbb word [xDI], word 090cch
481 lock sbb dword [1000h], dword 0cc90cc90h
482 lock sbb dword [xBX], dword 0cc90cc90h
483 lock sbb dword [xDI], dword 0cc90cc90h
484%ifdef WITH_64_BIT_TESTS_IMM32
485 lock sbb qword [1000h], dword 0cc90cc90h
486 lock sbb qword [rbx], dword 0cc90cc90h
487 lock sbb qword [rdi], dword 0cc90cc90h
488 lock sbb qword [r9], dword 0cc90cc90h
489%endif
490 ; 83 /3 ib SBB reg/memX, imm8 - sans reg dst
491 lock sbb word [1000h], byte 07fh
492 lock sbb word [xBX], byte 07fh
493 lock sbb word [xDI], byte 07fh
494 lock sbb dword [1000h], byte 07fh
495 lock sbb dword [xBX], byte 07fh
496 lock sbb dword [xDI], byte 07fh
497%ifdef WITH_64_BIT_TESTS
498 lock sbb qword [1000h], byte 07fh
499 lock sbb qword [rbx], byte 07fh
500 lock sbb qword [rdi], byte 07fh
501 lock sbb qword [r10], byte 07fh
502%endif
503
504 ; 18 /r SBB reg/mem8, reg8 - sans reg dst
505 lock sbb byte [1000h], bl
506 lock sbb byte [xBX], bl
507 lock sbb byte [xSI], bl
508 ; 19 /r SBB reg/memX, regX - sans reg dst
509 lock sbb word [1000h], bx
510 lock sbb word [xBX], bx
511 lock sbb word [xSI], bx
512 lock sbb dword [1000h], ebx
513 lock sbb dword [xBX], ebx
514 lock sbb dword [xSI], ebx
515%ifdef WITH_64_BIT_TESTS
516 lock sbb qword [1000h], rbx
517 lock sbb qword [rbx], rbx
518 lock sbb qword [rsi], rbx
519 lock sbb qword [r11], rbx
520%endif
521
522 ;
523 ; SUB
524 ;
525 ; 80 /5 ib SUB reg/mem8, imm8 - sans reg dst
526 lock sub byte [1000h], byte 8
527 lock sub byte [xBX], byte 8
528 lock sub byte [xDI], byte 8
529 ; 81 /5 i[wd] SUB reg/memX, immX - sans reg dst
530 lock sub word [1000h], word 090cch
531 lock sub word [xBX], word 090cch
532 lock sub word [xDI], word 090cch
533 lock sub dword [1000h], dword 0cc90cc90h
534 lock sub dword [xBX], dword 0cc90cc90h
535 lock sub dword [xDI], dword 0cc90cc90h
536%ifdef WITH_64_BIT_TESTS_IMM32
537 lock sub qword [1000h], dword 0cc90cc90h
538 lock sub qword [rbx], dword 0cc90cc90h
539 lock sub qword [rdi], dword 0cc90cc90h
540 lock sub qword [r9], dword 0cc90cc90h
541%endif
542 ; 83 /5 ib SUB reg/memX, imm8 - sans reg dst
543 lock sub word [1000h], byte 07fh
544 lock sub word [xBX], byte 07fh
545 lock sub word [xDI], byte 07fh
546 lock sub dword [1000h], byte 07fh
547 lock sub dword [xBX], byte 07fh
548 lock sub dword [xDI], byte 07fh
549%ifdef WITH_64_BIT_TESTS
550 lock sub qword [1000h], byte 07fh
551 lock sub qword [rbx], byte 07fh
552 lock sub qword [rdi], byte 07fh
553 lock sub qword [r10], byte 07fh
554%endif
555
556 ; 28 /r SUB reg/mem8, reg8 - sans reg dst
557 lock sub byte [1000h], bl
558 lock sub byte [xBX], bl
559 lock sub byte [xSI], bl
560 ; 29 /r SUB reg/memX, regX - sans reg dst
561 lock sub word [1000h], bx
562 lock sub word [xBX], bx
563 lock sub word [xSI], bx
564 lock sub dword [1000h], ebx
565 lock sub dword [xBX], ebx
566 lock sub dword [xSI], ebx
567%ifdef WITH_64_BIT_TESTS
568 lock sub qword [1000h], rbx
569 lock sub qword [rbx], rbx
570 lock sub qword [rsi], rbx
571 lock sub qword [r11], rbx
572%endif
573
574 ;
575 ; XADD
576 ;
577 ; 0f c0 /r XADD reg/mem8, reg8 - sans reg dst
578 lock xadd byte [1000h], bl
579 lock xadd byte [xBX], bl
580 lock xadd byte [xDI], bl
581 ; 0f c1 /r XADD reg/memX, immX - sans reg dst
582 lock xadd word [1000h], cx
583 lock xadd word [xBX], cx
584 lock xadd word [xDI], cx
585 lock xadd dword [1000h], edx
586 lock xadd dword [xBX], edx
587 lock xadd dword [xDI], edx
588%ifdef WITH_64_BIT_TESTS
589 lock xadd qword [1000h], rbx
590 lock xadd qword [xBX], rbx
591 lock xadd qword [xDI], rbx
592 lock xadd qword [r8], rbx
593 lock xadd qword [r12], r8
594%endif
595
596 ;
597 ; XCHG
598 ;
599 ; Note: The operands can be switched around but the
600 ; encoding is the same.
601 ;
602 ; 86 /r XCHG reg/mem8, imm8 - sans reg dst
603 lock xchg byte [80cch], bl
604 lock xchg byte [xBX], bl
605 lock xchg byte [xSI], bl
606%ifdef WITH_64_BIT_TESTS_BORKED_REGS
607 lock xchg byte [rsi], r15b ; turns into r15l which yasm doesn't grok
608 lock xchg byte [r8], r15b ; ditto
609%endif
610 ; 87 /r XCHG reg/memX, immX - sans reg dst
611 lock xchg word [80cch], bx
612 lock xchg word [xBX], bx
613 lock xchg word [xSI], bx
614 lock xchg dword [80cch], ebx
615 lock xchg dword [xBX], ebx
616 lock xchg dword [xSI], ebx
617%ifdef WITH_64_BIT_TESTS
618 lock xchg qword [80cch], rbx
619 lock xchg qword [xBX], rbx
620 lock xchg qword [xSI], rbx
621 lock xchg qword [xSI], r15
622 %ifdef WITH_64_BIT_TESTS_BORKED_REGS
623 lock xchg dword [xSI], r15d ; turns into rdi
624 lock xchg word [xSI], r15w ; turns into rdi
625 %endif
626%endif
627
628 ;
629 ; XOR
630 ;
631 ; 80 /6 ib XOR reg/mem8, imm8 - sans reg dst
632 lock xor byte [1000h], byte 8
633 lock xor byte [xBX], byte 8
634 lock xor byte [xDI], byte 8
635 ; 81 /6 i[wd] XOR reg/memX, immX - sans reg dst
636 lock xor word [1000h], word 090cch
637 lock xor word [xBX], word 090cch
638 lock xor word [xDI], word 090cch
639 lock xor dword [1000h], dword 0cc90cc90h
640 lock xor dword [xBX], dword 0cc90cc90h
641 lock xor dword [xDI], dword 0cc90cc90h
642%ifdef WITH_64_BIT_TESTS_IMM32
643 lock xor qword [1000h], dword 0cc90cc90h
644 lock xor qword [rbx], dword 0cc90cc90h
645 lock xor qword [rdi], dword 0cc90cc90h
646 lock xor qword [r9], dword 0cc90cc90h
647%endif
648 ; 83 /6 ib XOR reg/memX, imm8 - sans reg dst
649 lock xor word [1000h], byte 07fh
650 lock xor word [xBX], byte 07fh
651 lock xor word [xDI], byte 07fh
652 lock xor dword [1000h], byte 07fh
653 lock xor dword [xBX], byte 07fh
654 lock xor dword [xDI], byte 07fh
655%ifdef WITH_64_BIT_TESTS
656 lock xor qword [1000h], byte 07fh
657 lock xor qword [rbx], byte 07fh
658 lock xor qword [rdi], byte 07fh
659 lock xor qword [r10], byte 07fh
660%endif
661
662 ; 30 /r XOR reg/mem8, reg8 - sans reg dst
663 lock xor byte [1000h], bl
664 lock xor byte [xBX], bl
665 lock xor byte [xSI], bl
666 ; 31 /r XOR reg/memX, regX - sans reg dst
667 lock xor word [1000h], bx
668 lock xor word [xBX], bx
669 lock xor word [xSI], bx
670 lock xor dword [1000h], ebx
671 lock xor dword [xBX], ebx
672 lock xor dword [xSI], ebx
673%ifdef WITH_64_BIT_TESTS
674 lock xor qword [1000h], rbx
675 lock xor qword [rbx], rbx
676 lock xor qword [rsi], rbx
677 lock xor qword [r11], rbx
678%endif
679
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette