| 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 |