Add tests for invalid addresses and riz/eiz
* gas/i386/inval.s: Add tests for invalid addresses and eiz. * gas/i386/x86-64-inval.s: Add tests for invalid addresses and riz/eiz. * gas/i386/inval.l: Updated. * gas/i386/x86-64-inval.l: Likewise.
This commit is contained in:
parent
d79e58d83c
commit
5fe308e1a3
5 changed files with 263 additions and 194 deletions
|
@ -1,3 +1,13 @@
|
|||
2013-03-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/inval.s: Add tests for invalid addresses and eiz.
|
||||
|
||||
* gas/i386/x86-64-inval.s: Add tests for invalid addresses and
|
||||
riz/eiz.
|
||||
|
||||
* gas/i386/inval.l: Updated.
|
||||
* gas/i386/x86-64-inval.l: Likewise.
|
||||
|
||||
2013-02-28 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/i386.exp: Run inval-rep and x86-64-inval-rep.
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
.*: Assembler messages:
|
||||
.*:3: Error: .*
|
||||
.*:4: Error: .*
|
||||
.*:5: Error: .*
|
||||
.*:6: Error: .*
|
||||
|
@ -53,14 +52,13 @@
|
|||
.*:54: Error: .*
|
||||
.*:55: Error: .*
|
||||
.*:56: Error: .*
|
||||
.*:58: Error: .*
|
||||
.*:57: Error: .*
|
||||
.*:59: Error: .*
|
||||
.*:60: Error: .*
|
||||
.*:62: Error: .*
|
||||
.*:63: Error: .*
|
||||
.*:64: Error: .*
|
||||
.*:65: Error: .*
|
||||
.*:66: Error: .*
|
||||
.*:67: Error: .*
|
||||
.*:68: Error: .*
|
||||
.*:69: Error: .*
|
||||
.*:70: Error: .*
|
||||
|
@ -71,98 +69,110 @@
|
|||
.*:75: Error: .*
|
||||
.*:76: Error: .*
|
||||
.*:77: Error: .*
|
||||
.*:78: Error: .*
|
||||
.*:79: Error: .*
|
||||
.*:80: Error: .*
|
||||
.*:81: Error: .*
|
||||
.*:82: Error: .*
|
||||
.*:84: Error: .*
|
||||
.*:83: Error: .*
|
||||
.*:85: Error: .*
|
||||
.*:86: Error: .*
|
||||
.*:87: Error: .*
|
||||
.*:88: Error: .*
|
||||
.*:90: Error: .*
|
||||
GAS LISTING .*
|
||||
|
||||
|
||||
[ ]*1[ ]+\.text
|
||||
[ ]*2[ ]+\# All the following should be illegal
|
||||
[ ]*3[ ]+mov \(%dx\),%al
|
||||
[ ]*4[ ]+mov \(%eax,%esp,2\),%al
|
||||
[ ]*5[ ]+setae %eax
|
||||
[ ]*6[ ]+pushb %ds
|
||||
[ ]*7[ ]+popb %ds
|
||||
[ ]*8[ ]+pushb %al
|
||||
[ ]*9[ ]+popb %al
|
||||
[ ]*10[ ]+pushb %ah
|
||||
[ ]*11[ ]+popb %ah
|
||||
[ ]*12[ ]+pushb %ax
|
||||
[ ]*13[ ]+popb %ax
|
||||
[ ]*14[ ]+pushb %eax
|
||||
[ ]*15[ ]+popb %eax
|
||||
[ ]*16[ ]+movb %ds,%ax
|
||||
[ ]*17[ ]+movb %ds,%eax
|
||||
[ ]*18[ ]+movb %ax,%ds
|
||||
[ ]*19[ ]+movb %eax,%ds
|
||||
[ ]*20[ ]+movdb %eax,%mm0
|
||||
[ ]*21[ ]+movqb 0,%mm0
|
||||
[ ]*22[ ]+ldsb 0,%eax
|
||||
[ ]*23[ ]+setnew 0
|
||||
[ ]*24[ ]+movdw %eax,%mm0
|
||||
[ ]*25[ ]+movqw 0,%mm0
|
||||
[ ]*26[ ]+div %cx,%al
|
||||
[ ]*27[ ]+div %cl,%ax
|
||||
[ ]*28[ ]+div %ecx,%al
|
||||
[ ]*29[ ]+imul 10,%bx,%ecx
|
||||
[ ]*30[ ]+imul 10,%bx,%al
|
||||
[ ]*31[ ]+popab
|
||||
[ ]*32[ ]+stil
|
||||
[ ]*33[ ]+aaab
|
||||
[ ]*34[ ]+cwdel
|
||||
[ ]*35[ ]+cwdw
|
||||
[ ]*36[ ]+callww 0
|
||||
[ ]*37[ ]+foo: jaw foo
|
||||
[ ]*38[ ]+jcxzw foo
|
||||
[ ]*39[ ]+jecxzl foo
|
||||
[ ]*40[ ]+loopb foo
|
||||
[ ]*41[ ]+xlatw %es:%bx
|
||||
[ ]*42[ ]+xlatl %es:%bx
|
||||
[ ]*43[ ]+intl 2
|
||||
[ ]*44[ ]+int3b
|
||||
[ ]*45[ ]+hltb
|
||||
[ ]*46[ ]+fstb %st\(0\)
|
||||
[ ]*47[ ]+fcompll 28\(%ebp\)
|
||||
[ ]*48[ ]+fldlw \(%eax\)
|
||||
[ ]*49[ ]+movl \$%ebx,%eax
|
||||
[ ]*50[ ]+insertq \$4,\$2,%xmm2,%ebx
|
||||
[ ]*51[ ]+cvtsi2ssq \(%eax\),%xmm1
|
||||
[ ]*52[ ]+cvtsi2sdq \(%eax\),%xmm1
|
||||
[ ]*53[ ]+fnstsw %eax
|
||||
[ ]*54[ ]+fnstsw %al
|
||||
[ ]*55[ ]+fstsw %eax
|
||||
[ ]*56[ ]+fstsw %al
|
||||
[ ]*57[ ]+
|
||||
[ ]*2[ ]+\.allow_index_reg
|
||||
[ ]*3[ ]+\# All the following should be illegal
|
||||
[ ]*4[ ]+mov \(%dx\),%al
|
||||
[ ]*5[ ]+mov \(%eax,%esp,2\),%al
|
||||
[ ]*6[ ]+setae %eax
|
||||
[ ]*7[ ]+pushb %ds
|
||||
[ ]*8[ ]+popb %ds
|
||||
[ ]*9[ ]+pushb %al
|
||||
[ ]*10[ ]+popb %al
|
||||
[ ]*11[ ]+pushb %ah
|
||||
[ ]*12[ ]+popb %ah
|
||||
[ ]*13[ ]+pushb %ax
|
||||
[ ]*14[ ]+popb %ax
|
||||
[ ]*15[ ]+pushb %eax
|
||||
[ ]*16[ ]+popb %eax
|
||||
[ ]*17[ ]+movb %ds,%ax
|
||||
[ ]*18[ ]+movb %ds,%eax
|
||||
[ ]*19[ ]+movb %ax,%ds
|
||||
[ ]*20[ ]+movb %eax,%ds
|
||||
[ ]*21[ ]+movdb %eax,%mm0
|
||||
[ ]*22[ ]+movqb 0,%mm0
|
||||
[ ]*23[ ]+ldsb 0,%eax
|
||||
[ ]*24[ ]+setnew 0
|
||||
[ ]*25[ ]+movdw %eax,%mm0
|
||||
[ ]*26[ ]+movqw 0,%mm0
|
||||
[ ]*27[ ]+div %cx,%al
|
||||
[ ]*28[ ]+div %cl,%ax
|
||||
[ ]*29[ ]+div %ecx,%al
|
||||
[ ]*30[ ]+imul 10,%bx,%ecx
|
||||
[ ]*31[ ]+imul 10,%bx,%al
|
||||
[ ]*32[ ]+popab
|
||||
[ ]*33[ ]+stil
|
||||
[ ]*34[ ]+aaab
|
||||
[ ]*35[ ]+cwdel
|
||||
[ ]*36[ ]+cwdw
|
||||
[ ]*37[ ]+callww 0
|
||||
[ ]*38[ ]+foo: jaw foo
|
||||
[ ]*39[ ]+jcxzw foo
|
||||
[ ]*40[ ]+jecxzl foo
|
||||
[ ]*41[ ]+loopb foo
|
||||
[ ]*42[ ]+xlatw %es:%bx
|
||||
[ ]*43[ ]+xlatl %es:%bx
|
||||
[ ]*44[ ]+intl 2
|
||||
[ ]*45[ ]+int3b
|
||||
[ ]*46[ ]+hltb
|
||||
[ ]*47[ ]+fstb %st\(0\)
|
||||
[ ]*48[ ]+fcompll 28\(%ebp\)
|
||||
[ ]*49[ ]+fldlw \(%eax\)
|
||||
[ ]*50[ ]+movl \$%ebx,%eax
|
||||
[ ]*51[ ]+insertq \$4,\$2,%xmm2,%ebx
|
||||
[ ]*52[ ]+cvtsi2ssq \(%eax\),%xmm1
|
||||
[ ]*53[ ]+cvtsi2sdq \(%eax\),%xmm1
|
||||
[ ]*54[ ]+fnstsw %eax
|
||||
[ ]*55[ ]+fnstsw %al
|
||||
[ ]*56[ ]+fstsw %eax
|
||||
[ ]*57[ ]+fstsw %al
|
||||
GAS LISTING .*
|
||||
|
||||
|
||||
[ ]*58[ ]+movnti %ax, \(%eax\)
|
||||
[ ]*59[ ]+movntiw %ax, \(%eax\)
|
||||
[ ]*60[ ]+
|
||||
[ ]*61[ ]+\.intel_syntax noprefix
|
||||
[ ]*62[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\]
|
||||
[ ]*63[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\]
|
||||
[ ]*64[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\]
|
||||
[ ]*65[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\]
|
||||
[ ]*66[ ]+movq xmm1, XMMWORD PTR \[esp\]
|
||||
[ ]*67[ ]+movq xmm1, DWORD PTR \[esp\]
|
||||
[ ]*68[ ]+movq xmm1, WORD PTR \[esp\]
|
||||
[ ]*69[ ]+movq xmm1, BYTE PTR \[esp\]
|
||||
[ ]*70[ ]+movq XMMWORD PTR \[esp\],xmm1
|
||||
[ ]*71[ ]+movq DWORD PTR \[esp\],xmm1
|
||||
[ ]*72[ ]+movq WORD PTR \[esp\],xmm1
|
||||
[ ]*73[ ]+movq BYTE PTR \[esp\],xmm1
|
||||
[ ]*74[ ]+fnstsw eax
|
||||
[ ]*75[ ]+fnstsw al
|
||||
[ ]*76[ ]+fstsw eax
|
||||
[ ]*77[ ]+fstsw al
|
||||
[ ]*78[ ]+
|
||||
[ ]*79[ ]+movsx ax, \[eax\]
|
||||
[ ]*80[ ]+movsx eax, \[eax\]
|
||||
[ ]*81[ ]+movzx ax, \[eax\]
|
||||
[ ]*82[ ]+movzx eax, \[eax\]
|
||||
[ ]*83[ ]+
|
||||
[ ]*84[ ]+movnti word ptr \[eax\], ax
|
||||
[ ]*58[ ]+
|
||||
[ ]*59[ ]+movnti %ax, \(%eax\)
|
||||
[ ]*60[ ]+movntiw %ax, \(%eax\)
|
||||
[ ]*61[ ]+
|
||||
[ ]*62[ ]+add \(%si,%esi\), %eax
|
||||
[ ]*63[ ]+add \(%esi,%si\), %eax
|
||||
[ ]*64[ ]+add \(%eiz\), %eax
|
||||
[ ]*65[ ]+add \(%eax\), %eiz
|
||||
[ ]*66[ ]+
|
||||
[ ]*67[ ]+\.intel_syntax noprefix
|
||||
[ ]*68[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\]
|
||||
[ ]*69[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\]
|
||||
[ ]*70[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\]
|
||||
[ ]*71[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\]
|
||||
[ ]*72[ ]+movq xmm1, XMMWORD PTR \[esp\]
|
||||
[ ]*73[ ]+movq xmm1, DWORD PTR \[esp\]
|
||||
[ ]*74[ ]+movq xmm1, WORD PTR \[esp\]
|
||||
[ ]*75[ ]+movq xmm1, BYTE PTR \[esp\]
|
||||
[ ]*76[ ]+movq XMMWORD PTR \[esp\],xmm1
|
||||
[ ]*77[ ]+movq DWORD PTR \[esp\],xmm1
|
||||
[ ]*78[ ]+movq WORD PTR \[esp\],xmm1
|
||||
[ ]*79[ ]+movq BYTE PTR \[esp\],xmm1
|
||||
[ ]*80[ ]+fnstsw eax
|
||||
[ ]*81[ ]+fnstsw al
|
||||
[ ]*82[ ]+fstsw eax
|
||||
[ ]*83[ ]+fstsw al
|
||||
[ ]*84[ ]+
|
||||
[ ]*85[ ]+movsx ax, \[eax\]
|
||||
[ ]*86[ ]+movsx eax, \[eax\]
|
||||
[ ]*87[ ]+movzx ax, \[eax\]
|
||||
[ ]*88[ ]+movzx eax, \[eax\]
|
||||
[ ]*89[ ]+
|
||||
[ ]*90[ ]+movnti word ptr \[eax\], ax
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
.text
|
||||
.allow_index_reg
|
||||
# All the following should be illegal
|
||||
mov (%dx),%al
|
||||
mov (%eax,%esp,2),%al
|
||||
|
@ -58,6 +59,11 @@ foo: jaw foo
|
|||
movnti %ax, (%eax)
|
||||
movntiw %ax, (%eax)
|
||||
|
||||
add (%si,%esi), %eax
|
||||
add (%esi,%si), %eax
|
||||
add (%eiz), %eax
|
||||
add (%eax), %eiz
|
||||
|
||||
.intel_syntax noprefix
|
||||
cvtsi2ss xmm1,QWORD PTR [eax]
|
||||
cvtsi2sd xmm1,QWORD PTR [eax]
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
.*: Assembler messages:
|
||||
.*:3: Error: .*
|
||||
.*:4: Error: .*
|
||||
.*:5: Error: .*
|
||||
.*:6: Error: .*
|
||||
|
@ -61,8 +60,9 @@
|
|||
.*:62: Error: .*
|
||||
.*:63: Error: .*
|
||||
.*:64: Error: .*
|
||||
.*:66: Error: .*
|
||||
.*:65: Error: .*
|
||||
.*:67: Error: .*
|
||||
.*:68: Error: .*
|
||||
.*:70: Error: .*
|
||||
.*:71: Error: .*
|
||||
.*:72: Error: .*
|
||||
|
@ -75,8 +75,6 @@
|
|||
.*:79: Error: .*
|
||||
.*:80: Error: .*
|
||||
.*:81: Error: .*
|
||||
.*:82: Error: .*
|
||||
.*:83: Error: .*
|
||||
.*:84: Error: .*
|
||||
.*:85: Error: .*
|
||||
.*:86: Error: .*
|
||||
|
@ -97,112 +95,143 @@
|
|||
.*:101: Error: .*
|
||||
.*:102: Error: .*
|
||||
.*:103: Error: .*
|
||||
.*:104: Error: .*
|
||||
.*:105: Error: .*
|
||||
.*:106: Error: .*
|
||||
.*:107: Error: .*
|
||||
.*:108: Error: .*
|
||||
.*:109: Error: .*
|
||||
.*:110: Error: .*
|
||||
.*:111: Error: .*
|
||||
.*:112: Error: .*
|
||||
.*:113: Error: .*
|
||||
.*:114: Error: .*
|
||||
.*:115: Error: .*
|
||||
.*:116: Error: .*
|
||||
.*:117: Error: .*
|
||||
GAS LISTING .*
|
||||
|
||||
|
||||
[ ]*1[ ]+\.text
|
||||
[ ]*2[ ]+\# All the following should be illegal for x86-64
|
||||
[ ]*3[ ]+aaa \# illegal
|
||||
[ ]*4[ ]+aad \# illegal
|
||||
[ ]*5[ ]+aam \# illegal
|
||||
[ ]*6[ ]+aas \# illegal
|
||||
[ ]*7[ ]+arpl %ax,%ax \# illegal
|
||||
[ ]*8[ ]+bound %eax,\(%rax\) \# illegal
|
||||
[ ]*9[ ]+calll \*%eax \# 32-bit data size not allowed
|
||||
[ ]*10[ ]+calll \*\(%ax\) \# 32-bit data size not allowed
|
||||
[ ]*11[ ]+calll \*\(%eax\) \# 32-bit data size not allowed
|
||||
[ ]*12[ ]+calll \*\(%r8\) \# 32-bit data size not allowed
|
||||
[ ]*13[ ]+calll \*\(%rax\) \# 32-bit data size not allowed
|
||||
[ ]*14[ ]+callq \*\(%ax\) \# no 16-bit addressing
|
||||
[ ]*15[ ]+daa \# illegal
|
||||
[ ]*16[ ]+das \# illegal
|
||||
[ ]*17[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands
|
||||
[ ]*18[ ]+into \# illegal
|
||||
[ ]*19[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter
|
||||
[ ]*20[ ]+jmpl \*%eax \# 32-bit data size not allowed
|
||||
[ ]*21[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed
|
||||
[ ]*22[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed
|
||||
[ ]*23[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed
|
||||
[ ]*24[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed
|
||||
[ ]*25[ ]+jmpq \*\(%ax\) \# no 16-bit addressing
|
||||
[ ]*26[ ]+lcalll \$0,\$0 \# illegal
|
||||
[ ]*27[ ]+lcallq \$0,\$0 \# illegal
|
||||
[ ]*28[ ]+ldsl %eax,\(%rax\) \# illegal
|
||||
[ ]*29[ ]+ldsq %rax,\(%rax\) \# illegal
|
||||
[ ]*30[ ]+lesl %eax,\(%rax\) \# illegal
|
||||
[ ]*31[ ]+lesq %rax,\(%rax\) \# illegal
|
||||
[ ]*32[ ]+ljmpl \$0,\$0 \# illegal
|
||||
[ ]*33[ ]+ljmpq \$0,\$0 \# illegal
|
||||
[ ]*34[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed
|
||||
[ ]*35[ ]+loopw foo \# No prefix exists to select CX as a counter
|
||||
[ ]*36[ ]+loopew foo \# No prefix exists to select CX as a counter
|
||||
[ ]*37[ ]+loopnew foo \# No prefix exists to select CX as a counter
|
||||
[ ]*38[ ]+loopnzw foo \# No prefix exists to select CX as a counter
|
||||
[ ]*39[ ]+loopzw foo \# No prefix exists to select CX as a counter
|
||||
[ ]*40[ ]+leavel \# can't have 32-bit stack operands
|
||||
[ ]*41[ ]+pop %ds \# illegal
|
||||
[ ]*42[ ]+pop %es \# illegal
|
||||
[ ]*43[ ]+pop %ss \# illegal
|
||||
[ ]*44[ ]+popa \# illegal
|
||||
[ ]*45[ ]+popl %eax \# can't have 32-bit stack operands
|
||||
[ ]*46[ ]+push %cs \# illegal
|
||||
[ ]*47[ ]+push %ds \# illegal
|
||||
[ ]*48[ ]+push %es \# illegal
|
||||
[ ]*49[ ]+push %ss \# illegal
|
||||
[ ]*50[ ]+pusha \# illegal
|
||||
[ ]*51[ ]+pushl %eax \# can't have 32-bit stack operands
|
||||
[ ]*52[ ]+pushfl \# can't have 32-bit stack operands
|
||||
[ ]*53[ ]+popfl \# can't have 32-bit stack operands
|
||||
[ ]*54[ ]+retl \# can't have 32-bit stack operands
|
||||
[ ]*55[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\.
|
||||
[ ]*56[ ]+fnstsw %eax
|
||||
[ ]*57[ ]+fnstsw %al
|
||||
[ ]*2[ ]+\.allow_index_reg
|
||||
[ ]*3[ ]+\# All the following should be illegal for x86-64
|
||||
[ ]*4[ ]+aaa \# illegal
|
||||
[ ]*5[ ]+aad \# illegal
|
||||
[ ]*6[ ]+aam \# illegal
|
||||
[ ]*7[ ]+aas \# illegal
|
||||
[ ]*8[ ]+arpl %ax,%ax \# illegal
|
||||
[ ]*9[ ]+bound %eax,\(%rax\) \# illegal
|
||||
[ ]*10[ ]+calll \*%eax \# 32-bit data size not allowed
|
||||
[ ]*11[ ]+calll \*\(%ax\) \# 32-bit data size not allowed
|
||||
[ ]*12[ ]+calll \*\(%eax\) \# 32-bit data size not allowed
|
||||
[ ]*13[ ]+calll \*\(%r8\) \# 32-bit data size not allowed
|
||||
[ ]*14[ ]+calll \*\(%rax\) \# 32-bit data size not allowed
|
||||
[ ]*15[ ]+callq \*\(%ax\) \# no 16-bit addressing
|
||||
[ ]*16[ ]+daa \# illegal
|
||||
[ ]*17[ ]+das \# illegal
|
||||
[ ]*18[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands
|
||||
[ ]*19[ ]+into \# illegal
|
||||
[ ]*20[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter
|
||||
[ ]*21[ ]+jmpl \*%eax \# 32-bit data size not allowed
|
||||
[ ]*22[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed
|
||||
[ ]*23[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed
|
||||
[ ]*24[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed
|
||||
[ ]*25[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed
|
||||
[ ]*26[ ]+jmpq \*\(%ax\) \# no 16-bit addressing
|
||||
[ ]*27[ ]+lcalll \$0,\$0 \# illegal
|
||||
[ ]*28[ ]+lcallq \$0,\$0 \# illegal
|
||||
[ ]*29[ ]+ldsl %eax,\(%rax\) \# illegal
|
||||
[ ]*30[ ]+ldsq %rax,\(%rax\) \# illegal
|
||||
[ ]*31[ ]+lesl %eax,\(%rax\) \# illegal
|
||||
[ ]*32[ ]+lesq %rax,\(%rax\) \# illegal
|
||||
[ ]*33[ ]+ljmpl \$0,\$0 \# illegal
|
||||
[ ]*34[ ]+ljmpq \$0,\$0 \# illegal
|
||||
[ ]*35[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed
|
||||
[ ]*36[ ]+loopw foo \# No prefix exists to select CX as a counter
|
||||
[ ]*37[ ]+loopew foo \# No prefix exists to select CX as a counter
|
||||
[ ]*38[ ]+loopnew foo \# No prefix exists to select CX as a counter
|
||||
[ ]*39[ ]+loopnzw foo \# No prefix exists to select CX as a counter
|
||||
[ ]*40[ ]+loopzw foo \# No prefix exists to select CX as a counter
|
||||
[ ]*41[ ]+leavel \# can't have 32-bit stack operands
|
||||
[ ]*42[ ]+pop %ds \# illegal
|
||||
[ ]*43[ ]+pop %es \# illegal
|
||||
[ ]*44[ ]+pop %ss \# illegal
|
||||
[ ]*45[ ]+popa \# illegal
|
||||
[ ]*46[ ]+popl %eax \# can't have 32-bit stack operands
|
||||
[ ]*47[ ]+push %cs \# illegal
|
||||
[ ]*48[ ]+push %ds \# illegal
|
||||
[ ]*49[ ]+push %es \# illegal
|
||||
[ ]*50[ ]+push %ss \# illegal
|
||||
[ ]*51[ ]+pusha \# illegal
|
||||
[ ]*52[ ]+pushl %eax \# can't have 32-bit stack operands
|
||||
[ ]*53[ ]+pushfl \# can't have 32-bit stack operands
|
||||
[ ]*54[ ]+popfl \# can't have 32-bit stack operands
|
||||
[ ]*55[ ]+retl \# can't have 32-bit stack operands
|
||||
[ ]*56[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\.
|
||||
[ ]*57[ ]+fnstsw %eax
|
||||
GAS LISTING .*
|
||||
|
||||
|
||||
[ ]*58[ ]+fstsw %eax
|
||||
[ ]*59[ ]+fstsw %al
|
||||
[ ]*60[ ]+in \$8,%rax
|
||||
[ ]*61[ ]+out %rax,\$8
|
||||
[ ]*62[ ]+movzxl \(%rax\),%rax
|
||||
[ ]*63[ ]+movnti %ax, \(%rax\)
|
||||
[ ]*64[ ]+movntiw %ax, \(%rax\)
|
||||
[ ]*65[ ]+
|
||||
[ ]*66[ ]+mov 0x80000000\(%rax\),%ebx
|
||||
[ ]*67[ ]+mov 0x80000000,%ebx
|
||||
[ ]*68[ ]+
|
||||
[ ]*69[ ]+\.intel_syntax noprefix
|
||||
[ ]*70[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword
|
||||
[ ]*71[ ]+movq xmm1, XMMWORD PTR \[rsp\]
|
||||
[ ]*72[ ]+movq xmm1, DWORD PTR \[rsp\]
|
||||
[ ]*73[ ]+movq xmm1, WORD PTR \[rsp\]
|
||||
[ ]*74[ ]+movq xmm1, BYTE PTR \[rsp\]
|
||||
[ ]*75[ ]+movq XMMWORD PTR \[rsp\],xmm1
|
||||
[ ]*76[ ]+movq DWORD PTR \[rsp\],xmm1
|
||||
[ ]*77[ ]+movq WORD PTR \[rsp\],xmm1
|
||||
[ ]*78[ ]+movq BYTE PTR \[rsp\],xmm1
|
||||
[ ]*79[ ]+fnstsw eax
|
||||
[ ]*80[ ]+fnstsw al
|
||||
[ ]*81[ ]+fstsw eax
|
||||
[ ]*82[ ]+fstsw al
|
||||
[ ]*83[ ]+in rax,8
|
||||
[ ]*84[ ]+out 8,rax
|
||||
[ ]*85[ ]+movsx ax, \[rax\]
|
||||
[ ]*86[ ]+movsx eax, \[rax\]
|
||||
[ ]*87[ ]+movsx rax, \[rax\]
|
||||
[ ]*88[ ]+movzx ax, \[rax\]
|
||||
[ ]*89[ ]+movzx eax, \[rax\]
|
||||
[ ]*90[ ]+movzx rax, \[rax\]
|
||||
[ ]*91[ ]+movnti word ptr \[rax\], ax
|
||||
[ ]*92[ ]+calld eax \# 32-bit data size not allowed
|
||||
[ ]*93[ ]+calld \[ax\] \# 32-bit data size not allowed
|
||||
[ ]*94[ ]+calld \[eax\] \# 32-bit data size not allowed
|
||||
[ ]*95[ ]+calld \[r8\] \# 32-bit data size not allowed
|
||||
[ ]*96[ ]+calld \[rax\] \# 32-bit data size not allowed
|
||||
[ ]*97[ ]+callq \[ax\] \# no 16-bit addressing
|
||||
[ ]*98[ ]+jmpd eax \# 32-bit data size not allowed
|
||||
[ ]*99[ ]+jmpd \[ax\] \# 32-bit data size not allowed
|
||||
[ ]*100[ ]+jmpd \[eax\] \# 32-bit data size not allowed
|
||||
[ ]*101[ ]+jmpd \[r8\] \# 32-bit data size not allowed
|
||||
[ ]*102[ ]+jmpd \[rax\] \# 32-bit data size not allowed
|
||||
[ ]*103[ ]+jmpq \[ax\] \# no 16-bit addressing
|
||||
[ ]*58[ ]+fnstsw %al
|
||||
[ ]*59[ ]+fstsw %eax
|
||||
[ ]*60[ ]+fstsw %al
|
||||
[ ]*61[ ]+in \$8,%rax
|
||||
[ ]*62[ ]+out %rax,\$8
|
||||
[ ]*63[ ]+movzxl \(%rax\),%rax
|
||||
[ ]*64[ ]+movnti %ax, \(%rax\)
|
||||
[ ]*65[ ]+movntiw %ax, \(%rax\)
|
||||
[ ]*66[ ]+
|
||||
[ ]*67[ ]+mov 0x80000000\(%rax\),%ebx
|
||||
[ ]*68[ ]+mov 0x80000000,%ebx
|
||||
[ ]*69[ ]+
|
||||
[ ]*70[ ]+add \(%rip,%rsi\), %eax
|
||||
[ ]*71[ ]+add \(%rsi,%rip\), %eax
|
||||
[ ]*72[ ]+add \(,%rip\), %eax
|
||||
[ ]*73[ ]+add \(%eip,%esi\), %eax
|
||||
[ ]*74[ ]+add \(%esi,%eip\), %eax
|
||||
[ ]*75[ ]+add \(,%eip\), %eax
|
||||
[ ]*76[ ]+add \(%rsi,%esi\), %eax
|
||||
[ ]*77[ ]+add \(%esi,%rsi\), %eax
|
||||
[ ]*78[ ]+add \(%eiz\), %eax
|
||||
[ ]*79[ ]+add \(%riz\), %eax
|
||||
[ ]*80[ ]+add \(%rax\), %riz
|
||||
[ ]*81[ ]+add \(%rax\), %eiz
|
||||
[ ]*82[ ]+
|
||||
[ ]*83[ ]+\.intel_syntax noprefix
|
||||
[ ]*84[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword
|
||||
[ ]*85[ ]+movq xmm1, XMMWORD PTR \[rsp\]
|
||||
[ ]*86[ ]+movq xmm1, DWORD PTR \[rsp\]
|
||||
[ ]*87[ ]+movq xmm1, WORD PTR \[rsp\]
|
||||
[ ]*88[ ]+movq xmm1, BYTE PTR \[rsp\]
|
||||
[ ]*89[ ]+movq XMMWORD PTR \[rsp\],xmm1
|
||||
[ ]*90[ ]+movq DWORD PTR \[rsp\],xmm1
|
||||
[ ]*91[ ]+movq WORD PTR \[rsp\],xmm1
|
||||
[ ]*92[ ]+movq BYTE PTR \[rsp\],xmm1
|
||||
[ ]*93[ ]+fnstsw eax
|
||||
[ ]*94[ ]+fnstsw al
|
||||
[ ]*95[ ]+fstsw eax
|
||||
[ ]*96[ ]+fstsw al
|
||||
[ ]*97[ ]+in rax,8
|
||||
[ ]*98[ ]+out 8,rax
|
||||
[ ]*99[ ]+movsx ax, \[rax\]
|
||||
[ ]*100[ ]+movsx eax, \[rax\]
|
||||
[ ]*101[ ]+movsx rax, \[rax\]
|
||||
[ ]*102[ ]+movzx ax, \[rax\]
|
||||
[ ]*103[ ]+movzx eax, \[rax\]
|
||||
[ ]*104[ ]+movzx rax, \[rax\]
|
||||
[ ]*105[ ]+movnti word ptr \[rax\], ax
|
||||
[ ]*106[ ]+calld eax \# 32-bit data size not allowed
|
||||
[ ]*107[ ]+calld \[ax\] \# 32-bit data size not allowed
|
||||
[ ]*108[ ]+calld \[eax\] \# 32-bit data size not allowed
|
||||
[ ]*109[ ]+calld \[r8\] \# 32-bit data size not allowed
|
||||
[ ]*110[ ]+calld \[rax\] \# 32-bit data size not allowed
|
||||
[ ]*111[ ]+callq \[ax\] \# no 16-bit addressing
|
||||
[ ]*112[ ]+jmpd eax \# 32-bit data size not allowed
|
||||
[ ]*113[ ]+jmpd \[ax\] \# 32-bit data size not allowed
|
||||
[ ]*114[ ]+jmpd \[eax\] \# 32-bit data size not allowed
|
||||
GAS LISTING .*
|
||||
|
||||
|
||||
[ ]*115[ ]+jmpd \[r8\] \# 32-bit data size not allowed
|
||||
[ ]*116[ ]+jmpd \[rax\] \# 32-bit data size not allowed
|
||||
[ ]*117[ ]+jmpq \[ax\] \# no 16-bit addressing
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
.text
|
||||
.allow_index_reg
|
||||
# All the following should be illegal for x86-64
|
||||
aaa # illegal
|
||||
aad # illegal
|
||||
|
@ -66,6 +67,19 @@ movntiw %ax, (%rax)
|
|||
mov 0x80000000(%rax),%ebx
|
||||
mov 0x80000000,%ebx
|
||||
|
||||
add (%rip,%rsi), %eax
|
||||
add (%rsi,%rip), %eax
|
||||
add (,%rip), %eax
|
||||
add (%eip,%esi), %eax
|
||||
add (%esi,%eip), %eax
|
||||
add (,%eip), %eax
|
||||
add (%rsi,%esi), %eax
|
||||
add (%esi,%rsi), %eax
|
||||
add (%eiz), %eax
|
||||
add (%riz), %eax
|
||||
add (%rax), %riz
|
||||
add (%rax), %eiz
|
||||
|
||||
.intel_syntax noprefix
|
||||
cmpxchg16b dword ptr [rax] # Must be oword
|
||||
movq xmm1, XMMWORD PTR [rsp]
|
||||
|
|
Loading…
Reference in a new issue