OLD | NEW |
| (Empty) |
1 # Copyright (c) 2011 The Native Client Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 # | |
5 # This is a simple test file to see if we have things working. | |
6 # When run in self documenting mode and command free lines, | |
7 # are echoed to the output. | |
8 # | |
9 # Lines with command line options (up to and including the pound sign) are | |
10 # also copied to output. Application (ncdis) is then run on those options, | |
11 # generating corresponding output. It is assume that the text after the | |
12 # pound sign is the output generated by ncdis. Hence, this file is self | |
13 # documenting in the sense that the input matches the output. | |
14 # | |
15 # Note: Useful command line options are: | |
16 # -i=XXXXXXXX | |
17 # Specifies a (even length) hexidecimal value defined the sequence | |
18 # of bytess that defines the instruction to translate. | |
19 # | |
20 # --pc=XXXXXXXX | |
21 # Specifies the value of the program counter, when it is pointing | |
22 # to the instruction to be decoded. In not specified, the program | |
23 # counter is assumed to be zero. | |
24 # | |
25 # Note: This file tests x86-32 instructions. | |
26 | |
27 -i=55 # 0: 55
push %ebp | |
28 -i=8d742600 # 0: 8d 74 26
00 lea %esi, 0x0[%esi] | |
29 --pc=80483f8 -i=e8fffeffff # 80483f8: e8 ff fe
ff ff call 0x80482fc | |
30 | |
31 # Check move immediates (b8-bf). | |
32 -i=b888776655 # 0: b8 88 77
66 55 mov %eax, 0x55667788 | |
33 -i=b988776655 # 0: b9 88 77
66 55 mov %ecx, 0x55667788 | |
34 -i=ba88776655 # 0: ba 88 77
66 55 mov %edx, 0x55667788 | |
35 -i=bb88776655 # 0: bb 88 77
66 55 mov %ebx, 0x55667788 | |
36 -i=bc88776655 # 0: bc 88 77
66 55 mov %esp, 0x55667788 | |
37 -i=bd88776655 # 0: bd 88 77
66 55 mov %ebp, 0x55667788 | |
38 -i=be88776655 # 0: be 88 77
66 55 mov %esi, 0x55667788 | |
39 -i=bf88776655 # 0: bf 88 77
66 55 mov %edi, 0x55667788 | |
40 | |
41 -i=66b88877 # 0: 66 b8 88
77 mov %eax, 0x7788 | |
42 -i=66b98877 # 0: 66 b9 88
77 mov %ecx, 0x7788 | |
43 -i=66ba8877 # 0: 66 ba 88
77 mov %edx, 0x7788 | |
44 -i=66bb8877 # 0: 66 bb 88
77 mov %ebx, 0x7788 | |
45 -i=66bc8877 # 0: 66 bc 88
77 mov %esp, 0x7788 | |
46 -i=66bd8877 # 0: 66 bd 88
77 mov %ebp, 0x7788 | |
47 -i=66be8877 # 0: 66 be 88
77 mov %esi, 0x7788 | |
48 -i=66bf8877 # 0: 66 bf 88
77 mov %edi, 0x7788 | |
49 | |
50 -i=67b888776655 # 0: 67 b8 88
77 66 55 mov %eax, 0x55667788 | |
51 -i=67bf88776655 # 0: 67 bf 88
77 66 55 mov %edi, 0x55667788 | |
52 | |
53 # Check direct moves on 32-bit constant addresses. | |
54 -i=a044332211 # 0: a0 44 33
22 11 mov %al, [0x11223344] | |
55 # Note: The following will use %ax instead of %eax when using validator decoder | |
56 -i=66a144332211 # 0: 66 a1 44
33 22 11 mov %eax, [0x11223344] | |
57 -i=a144332211 # 0: a1 44 33
22 11 mov %eax, [0x11223344] | |
58 -i=a244332211 # 0: a2 44 33
22 11 mov [0x11223344], %al | |
59 # Note: The following entry will use %ax instead of %eax when using validator de
coder | |
60 -i=66a344332211 # 0: 66 a3 44
33 22 11 mov [0x11223344], %eax | |
61 -i=a344332211 # 0: a3 44 33
22 11 mov [0x11223344], %eax | |
62 | |
63 # The following don't print out the right syntax for matched instructions, | |
64 # and is intended to show the difference between the --full_decoder and --valida
tor_decoder | |
65 # cases. | |
66 -i=0000 # 0: 00 00
add [%eax], %eax | |
67 -i=00c0 # 0: 00 c0
add %eax, %eax | |
68 -i=01c0 # 0: 01 c0
add %eax, %eax | |
69 -i=0318 # 0: 03 18
add %ebx, [%eax] | |
70 -i=031d20000000 # 0: 03 1d 20
00 00 00 add %ebx, [0x20] | |
71 -i=020400 # 0: 02 04 00
add %eax, [%eax + %eax] | |
72 # The following lines test whether we recognized predefined nops. | |
73 -i=660f1f440000 # 0: 66 0f 1f
44 00 00 nop | |
74 -i=660f1f840000000000 # 0: 66 0f 1f
84 00 00 00 00 00 nop | |
75 -i=662e0f1f840000000000 # 0: 66 2e 0f
1f 84 00 00 00 00 00 nop | |
76 -i=66662e0f1f840000000000 # 0: 66 66 2e
0f 1f 84 00 00 00 00 00 nop | |
77 -i=6666662e0f1f840000000000 # 0: 66 66 66
2e 0f 1f 84 00 00 00 00 00 nop | |
78 -i=666666662e0f1f840000000000 # 0: 66 66 66
66 2e 0f 1f 84 00 00 00 00 00 nop | |
79 -i=66666666662e0f1f840000000000 # 0: 66 66 66
66 66 2e 0f 1f 84 00 00 00 00 00 nop | |
80 -i=6666666666662e0f1f840000000000 # 0: 66 66 66
66 66 66 2e 0f 1f 84 00 00 00 00 00 nop | |
81 | |
82 -i=0fae10 # 0: 0f ae 10
ldmxcsr [%eax] | |
83 -i=0fae18 # 0: 0f ae 18
stmxcsr [%eax] | |
84 -i=90 # 0: 90
nop | |
85 -i=6690 # 0: 66 90
nop | |
86 -i=89f6 # 0: 89 f6
mov %esi, %esi | |
87 -i=8d7600 # 0: 8d 76 00
lea %esi, 0x0[%esi] | |
88 -i=8d742600 # 0: 8d 74 26
00 lea %esi, 0x0[%esi] | |
89 -i=8db600000000 # 0: 8d b6 00
00 00 00 lea %esi, 0x0[%esi] | |
90 -i=8db42600000000 # 0: 8d b4 26
00 00 00 00 lea %esi, 0x0[%esi] | |
91 -i=8dbc2700000000 # 0: 8d bc 27
00 00 00 00 lea %edi, 0x0[%edi] | |
92 -i=8dbf00000000 # 0: 8d bf 00
00 00 00 lea %edi, 0x0[%edi] | |
93 -i=0f1f00 # 0: 0f 1f 00
nop | |
94 -i=0f1f4000 # 0: 0f 1f 40
00 nop | |
95 -i=0f1f8000000000 # 0: 0f 1f 80
00 00 00 00 nop | |
96 -i=0f1f840000000000 # 0: 0f 1f 84
00 00 00 00 00 nop | |
97 -i=0f1f440000 # 0: 0f 1f 44
00 00 nop | |
98 -i=0f0b # 0: 0f 0b
ud2 | |
OLD | NEW |