| OLD | NEW |
| (Empty) |
| 1 @hex: | |
| 2 # Due to bug, REP(NE) is not allowed for 16-bit versions of string instruction
s | |
| 3 # (because there would be two non-rex prefixes: rep and data16). | |
| 4 # See http://code.google.com/p/nativeclient/issues/detail?id=1950 | |
| 5 | |
| 6 # mov %edi, %edi | |
| 7 89 ff | |
| 8 # lea (%r15,%rdi,1), %rdi | |
| 9 49 8d 3c 3f | |
| 10 # rep scasw %es:(%rdi), %ax | |
| 11 66 f3 af | |
| 12 @rval: | |
| 13 VALIDATOR: 0000000000000006: 66 f3 af scas
w [%rdi] | |
| 14 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 15 VALIDATOR: Checking jump targets: 0 to 9 | |
| 16 VALIDATOR: Checking that basic blocks are aligned | |
| 17 *** <input> IS UNSAFE *** | |
| 18 @dis: | |
| 19 0000000000000000: 89 ff mov %edi, %edi | |
| 20 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 21 0000000000000006: 66 f3 af scasw [%rdi] | |
| 22 @rdfa_output: | |
| 23 6: [0] unrecognized instruction | |
| 24 return code: 1 | |
| 25 ---------------------------------------------------------------------- | |
| 26 @hex: | |
| 27 # mov %edi, %edi | |
| 28 89 ff | |
| 29 # lea (%r15,%rdi,1), %rdi | |
| 30 49 8d 3c 3f | |
| 31 # repne scasw %es:(%rdi), %ax | |
| 32 66 f2 af | |
| 33 @rval: | |
| 34 VALIDATOR: 0000000000000006: 66 f2 af scas
w [%rdi] | |
| 35 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 36 VALIDATOR: Checking jump targets: 0 to 9 | |
| 37 VALIDATOR: Checking that basic blocks are aligned | |
| 38 *** <input> IS UNSAFE *** | |
| 39 @dis: | |
| 40 0000000000000000: 89 ff mov %edi, %edi | |
| 41 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 42 0000000000000006: 66 f2 af scasw [%rdi] | |
| 43 @rdfa_output: | |
| 44 6: [0] unrecognized instruction | |
| 45 return code: 1 | |
| 46 ---------------------------------------------------------------------- | |
| 47 @hex: | |
| 48 # mov %edi, %edi | |
| 49 89 ff | |
| 50 # lea (%r15,%rdi,1), %rdi | |
| 51 49 8d 3c 3f | |
| 52 # rep stosw %ax, %es:(%rdi) | |
| 53 66 f3 ab | |
| 54 @rval: | |
| 55 VALIDATOR: 0000000000000006: 66 f3 ab stos
w [%rdi] | |
| 56 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 57 VALIDATOR: Checking jump targets: 0 to 9 | |
| 58 VALIDATOR: Checking that basic blocks are aligned | |
| 59 *** <input> IS UNSAFE *** | |
| 60 @dis: | |
| 61 0000000000000000: 89 ff mov %edi, %edi | |
| 62 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 63 0000000000000006: 66 f3 ab stosw [%rdi] | |
| 64 @rdfa_output: | |
| 65 6: [0] unrecognized instruction | |
| 66 return code: 1 | |
| 67 ---------------------------------------------------------------------- | |
| 68 @hex: | |
| 69 # mov %esi, %esi | |
| 70 89 f6 | |
| 71 # lea (%r15,%rsi,1), %rsi | |
| 72 49 8d 34 37 | |
| 73 # rep lodsw %ds:(%rsi), %ax | |
| 74 66 f3 ad | |
| 75 @rval: | |
| 76 VALIDATOR: 0000000000000006: 66 f3 ad lods
w [%rsi] | |
| 77 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 78 VALIDATOR: Checking jump targets: 0 to 9 | |
| 79 VALIDATOR: Checking that basic blocks are aligned | |
| 80 *** <input> IS UNSAFE *** | |
| 81 @dis: | |
| 82 0000000000000000: 89 f6 mov %esi, %esi | |
| 83 0000000000000002: 49 8d 34 37 lea %rsi, [%r15
+%rsi*1] | |
| 84 0000000000000006: 66 f3 ad lodsw [%rsi] | |
| 85 @rdfa_output: | |
| 86 6: [0] unrecognized instruction | |
| 87 return code: 1 | |
| 88 ---------------------------------------------------------------------- | |
| 89 @hex: | |
| 90 # mov %esi, %esi | |
| 91 89 f6 | |
| 92 # lea (%r15,%rsi,1), %rsi | |
| 93 49 8d 34 37 | |
| 94 # mov %edi, %edi | |
| 95 89 ff | |
| 96 # lea (%r15,%rdi,1), %rdi | |
| 97 49 8d 3c 3f | |
| 98 # rep movsw %ds:(%rsi), %es:(%rdi) | |
| 99 66 f3 a5 | |
| 100 @rval: | |
| 101 VALIDATOR: 000000000000000c: 66 f3 a5 movs
w [%rdi], [%rsi] | |
| 102 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 103 VALIDATOR: Checking jump targets: 0 to f | |
| 104 VALIDATOR: Checking that basic blocks are aligned | |
| 105 *** <input> IS UNSAFE *** | |
| 106 @dis: | |
| 107 0000000000000000: 89 f6 mov %esi, %esi | |
| 108 0000000000000002: 49 8d 34 37 lea %rsi, [%r15
+%rsi*1] | |
| 109 0000000000000006: 89 ff mov %edi, %edi | |
| 110 0000000000000008: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 111 000000000000000c: 66 f3 a5 movsw [%rdi], [
%rsi] | |
| 112 @rdfa_output: | |
| 113 c: [0] unrecognized instruction | |
| 114 return code: 1 | |
| 115 ---------------------------------------------------------------------- | |
| 116 @hex: | |
| 117 # mov %esi, %esi | |
| 118 89 f6 | |
| 119 # lea (%r15,%rsi,1), %rsi | |
| 120 49 8d 34 37 | |
| 121 # mov %edi, %edi | |
| 122 89 ff | |
| 123 # lea (%r15,%rdi,1), %rdi | |
| 124 49 8d 3c 3f | |
| 125 # rep cmpsw %es:(%rdi), %ds:(%rsi) | |
| 126 66 f3 a7 | |
| 127 @rval: | |
| 128 VALIDATOR: 000000000000000c: 66 f3 a7 cmps
w [%rdi], [%rsi] | |
| 129 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 130 VALIDATOR: Checking jump targets: 0 to f | |
| 131 VALIDATOR: Checking that basic blocks are aligned | |
| 132 *** <input> IS UNSAFE *** | |
| 133 @dis: | |
| 134 0000000000000000: 89 f6 mov %esi, %esi | |
| 135 0000000000000002: 49 8d 34 37 lea %rsi, [%r15
+%rsi*1] | |
| 136 0000000000000006: 89 ff mov %edi, %edi | |
| 137 0000000000000008: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 138 000000000000000c: 66 f3 a7 cmpsw [%rdi], [
%rsi] | |
| 139 @rdfa_output: | |
| 140 c: [0] unrecognized instruction | |
| 141 return code: 1 | |
| 142 ---------------------------------------------------------------------- | |
| 143 @hex: | |
| 144 # mov %esi, %esi | |
| 145 89 f6 | |
| 146 # lea (%r15,%rsi,1), %rsi | |
| 147 49 8d 34 37 | |
| 148 # mov %edi, %edi | |
| 149 89 ff | |
| 150 # lea (%r15,%rdi,1), %rdi | |
| 151 49 8d 3c 3f | |
| 152 # repne cmpsw %es:(%rdi), %ds:(%rsi) | |
| 153 66 f2 a7 | |
| 154 @rval: | |
| 155 VALIDATOR: 000000000000000c: 66 f2 a7 cmps
w [%rdi], [%rsi] | |
| 156 VALIDATOR: ERROR: More than one (non-REX) prefix byte specified | |
| 157 VALIDATOR: Checking jump targets: 0 to f | |
| 158 VALIDATOR: Checking that basic blocks are aligned | |
| 159 *** <input> IS UNSAFE *** | |
| 160 @dis: | |
| 161 0000000000000000: 89 f6 mov %esi, %esi | |
| 162 0000000000000002: 49 8d 34 37 lea %rsi, [%r15
+%rsi*1] | |
| 163 0000000000000006: 89 ff mov %edi, %edi | |
| 164 0000000000000008: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 165 000000000000000c: 66 f2 a7 cmpsw [%rdi], [
%rsi] | |
| 166 @rdfa_output: | |
| 167 c: [0] unrecognized instruction | |
| 168 return code: 1 | |
| 169 ---------------------------------------------------------------------- | |
| 170 @hex: | |
| 171 # Examples of valid string instructions. | |
| 172 | |
| 173 # DATA16, but no REP/REPNE prefix: | |
| 174 # mov %edi, %edi | |
| 175 89 ff \\ | |
| 176 # lea (%r15,%rdi,1), %rdi | |
| 177 49 8d 3c 3f \\ | |
| 178 # scasw %es:(%rdi), %ax | |
| 179 66 af | |
| 180 | |
| 181 # REP, but no DATA16 prefix: | |
| 182 # mov %edi, %edi | |
| 183 89 ff \\ | |
| 184 # lea (%r15,%rdi,1),%rdi | |
| 185 49 8d 3c 3f \\ | |
| 186 # rep stosb %al, %es:(%rdi) | |
| 187 f3 aa | |
| 188 @rval: | |
| 189 VALIDATOR: Checking jump targets: 0 to 10 | |
| 190 VALIDATOR: Checking that basic blocks are aligned | |
| 191 *** <input> is safe *** | |
| 192 @dis: | |
| 193 0000000000000000: 89 ff mov %edi, %edi | |
| 194 0000000000000002: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 195 0000000000000006: 66 af scasw [%rdi] | |
| 196 0000000000000008: 89 ff mov %edi, %edi | |
| 197 000000000000000a: 49 8d 3c 3f lea %rdi, [%r15
+%rdi*1] | |
| 198 000000000000000e: f3 aa stosb [%rdi] | |
| 199 @rdfa_output: | |
| 200 return code: 0 | |
| OLD | NEW |