Check destination operand for lockable instructions.

gas/

2009-11-13  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-i386.c (md_assemble): Check destination operand
	for lockable instructions.

gas/testsuite/

2009-11-13  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/i386/lock-1-intel.d: Updated.
	* gas/i386/lock-1.d: Likewise.
	* gas/i386/lock-1.s: Likewise.
	* gas/i386/lockbad-1.l: Likewise.
	* gas/i386/lockbad-1.s: Likewise.
	* gas/i386/x86-64-lock-1-intel.d: Likewise.
	* gas/i386/x86-64-lock-1.d: Likewise.
	* gas/i386/x86-64-lock-1.s: Likewise.
	* gas/i386/x86-64-lockbad-1.l: Likewise.
	* gas/i386/x86-64-lockbad-1.s: Likewise.
This commit is contained in:
H.J. Lu 2009-11-14 06:04:34 +00:00
parent 68a3e151da
commit c1ba026631
13 changed files with 269 additions and 156 deletions

View File

@ -1,3 +1,8 @@
2009-11-13 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (md_assemble): Check destination operand
for lockable instructions.
2009-11-13 H.J. Lu <hongjiu.lu@intel.com> 2009-11-13 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (_i386_insn): Don't use bit field on * config/tc-i386.c (_i386_insn): Don't use bit field on

View File

@ -2932,10 +2932,13 @@ md_assemble (char *line)
if (!add_prefix (FWAIT_OPCODE)) if (!add_prefix (FWAIT_OPCODE))
return; return;
/* Check for lock without a lockable instruction. */ /* Check for lock without a lockable instruction. Destination operand
must be memory unless it is xchg (0x86). */
if (i.prefix[LOCK_PREFIX] if (i.prefix[LOCK_PREFIX]
&& (!i.tm.opcode_modifier.islockable && (!i.tm.opcode_modifier.islockable
|| i.mem_operands == 0)) || i.mem_operands == 0
|| (i.tm.base_opcode != 0x86
&& !operand_type_check (i.types[i.operands - 1], anymem))))
{ {
as_bad (_("expecting lockable instruction after `lock'")); as_bad (_("expecting lockable instruction after `lock'"));
return; return;

View File

@ -1,3 +1,16 @@
2009-11-13 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/lock-1-intel.d: Updated.
* gas/i386/lock-1.d: Likewise.
* gas/i386/lock-1.s: Likewise.
* gas/i386/lockbad-1.l: Likewise.
* gas/i386/lockbad-1.s: Likewise.
* gas/i386/x86-64-lock-1-intel.d: Likewise.
* gas/i386/x86-64-lock-1.d: Likewise.
* gas/i386/x86-64-lock-1.s: Likewise.
* gas/i386/x86-64-lockbad-1.l: Likewise.
* gas/i386/x86-64-lockbad-1.s: Likewise.
2009-11-13 H.J. Lu <hongjiu.lu@intel.com> 2009-11-13 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/rex.s: Add a test for VEX insn. * gas/i386/rex.s: Add a test for VEX insn.

View File

@ -8,11 +8,11 @@
Disassembly of section .text: Disassembly of section .text:
0+ <foo>: 0+ <foo>:
[ ]*[a-f0-9]+: f0 03 03 lock add eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 01 03 lock add DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 13 03 lock adc eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 11 03 lock adc DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 23 03 lock and eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 21 03 lock and DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[ebx\],0x64
@ -26,22 +26,22 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[ebx\]
[ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[ebx\]
[ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[ebx\]
[ ]*[a-f0-9]+: f0 0b 03 lock or eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 09 03 lock or DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 1b 03 lock sbb eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 19 03 lock sbb DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 2b 03 lock sub eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 29 03 lock sub DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 33 03 lock xor eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 31 03 lock xor DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 03 03 lock add eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 01 03 lock add DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 13 03 lock adc eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 11 03 lock adc DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 23 03 lock and eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 21 03 lock and DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[ebx\],0x64
@ -55,15 +55,15 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[ebx\]
[ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[ebx\]
[ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[ebx\]
[ ]*[a-f0-9]+: f0 0b 03 lock or eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 09 03 lock or DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 1b 03 lock sbb eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 19 03 lock sbb DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 2b 03 lock sub eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 29 03 lock sub DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[ebx\],0x64
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 33 03 lock xor eax,DWORD PTR \[ebx\] [ ]*[a-f0-9]+: f0 31 03 lock xor DWORD PTR \[ebx\],eax
[ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[ebx\],0x64 [ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[ebx\],0x64
#pass #pass

View File

@ -7,11 +7,11 @@
Disassembly of section .text: Disassembly of section .text:
0+ <foo>: 0+ <foo>:
[ ]*[a-f0-9]+: f0 03 03 lock add \(%ebx\),%eax [ ]*[a-f0-9]+: f0 01 03 lock add %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 13 03 lock adc \(%ebx\),%eax [ ]*[a-f0-9]+: f0 11 03 lock adc %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 23 03 lock and \(%ebx\),%eax [ ]*[a-f0-9]+: f0 21 03 lock and %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%ebx\)
@ -25,22 +25,22 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock incl \(%ebx\) [ ]*[a-f0-9]+: f0 ff 03 lock incl \(%ebx\)
[ ]*[a-f0-9]+: f0 f7 1b lock negl \(%ebx\) [ ]*[a-f0-9]+: f0 f7 1b lock negl \(%ebx\)
[ ]*[a-f0-9]+: f0 f7 13 lock notl \(%ebx\) [ ]*[a-f0-9]+: f0 f7 13 lock notl \(%ebx\)
[ ]*[a-f0-9]+: f0 0b 03 lock or \(%ebx\),%eax [ ]*[a-f0-9]+: f0 09 03 lock or %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 1b 03 lock sbb \(%ebx\),%eax [ ]*[a-f0-9]+: f0 19 03 lock sbb %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 2b 03 lock sub \(%ebx\),%eax [ ]*[a-f0-9]+: f0 29 03 lock sub %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 33 03 lock xor \(%ebx\),%eax [ ]*[a-f0-9]+: f0 31 03 lock xor %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 03 03 lock add \(%ebx\),%eax [ ]*[a-f0-9]+: f0 01 03 lock add %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 13 03 lock adc \(%ebx\),%eax [ ]*[a-f0-9]+: f0 11 03 lock adc %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 23 03 lock and \(%ebx\),%eax [ ]*[a-f0-9]+: f0 21 03 lock and %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%ebx\)
@ -54,15 +54,15 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock incl \(%ebx\) [ ]*[a-f0-9]+: f0 ff 03 lock incl \(%ebx\)
[ ]*[a-f0-9]+: f0 f7 1b lock negl \(%ebx\) [ ]*[a-f0-9]+: f0 f7 1b lock negl \(%ebx\)
[ ]*[a-f0-9]+: f0 f7 13 lock notl \(%ebx\) [ ]*[a-f0-9]+: f0 f7 13 lock notl \(%ebx\)
[ ]*[a-f0-9]+: f0 0b 03 lock or \(%ebx\),%eax [ ]*[a-f0-9]+: f0 09 03 lock or %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 1b 03 lock sbb \(%ebx\),%eax [ ]*[a-f0-9]+: f0 19 03 lock sbb %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 2b 03 lock sub \(%ebx\),%eax [ ]*[a-f0-9]+: f0 29 03 lock sub %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%ebx\)
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 33 03 lock xor \(%ebx\),%eax [ ]*[a-f0-9]+: f0 31 03 lock xor %eax,\(%ebx\)
[ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%ebx\) [ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%ebx\)
#pass #pass

View File

@ -2,11 +2,11 @@
.text .text
foo: foo:
lock add (%ebx), %eax lock add %eax, (%ebx)
lock add $0x64, (%ebx) lock add $0x64, (%ebx)
lock adc (%ebx), %eax lock adc %eax, (%ebx)
lock adc $0x64, (%ebx) lock adc $0x64, (%ebx)
lock and (%ebx), %eax lock and %eax, (%ebx)
lock and $0x64, (%ebx) lock and $0x64, (%ebx)
lock btc %eax, (%ebx) lock btc %eax, (%ebx)
lock btc $0x64, (%ebx) lock btc $0x64, (%ebx)
@ -20,24 +20,24 @@ foo:
lock incl (%ebx) lock incl (%ebx)
lock negl (%ebx) lock negl (%ebx)
lock notl (%ebx) lock notl (%ebx)
lock or (%ebx), %eax lock or %eax, (%ebx)
lock or $0x64, (%ebx) lock or $0x64, (%ebx)
lock sbb (%ebx), %eax lock sbb %eax, (%ebx)
lock sbb $0x64, (%ebx) lock sbb $0x64, (%ebx)
lock sub (%ebx), %eax lock sub %eax, (%ebx)
lock sub $0x64, (%ebx) lock sub $0x64, (%ebx)
lock xadd %eax, (%ebx) lock xadd %eax, (%ebx)
lock xchg (%ebx), %eax lock xchg (%ebx), %eax
lock xchg %eax, (%ebx) lock xchg %eax, (%ebx)
lock xor (%ebx), %eax lock xor %eax, (%ebx)
lock xor $0x64, (%ebx) lock xor $0x64, (%ebx)
.intel_syntax noprefix .intel_syntax noprefix
lock add eax,DWORD PTR [ebx] lock add DWORD PTR [ebx],eax
lock add DWORD PTR [ebx],0x64 lock add DWORD PTR [ebx],0x64
lock adc eax,DWORD PTR [ebx] lock adc DWORD PTR [ebx],eax
lock adc DWORD PTR [ebx],0x64 lock adc DWORD PTR [ebx],0x64
lock and eax,DWORD PTR [ebx] lock and DWORD PTR [ebx],eax
lock and DWORD PTR [ebx],0x64 lock and DWORD PTR [ebx],0x64
lock btc DWORD PTR [ebx],eax lock btc DWORD PTR [ebx],eax
lock btc DWORD PTR [ebx],0x64 lock btc DWORD PTR [ebx],0x64
@ -51,14 +51,14 @@ foo:
lock inc DWORD PTR [ebx] lock inc DWORD PTR [ebx]
lock neg DWORD PTR [ebx] lock neg DWORD PTR [ebx]
lock not DWORD PTR [ebx] lock not DWORD PTR [ebx]
lock or eax,DWORD PTR [ebx] lock or DWORD PTR [ebx],eax
lock or DWORD PTR [ebx],0x64 lock or DWORD PTR [ebx],0x64
lock sbb eax,DWORD PTR [ebx] lock sbb DWORD PTR [ebx],eax
lock sbb DWORD PTR [ebx],0x64 lock sbb DWORD PTR [ebx],0x64
lock sub eax,DWORD PTR [ebx] lock sub DWORD PTR [ebx],eax
lock sub DWORD PTR [ebx],0x64 lock sub DWORD PTR [ebx],0x64
lock xadd DWORD PTR [ebx],eax lock xadd DWORD PTR [ebx],eax
lock xchg DWORD PTR [ebx],eax lock xchg DWORD PTR [ebx],eax
lock xchg DWORD PTR [ebx],eax lock xchg DWORD PTR [ebx],eax
lock xor eax,DWORD PTR [ebx] lock xor DWORD PTR [ebx],eax
lock xor DWORD PTR [ebx],0x64 lock xor DWORD PTR [ebx],0x64

View File

@ -29,16 +29,15 @@
.*:33: Error: .* .*:33: Error: .*
.*:34: Error: .* .*:34: Error: .*
.*:35: Error: .* .*:35: Error: .*
.*:37: Error: .*
.*:38: Error: .* .*:38: Error: .*
.*:39: Error: .* .*:39: Error: .*
.*:40: Error: .*
.*:41: Error: .* .*:41: Error: .*
.*:42: Error: .* .*:42: Error: .*
.*:43: Error: .* .*:43: Error: .*
.*:44: Error: .*
.*:45: Error: .*
.*:46: Error: .* .*:46: Error: .*
.*:47: Error: .* .*:47: Error: .*
.*:48: Error: .*
.*:49: Error: .* .*:49: Error: .*
.*:50: Error: .* .*:50: Error: .*
.*:51: Error: .* .*:51: Error: .*
@ -59,6 +58,21 @@
.*:66: Error: .* .*:66: Error: .*
.*:67: Error: .* .*:67: Error: .*
.*:68: Error: .* .*:68: Error: .*
.*:69: Error: .*
.*:70: Error: .*
.*:71: Error: .*
.*:72: Error: .*
.*:73: Error: .*
.*:74: Error: .*
.*:75: Error: .*
.*:76: Error: .*
.*:78: Error: .*
.*:79: Error: .*
.*:80: Error: .*
.*:81: Error: .*
.*:82: Error: .*
.*:83: Error: .*
.*:84: Error: .*
GAS LISTING .* GAS LISTING .*
@ -98,38 +112,54 @@ GAS LISTING .*
[ ]*34[ ]+lock xor %ebx, %eax [ ]*34[ ]+lock xor %ebx, %eax
[ ]*35[ ]+lock xor \$0x64, %ebx [ ]*35[ ]+lock xor \$0x64, %ebx
[ ]*36[ ]+ [ ]*36[ ]+
[ ]*37[ ]+\.intel_syntax noprefix [ ]*37[ ]+lock add \(%ebx\), %eax
[ ]*38[ ]+lock mov eax,ebx [ ]*38[ ]+lock adc \(%ebx\), %eax
[ ]*39[ ]+lock mov eax,DWORD PTR \[ebx\] [ ]*39[ ]+lock and \(%ebx\), %eax
[ ]*40[ ]+ [ ]*40[ ]+lock or \(%ebx\), %eax
[ ]*41[ ]+lock add eax,ebx [ ]*41[ ]+lock sbb \(%ebx\), %eax
[ ]*42[ ]+lock add ebx,0x64 [ ]*42[ ]+lock sub \(%ebx\), %eax
[ ]*43[ ]+lock adc eax,ebx [ ]*43[ ]+lock xor \(%ebx\), %eax
[ ]*44[ ]+lock adc ebx,0x64 [ ]*44[ ]+
[ ]*45[ ]+lock and eax,ebx [ ]*45[ ]+\.intel_syntax noprefix
[ ]*46[ ]+lock and ebx,0x64 [ ]*46[ ]+lock mov eax,ebx
[ ]*47[ ]+lock btc ebx,eax [ ]*47[ ]+lock mov eax,DWORD PTR \[ebx\]
[ ]*48[ ]+lock btc ebx,0x64 [ ]*48[ ]+
[ ]*49[ ]+lock btr ebx,eax [ ]*49[ ]+lock add eax,ebx
[ ]*50[ ]+lock btr ebx,0x64 [ ]*50[ ]+lock add ebx,0x64
[ ]*51[ ]+lock bts ebx,eax [ ]*51[ ]+lock adc eax,ebx
[ ]*52[ ]+lock bts ebx,0x64 [ ]*52[ ]+lock adc ebx,0x64
[ ]*53[ ]+lock cmpxchg ebx,eax [ ]*53[ ]+lock and eax,ebx
[ ]*54[ ]+lock dec ebx [ ]*54[ ]+lock and ebx,0x64
[ ]*55[ ]+lock inc ebx [ ]*55[ ]+lock btc ebx,eax
[ ]*56[ ]+lock neg ebx [ ]*56[ ]+lock btc ebx,0x64
[ ]*57[ ]+lock not ebx [ ]*57[ ]+lock btr ebx,eax
GAS LISTING .* GAS LISTING .*
[ ]*58[ ]+lock or eax,ebx [ ]*58[ ]+lock btr ebx,0x64
[ ]*59[ ]+lock or ebx,0x64 [ ]*59[ ]+lock bts ebx,eax
[ ]*60[ ]+lock sbb eax,ebx [ ]*60[ ]+lock bts ebx,0x64
[ ]*61[ ]+lock sbb ebx,0x64 [ ]*61[ ]+lock cmpxchg ebx,eax
[ ]*62[ ]+lock sub eax,ebx [ ]*62[ ]+lock dec ebx
[ ]*63[ ]+lock sub ebx,0x64 [ ]*63[ ]+lock inc ebx
[ ]*64[ ]+lock xadd ebx,eax [ ]*64[ ]+lock neg ebx
[ ]*65[ ]+lock xchg ebx,eax [ ]*65[ ]+lock not ebx
[ ]*66[ ]+lock xchg ebx,eax [ ]*66[ ]+lock or eax,ebx
[ ]*67[ ]+lock xor eax,ebx [ ]*67[ ]+lock or ebx,0x64
[ ]*68[ ]+lock xor ebx,0x64 [ ]*68[ ]+lock sbb eax,ebx
[ ]*69[ ]+lock sbb ebx,0x64
[ ]*70[ ]+lock sub eax,ebx
[ ]*71[ ]+lock sub ebx,0x64
[ ]*72[ ]+lock xadd ebx,eax
[ ]*73[ ]+lock xchg ebx,eax
[ ]*74[ ]+lock xchg ebx,eax
[ ]*75[ ]+lock xor eax,ebx
[ ]*76[ ]+lock xor ebx,0x64
[ ]*77[ ]+
[ ]*78[ ]+lock add eax,DWORD PTR \[ebx\]
[ ]*79[ ]+lock adc eax,DWORD PTR \[ebx\]
[ ]*80[ ]+lock and eax,DWORD PTR \[ebx\]
[ ]*81[ ]+lock or eax,DWORD PTR \[ebx\]
[ ]*82[ ]+lock sbb eax,DWORD PTR \[ebx\]
[ ]*83[ ]+lock sub eax,DWORD PTR \[ebx\]
[ ]*84[ ]+lock xor eax,DWORD PTR \[ebx\]

View File

@ -34,6 +34,14 @@ foo:
lock xor %ebx, %eax lock xor %ebx, %eax
lock xor $0x64, %ebx lock xor $0x64, %ebx
lock add (%ebx), %eax
lock adc (%ebx), %eax
lock and (%ebx), %eax
lock or (%ebx), %eax
lock sbb (%ebx), %eax
lock sub (%ebx), %eax
lock xor (%ebx), %eax
.intel_syntax noprefix .intel_syntax noprefix
lock mov eax,ebx lock mov eax,ebx
lock mov eax,DWORD PTR [ebx] lock mov eax,DWORD PTR [ebx]
@ -66,3 +74,11 @@ foo:
lock xchg ebx,eax lock xchg ebx,eax
lock xor eax,ebx lock xor eax,ebx
lock xor ebx,0x64 lock xor ebx,0x64
lock add eax,DWORD PTR [ebx]
lock adc eax,DWORD PTR [ebx]
lock and eax,DWORD PTR [ebx]
lock or eax,DWORD PTR [ebx]
lock sbb eax,DWORD PTR [ebx]
lock sub eax,DWORD PTR [ebx]
lock xor eax,DWORD PTR [ebx]

View File

@ -8,11 +8,11 @@
Disassembly of section .text: Disassembly of section .text:
0+ <foo>: 0+ <foo>:
[ ]*[a-f0-9]+: f0 03 03 lock add eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 01 03 lock add DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 13 03 lock adc eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 11 03 lock adc DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 23 03 lock and eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 21 03 lock and DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[rbx\],0x64
@ -26,22 +26,22 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[rbx\]
[ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[rbx\]
[ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[rbx\]
[ ]*[a-f0-9]+: f0 0b 03 lock or eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 09 03 lock or DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 1b 03 lock sbb eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 19 03 lock sbb DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 2b 03 lock sub eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 29 03 lock sub DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 33 03 lock xor eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 31 03 lock xor DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 03 03 lock add eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 01 03 lock add DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 03 64 lock add DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 13 03 lock adc eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 11 03 lock adc DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 13 64 lock adc DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 23 03 lock and eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 21 03 lock and DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 23 64 lock and DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 0f bb 03 lock btc DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btc DWORD PTR \[rbx\],0x64
@ -55,15 +55,15 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 ff 03 lock inc DWORD PTR \[rbx\]
[ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 f7 1b lock neg DWORD PTR \[rbx\]
[ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 f7 13 lock not DWORD PTR \[rbx\]
[ ]*[a-f0-9]+: f0 0b 03 lock or eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 09 03 lock or DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 0b 64 lock or DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 1b 03 lock sbb eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 19 03 lock sbb DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 1b 64 lock sbb DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 2b 03 lock sub eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 29 03 lock sub DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 2b 64 lock sub DWORD PTR \[rbx\],0x64
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax [ ]*[a-f0-9]+: f0 87 03 lock xchg DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 33 03 lock xor eax,DWORD PTR \[rbx\] [ ]*[a-f0-9]+: f0 31 03 lock xor DWORD PTR \[rbx\],eax
[ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[rbx\],0x64 [ ]*[a-f0-9]+: f0 83 33 64 lock xor DWORD PTR \[rbx\],0x64
#pass #pass

View File

@ -7,11 +7,11 @@
Disassembly of section .text: Disassembly of section .text:
0+ <foo>: 0+ <foo>:
[ ]*[a-f0-9]+: f0 03 03 lock add \(%rbx\),%eax [ ]*[a-f0-9]+: f0 01 03 lock add %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 13 03 lock adc \(%rbx\),%eax [ ]*[a-f0-9]+: f0 11 03 lock adc %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 23 03 lock and \(%rbx\),%eax [ ]*[a-f0-9]+: f0 21 03 lock and %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%rbx\)
@ -25,22 +25,22 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock incl \(%rbx\) [ ]*[a-f0-9]+: f0 ff 03 lock incl \(%rbx\)
[ ]*[a-f0-9]+: f0 f7 1b lock negl \(%rbx\) [ ]*[a-f0-9]+: f0 f7 1b lock negl \(%rbx\)
[ ]*[a-f0-9]+: f0 f7 13 lock notl \(%rbx\) [ ]*[a-f0-9]+: f0 f7 13 lock notl \(%rbx\)
[ ]*[a-f0-9]+: f0 0b 03 lock or \(%rbx\),%eax [ ]*[a-f0-9]+: f0 09 03 lock or %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 1b 03 lock sbb \(%rbx\),%eax [ ]*[a-f0-9]+: f0 19 03 lock sbb %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 2b 03 lock sub \(%rbx\),%eax [ ]*[a-f0-9]+: f0 29 03 lock sub %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 33 03 lock xor \(%rbx\),%eax [ ]*[a-f0-9]+: f0 31 03 lock xor %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 03 03 lock add \(%rbx\),%eax [ ]*[a-f0-9]+: f0 01 03 lock add %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 03 64 lock addl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 13 03 lock adc \(%rbx\),%eax [ ]*[a-f0-9]+: f0 11 03 lock adc %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 13 64 lock adcl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 23 03 lock and \(%rbx\),%eax [ ]*[a-f0-9]+: f0 21 03 lock and %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 23 64 lock andl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 0f bb 03 lock btc %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 0f ba 3b 64 lock btcl \$0x64,\(%rbx\)
@ -54,15 +54,15 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: f0 ff 03 lock incl \(%rbx\) [ ]*[a-f0-9]+: f0 ff 03 lock incl \(%rbx\)
[ ]*[a-f0-9]+: f0 f7 1b lock negl \(%rbx\) [ ]*[a-f0-9]+: f0 f7 1b lock negl \(%rbx\)
[ ]*[a-f0-9]+: f0 f7 13 lock notl \(%rbx\) [ ]*[a-f0-9]+: f0 f7 13 lock notl \(%rbx\)
[ ]*[a-f0-9]+: f0 0b 03 lock or \(%rbx\),%eax [ ]*[a-f0-9]+: f0 09 03 lock or %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 0b 64 lock orl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 1b 03 lock sbb \(%rbx\),%eax [ ]*[a-f0-9]+: f0 19 03 lock sbb %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 1b 64 lock sbbl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 2b 03 lock sub \(%rbx\),%eax [ ]*[a-f0-9]+: f0 29 03 lock sub %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 2b 64 lock subl \$0x64,\(%rbx\)
[ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 0f c1 03 lock xadd %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\) [ ]*[a-f0-9]+: f0 87 03 lock xchg %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 33 03 lock xor \(%rbx\),%eax [ ]*[a-f0-9]+: f0 31 03 lock xor %eax,\(%rbx\)
[ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%rbx\) [ ]*[a-f0-9]+: f0 83 33 64 lock xorl \$0x64,\(%rbx\)
#pass #pass

View File

@ -2,11 +2,11 @@
.text .text
foo: foo:
lock add (%rbx), %eax lock add %eax, (%rbx)
lock add $0x64, (%rbx) lock add $0x64, (%rbx)
lock adc (%rbx), %eax lock adc %eax, (%rbx)
lock adc $0x64, (%rbx) lock adc $0x64, (%rbx)
lock and (%rbx), %eax lock and %eax, (%rbx)
lock and $0x64, (%rbx) lock and $0x64, (%rbx)
lock btc %eax, (%rbx) lock btc %eax, (%rbx)
lock btc $0x64, (%rbx) lock btc $0x64, (%rbx)
@ -20,24 +20,24 @@ foo:
lock incl (%rbx) lock incl (%rbx)
lock negl (%rbx) lock negl (%rbx)
lock notl (%rbx) lock notl (%rbx)
lock or (%rbx), %eax lock or %eax, (%rbx)
lock or $0x64, (%rbx) lock or $0x64, (%rbx)
lock sbb (%rbx), %eax lock sbb %eax, (%rbx)
lock sbb $0x64, (%rbx) lock sbb $0x64, (%rbx)
lock sub (%rbx), %eax lock sub %eax, (%rbx)
lock sub $0x64, (%rbx) lock sub $0x64, (%rbx)
lock xadd %eax, (%rbx) lock xadd %eax, (%rbx)
lock xchg (%rbx), %eax lock xchg (%rbx), %eax
lock xchg %eax, (%rbx) lock xchg %eax, (%rbx)
lock xor (%rbx), %eax lock xor %eax, (%rbx)
lock xor $0x64, (%rbx) lock xor $0x64, (%rbx)
.intel_syntax noprefix .intel_syntax noprefix
lock add eax,DWORD PTR [rbx] lock add DWORD PTR [rbx],eax
lock add DWORD PTR [rbx],0x64 lock add DWORD PTR [rbx],0x64
lock adc eax,DWORD PTR [rbx] lock adc DWORD PTR [rbx],eax
lock adc DWORD PTR [rbx],0x64 lock adc DWORD PTR [rbx],0x64
lock and eax,DWORD PTR [rbx] lock and DWORD PTR [rbx],eax
lock and DWORD PTR [rbx],0x64 lock and DWORD PTR [rbx],0x64
lock btc DWORD PTR [rbx],eax lock btc DWORD PTR [rbx],eax
lock btc DWORD PTR [rbx],0x64 lock btc DWORD PTR [rbx],0x64
@ -51,14 +51,14 @@ foo:
lock inc DWORD PTR [rbx] lock inc DWORD PTR [rbx]
lock neg DWORD PTR [rbx] lock neg DWORD PTR [rbx]
lock not DWORD PTR [rbx] lock not DWORD PTR [rbx]
lock or eax,DWORD PTR [rbx] lock or DWORD PTR [rbx],eax
lock or DWORD PTR [rbx],0x64 lock or DWORD PTR [rbx],0x64
lock sbb eax,DWORD PTR [rbx] lock sbb DWORD PTR [rbx],eax
lock sbb DWORD PTR [rbx],0x64 lock sbb DWORD PTR [rbx],0x64
lock sub eax,DWORD PTR [rbx] lock sub DWORD PTR [rbx],eax
lock sub DWORD PTR [rbx],0x64 lock sub DWORD PTR [rbx],0x64
lock xadd DWORD PTR [rbx],eax lock xadd DWORD PTR [rbx],eax
lock xchg DWORD PTR [rbx],eax lock xchg DWORD PTR [rbx],eax
lock xchg DWORD PTR [rbx],eax lock xchg DWORD PTR [rbx],eax
lock xor eax,DWORD PTR [rbx] lock xor DWORD PTR [rbx],eax
lock xor DWORD PTR [rbx],0x64 lock xor DWORD PTR [rbx],0x64

View File

@ -29,16 +29,15 @@
.*:33: Error: .* .*:33: Error: .*
.*:34: Error: .* .*:34: Error: .*
.*:35: Error: .* .*:35: Error: .*
.*:37: Error: .*
.*:38: Error: .* .*:38: Error: .*
.*:39: Error: .* .*:39: Error: .*
.*:40: Error: .*
.*:41: Error: .* .*:41: Error: .*
.*:42: Error: .* .*:42: Error: .*
.*:43: Error: .* .*:43: Error: .*
.*:44: Error: .*
.*:45: Error: .*
.*:46: Error: .* .*:46: Error: .*
.*:47: Error: .* .*:47: Error: .*
.*:48: Error: .*
.*:49: Error: .* .*:49: Error: .*
.*:50: Error: .* .*:50: Error: .*
.*:51: Error: .* .*:51: Error: .*
@ -59,6 +58,21 @@
.*:66: Error: .* .*:66: Error: .*
.*:67: Error: .* .*:67: Error: .*
.*:68: Error: .* .*:68: Error: .*
.*:69: Error: .*
.*:70: Error: .*
.*:71: Error: .*
.*:72: Error: .*
.*:73: Error: .*
.*:74: Error: .*
.*:75: Error: .*
.*:76: Error: .*
.*:78: Error: .*
.*:79: Error: .*
.*:80: Error: .*
.*:81: Error: .*
.*:82: Error: .*
.*:83: Error: .*
.*:84: Error: .*
GAS LISTING .* GAS LISTING .*
@ -98,38 +112,54 @@ GAS LISTING .*
[ ]*34[ ]+lock xor %ebx, %eax [ ]*34[ ]+lock xor %ebx, %eax
[ ]*35[ ]+lock xor \$0x64, %ebx [ ]*35[ ]+lock xor \$0x64, %ebx
[ ]*36[ ]+ [ ]*36[ ]+
[ ]*37[ ]+\.intel_syntax noprefix [ ]*37[ ]+lock add \(%rbx\), %eax
[ ]*38[ ]+lock mov eax,ebx [ ]*38[ ]+lock adc \(%rbx\), %eax
[ ]*39[ ]+lock mov eax,DWORD PTR \[rbx\] [ ]*39[ ]+lock and \(%rbx\), %eax
[ ]*40[ ]+ [ ]*40[ ]+lock or \(%rbx\), %eax
[ ]*41[ ]+lock add eax,ebx [ ]*41[ ]+lock sbb \(%rbx\), %eax
[ ]*42[ ]+lock add ebx,0x64 [ ]*42[ ]+lock sub \(%rbx\), %eax
[ ]*43[ ]+lock adc eax,ebx [ ]*43[ ]+lock xor \(%rbx\), %eax
[ ]*44[ ]+lock adc ebx,0x64 [ ]*44[ ]+
[ ]*45[ ]+lock and eax,ebx [ ]*45[ ]+\.intel_syntax noprefix
[ ]*46[ ]+lock and ebx,0x64 [ ]*46[ ]+lock mov eax,ebx
[ ]*47[ ]+lock btc ebx,eax [ ]*47[ ]+lock mov eax,DWORD PTR \[rbx\]
[ ]*48[ ]+lock btc ebx,0x64 [ ]*48[ ]+
[ ]*49[ ]+lock btr ebx,eax [ ]*49[ ]+lock add eax,ebx
[ ]*50[ ]+lock btr ebx,0x64 [ ]*50[ ]+lock add ebx,0x64
[ ]*51[ ]+lock bts ebx,eax [ ]*51[ ]+lock adc eax,ebx
[ ]*52[ ]+lock bts ebx,0x64 [ ]*52[ ]+lock adc ebx,0x64
[ ]*53[ ]+lock cmpxchg ebx,eax [ ]*53[ ]+lock and eax,ebx
[ ]*54[ ]+lock dec ebx [ ]*54[ ]+lock and ebx,0x64
[ ]*55[ ]+lock inc ebx [ ]*55[ ]+lock btc ebx,eax
[ ]*56[ ]+lock neg ebx [ ]*56[ ]+lock btc ebx,0x64
[ ]*57[ ]+lock not ebx [ ]*57[ ]+lock btr ebx,eax
GAS LISTING .* GAS LISTING .*
[ ]*58[ ]+lock or eax,ebx [ ]*58[ ]+lock btr ebx,0x64
[ ]*59[ ]+lock or ebx,0x64 [ ]*59[ ]+lock bts ebx,eax
[ ]*60[ ]+lock sbb eax,ebx [ ]*60[ ]+lock bts ebx,0x64
[ ]*61[ ]+lock sbb ebx,0x64 [ ]*61[ ]+lock cmpxchg ebx,eax
[ ]*62[ ]+lock sub eax,ebx [ ]*62[ ]+lock dec ebx
[ ]*63[ ]+lock sub ebx,0x64 [ ]*63[ ]+lock inc ebx
[ ]*64[ ]+lock xadd ebx,eax [ ]*64[ ]+lock neg ebx
[ ]*65[ ]+lock xchg ebx,eax [ ]*65[ ]+lock not ebx
[ ]*66[ ]+lock xchg ebx,eax [ ]*66[ ]+lock or eax,ebx
[ ]*67[ ]+lock xor eax,ebx [ ]*67[ ]+lock or ebx,0x64
[ ]*68[ ]+lock xor ebx,0x64 [ ]*68[ ]+lock sbb eax,ebx
[ ]*69[ ]+lock sbb ebx,0x64
[ ]*70[ ]+lock sub eax,ebx
[ ]*71[ ]+lock sub ebx,0x64
[ ]*72[ ]+lock xadd ebx,eax
[ ]*73[ ]+lock xchg ebx,eax
[ ]*74[ ]+lock xchg ebx,eax
[ ]*75[ ]+lock xor eax,ebx
[ ]*76[ ]+lock xor ebx,0x64
[ ]*77[ ]+
[ ]*78[ ]+lock add eax,DWORD PTR \[rbx\]
[ ]*79[ ]+lock adc eax,DWORD PTR \[rbx\]
[ ]*80[ ]+lock and eax,DWORD PTR \[rbx\]
[ ]*81[ ]+lock or eax,DWORD PTR \[rbx\]
[ ]*82[ ]+lock sbb eax,DWORD PTR \[rbx\]
[ ]*83[ ]+lock sub eax,DWORD PTR \[rbx\]
[ ]*84[ ]+lock xor eax,DWORD PTR \[rbx\]

View File

@ -34,6 +34,14 @@ foo:
lock xor %ebx, %eax lock xor %ebx, %eax
lock xor $0x64, %ebx lock xor $0x64, %ebx
lock add (%rbx), %eax
lock adc (%rbx), %eax
lock and (%rbx), %eax
lock or (%rbx), %eax
lock sbb (%rbx), %eax
lock sub (%rbx), %eax
lock xor (%rbx), %eax
.intel_syntax noprefix .intel_syntax noprefix
lock mov eax,ebx lock mov eax,ebx
lock mov eax,DWORD PTR [rbx] lock mov eax,DWORD PTR [rbx]
@ -66,3 +74,11 @@ foo:
lock xchg ebx,eax lock xchg ebx,eax
lock xor eax,ebx lock xor eax,ebx
lock xor ebx,0x64 lock xor ebx,0x64
lock add eax,DWORD PTR [rbx]
lock adc eax,DWORD PTR [rbx]
lock and eax,DWORD PTR [rbx]
lock or eax,DWORD PTR [rbx]
lock sbb eax,DWORD PTR [rbx]
lock sub eax,DWORD PTR [rbx]
lock xor eax,DWORD PTR [rbx]