File: x86-64-inval.s

package info (click to toggle)
binutils 2.31.1-16
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 309,412 kB
  • sloc: ansic: 1,161,194; asm: 638,508; cpp: 128,829; exp: 68,580; makefile: 55,828; sh: 22,360; yacc: 14,238; lisp: 13,272; perl: 2,111; ada: 1,681; lex: 1,652; pascal: 1,446; cs: 879; sed: 195; python: 154; xml: 95; awk: 25
file content (118 lines) | stat: -rw-r--r-- 3,624 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
	.text
	.allow_index_reg
# All the following should be illegal for x86-64
        aaa		# illegal
        aad		# illegal
        aam		# illegal
        aas		# illegal
        arpl %ax,%ax	# illegal
        bound %eax,(%rax) # illegal
	calll *%eax	# 32-bit data size not allowed
        calll *(%ax)	# 32-bit data size not allowed
        calll *(%eax)	# 32-bit data size not allowed
        calll *(%r8)	# 32-bit data size not allowed
        calll *(%rax)	# 32-bit data size not allowed
	callq *(%ax)	# no 16-bit addressing
        daa		# illegal
        das		# illegal
        enterl $0,$0	# can't have 32-bit stack operands
        into		# illegal
foo:	jcxz foo	# No prefix exists to select CX as a counter
	jmpl *%eax	# 32-bit data size not allowed
	jmpl *(%ax)	# 32-bit data size not allowed
	jmpl *(%eax)	# 32-bit data size not allowed
	jmpl *(%r8)	# 32-bit data size not allowed
	jmpl *(%rax)	# 32-bit data size not allowed
	jmpq *(%ax)	# no 16-bit addressing
        lcalll $0,$0	# illegal
        lcallq $0,$0	# illegal
        ldsl %eax,(%rax) # illegal
        ldsq %rax,(%rax) # illegal
        lesl %eax,(%rax) # illegal
        lesq %rax,(%rax) # illegal
        ljmpl $0,$0	# illegal
        ljmpq $0,$0	# illegal
        ljmpq *(%rax)	# 64-bit data size not allowed
	loopw foo	# No prefix exists to select CX as a counter
	loopew foo	# No prefix exists to select CX as a counter
	loopnew foo	# No prefix exists to select CX as a counter
	loopnzw foo	# No prefix exists to select CX as a counter
	loopzw foo	# No prefix exists to select CX as a counter
        leavel		# can't have 32-bit stack operands
        pop %ds		# illegal
        pop %es		# illegal
        pop %ss		# illegal
        popa		# illegal
        popl %eax	# can't have 32-bit stack operands
        push %cs	# illegal
        push %ds	# illegal
        push %es	# illegal
        push %ss	# illegal
        pusha		# illegal
        pushl %eax	# can't have 32-bit stack operands
        pushfl		# can't have 32-bit stack operands
	popfl		# can't have 32-bit stack operands
	retl		# can't have 32-bit stack operands
	insertq $4,$2,%xmm2,%ebx # The last operand must be XMM register.
	fnstsw %eax
	fnstsw %al
	fstsw %eax
	fstsw %al
	in $8,%rax
	out %rax,$8
movzxl (%rax),%rax
movnti %ax, (%rax)
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]
	movq xmm1, DWORD PTR [rsp]
	movq xmm1, WORD PTR [rsp]
	movq xmm1, BYTE PTR [rsp]
	movq XMMWORD PTR [rsp],xmm1
	movq DWORD PTR [rsp],xmm1
	movq WORD PTR [rsp],xmm1
	movq BYTE PTR [rsp],xmm1
	fnstsw eax
	fnstsw al
	fstsw eax
	fstsw al
	in rax,8
	out 8,rax
movsx ax, [rax]
movsx eax, [rax]
movsx rax, [rax]
movzx ax, [rax]
movzx eax, [rax]
movzx rax, [rax]
movnti word ptr [rax], ax
	calld eax	# 32-bit data size not allowed
	calld [ax]	# 32-bit data size not allowed
	calld [eax]	# 32-bit data size not allowed
	calld [r8]	# 32-bit data size not allowed
	calld [rax]	# 32-bit data size not allowed
	callq [ax]	# no 16-bit addressing
	jmpd eax	# 32-bit data size not allowed
	jmpd [ax]	# 32-bit data size not allowed
	jmpd [eax]	# 32-bit data size not allowed
	jmpd [r8]	# 32-bit data size not allowed
	jmpd [rax]	# 32-bit data size not allowed
	jmpq [ax]	# no 16-bit addressing
	mov eax,[rax+0x876543210] # out of range displacement