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 #00000000: 55
push %ebp | |
28 -i=8d742600 #00000000: 8d 74 26
00 lea %esi, %ds:[%esi+%esp*1] | |
29 --pc=80483f8 -i=e8fffeffff #080483f8: e8 ff fe
ff ff call 0x80482fc | |
30 | |
31 # Check move immediates (b8-bf). | |
32 -i=b888776655 #00000000: b8 88 77
66 55 mov %eax, 0x55667788 | |
33 -i=b988776655 #00000000: b9 88 77
66 55 mov %ecx, 0x55667788 | |
34 -i=ba88776655 #00000000: ba 88 77
66 55 mov %edx, 0x55667788 | |
35 -i=bb88776655 #00000000: bb 88 77
66 55 mov %ebx, 0x55667788 | |
36 -i=bc88776655 #00000000: bc 88 77
66 55 mov %esp, 0x55667788 | |
37 -i=bd88776655 #00000000: bd 88 77
66 55 mov %ebp, 0x55667788 | |
38 -i=be88776655 #00000000: be 88 77
66 55 mov %esi, 0x55667788 | |
39 -i=bf88776655 #00000000: bf 88 77
66 55 mov %edi, 0x55667788 | |
40 | |
41 -i=66b88877 #00000000: 66 b8 88
77 mov %ax, 0x7788 | |
42 -i=66b98877 #00000000: 66 b9 88
77 mov %cx, 0x7788 | |
43 -i=66ba8877 #00000000: 66 ba 88
77 mov %dx, 0x7788 | |
44 -i=66bb8877 #00000000: 66 bb 88
77 mov %bx, 0x7788 | |
45 -i=66bc8877 #00000000: 66 bc 88
77 mov %sp, 0x7788 | |
46 -i=66bd8877 #00000000: 66 bd 88
77 mov %bp, 0x7788 | |
47 -i=66be8877 #00000000: 66 be 88
77 mov %si, 0x7788 | |
48 -i=66bf8877 #00000000: 66 bf 88
77 mov %di, 0x7788 | |
49 | |
50 -i=67b888776655 #00000000: 67 b8 88
77 66 55 mov %eax, 0x55667788 | |
51 -i=67bf88776655 #00000000: 67 bf 88
77 66 55 mov %edi, 0x55667788 | |
52 | |
53 # Check direct moves on 32-bit constant addresses. | |
54 -i=a044332211 #00000000: 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 #00000000: 66 a1 44
33 22 11 mov %ax, [0x11223344] | |
57 -i=a144332211 #00000000: a1 44 33
22 11 mov %eax, [0x11223344] | |
58 -i=a244332211 #00000000: 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 #00000000: 66 a3 44
33 22 11 mov [0x11223344], %ax | |
61 -i=a344332211 #00000000: 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 #00000000: 00 00
add %ds:[%eax], %al | |
67 -i=00c0 #00000000: 00 c0
add %al, %al | |
68 -i=01c0 #00000000: 01 c0
add %eax, %eax | |
69 -i=0318 #00000000: 03 18
add %ebx, %ds:[%eax] | |
70 -i=031d20000000 #00000000: 03 1d 20
00 00 00 add %ebx, 0x20 | |
71 -i=020400 #00000000: 02 04 00
add %al, %ds:[%eax+%eax*1] | |
72 # The following lines test whether we recognized predefined nops. | |
73 -i=660f1f440000 #00000000: 66 0f 1f
44 00 00 nop | |
74 -i=660f1f840000000000 #00000000: 66 0f 1f
84 00 00 00 00 00 nop | |
75 -i=662e0f1f840000000000 #00000000: 66 2e 0f
1f 84 00 00 00 00 00 nop | |
76 -i=66662e0f1f840000000000 #00000000: 66 66 2e
0f 1f 84 00 00 00 00 00 nop | |
77 -i=6666662e0f1f840000000000 #00000000: 66 66 66
2e 0f 1f 84 00 00 00 00 00 nop | |
78 -i=666666662e0f1f840000000000 #00000000: 66 66 66
66 2e 0f 1f 84 00 00 00 00 00 nop | |
79 -i=66666666662e0f1f840000000000 #00000000: 66 66 66
66 66 2e 0f 1f 84 00 00 00 00 00 nop | |
80 -i=6666666666662e0f1f840000000000 #00000000: 66 66 66
66 66 66 2e 0f 1f 84 00 00 00 00 00 nop | |
81 | |
82 -i=0fae10 #00000000: 0f ae 10
ldmxcsr %ds:[%eax] | |
83 -i=0fae18 #00000000: 0f ae 18
stmxcsr %ds:[%eax] | |
84 -i=90 #00000000: 90
nop | |
85 -i=6690 #00000000: 66 90
nop | |
86 -i=89f6 #00000000: 89 f6
mov %esi, %esi | |
87 -i=8d7600 #00000000: 8d 76 00
lea %esi, %ds:[%esi] | |
88 -i=8d742600 #00000000: 8d 74 26
00 lea %esi, %ds:[%esi+%esp*1] | |
89 -i=8db600000000 #00000000: 8d b6 00
00 00 00 lea %esi, %ds:[%esi] | |
90 -i=8db42600000000 #00000000: 8d b4 26
00 00 00 00 lea %esi, %ds:[%esi+%esp*1] | |
91 -i=8dbc2700000000 #00000000: 8d bc 27
00 00 00 00 lea %edi, %ds:[%edi+%esp*1] | |
92 -i=8dbf00000000 #00000000: 8d bf 00
00 00 00 lea %edi, %ds:[%edi] | |
93 -i=0f1f00 #00000000: 0f 1f 00
nop | |
94 -i=0f1f4000 #00000000: 0f 1f 40
00 nop | |
95 -i=0f1f8000000000 #00000000: 0f 1f 80
00 00 00 00 nop | |
96 -i=0f1f840000000000 #00000000: 0f 1f 84
00 00 00 00 00 nop | |
97 -i=0f1f440000 #00000000: 0f 1f 44
00 00 nop | |
98 -i=0f0b #00000000: 0f 0b
ud2 | |
OLD | NEW |