OLD | NEW |
(Empty) | |
| 1 BITS: 64 |
| 2 OUTCOME: invalid |
| 3 |
| 4 # This file does some simple tests to see if we recognize when the REP/REPNE (F2
F3) |
| 5 # prefix bytes are allowed. |
| 6 |
| 7 # The following is an example of an instruction without the REP/REPNE prefix. |
| 8 # add %al, %al |
| 9 asm: add %al,%al |
| 10 hex: 00 c0 |
| 11 |
| 12 |
| 13 # The following is the same instruction with an illegal REP prefix. |
| 14 hex: f3 00 c0 |
| 15 nc_out: ERROR: Use of REP (F3) prefix for instruction not allowed by Native Clie
nt |
| 16 |
| 17 |
| 18 # The following is the same instruction with an illegal REPNE prefix. |
| 19 hex: f2 00 c0 |
| 20 nc_out: ERROR: Use of REPNE (F2) prefix for instruction not allowed by Native Cl
ient |
| 21 |
| 22 |
| 23 # The following is an example of a multibyte instruction explicitly requiring |
| 24 # a REP prefix. |
| 25 # movss %xmm0, [%rdx] |
| 26 asm: movss (%rdx),%xmm0 |
| 27 hex: f3 0f 10 02 |
| 28 nc_out: ERROR: Invalid base register in memory offset |
| 29 |
| 30 |
| 31 # The following is an example of a multibyte instruction explicitly requiring |
| 32 # a REPNE prefix. |
| 33 # movsd [%rsp+0x10], %xmm2 |
| 34 asm: movsd %xmm2,0x10(%rsp) |
| 35 hex: f2 0f 11 54 24 10 |
| 36 |
| 37 |
| 38 # The following is an example of an instruction that can get a REP prefix. |
| 39 # insb |
| 40 asm: insb (%dx),%es:(%rdi) |
| 41 hex: 6c |
| 42 nc_out: ERROR: This instruction has been marked illegal by Native Client |
| 43 nc_out: ERROR: Segment memory reference not allowed |
| 44 |
| 45 |
| 46 # The same instrucition with a REP prefix. |
| 47 asm: rep insb (%dx),%es:(%rdi) |
| 48 hex: f3 6c |
| 49 nc_out: ERROR: This instruction has been marked illegal by Native Client |
| 50 nc_out: ERROR: Segment memory reference not allowed |
| 51 |
| 52 |
| 53 # The same instruction with a REPNE prefix. |
| 54 asm: repnz insb (%dx),%es:(%rdi) |
| 55 hex: f2 6c |
| 56 nc_out: ERROR: This instruction has been marked illegal by Native Client |
| 57 nc_out: ERROR: Use of REPNE (F2) prefix for instruction not allowed by Native Cl
ient |
| 58 nc_out: ERROR: Segment memory reference not allowed |
| 59 |
| 60 |
| 61 # The following is an example of an instruction that can get a REP/REPNE prefix. |
| 62 # cmpsb |
| 63 asm: cmpsb %es:(%rdi),%ds:(%rsi) |
| 64 hex: a6 |
| 65 nc_out: ERROR: Segment memory reference not allowed |
| 66 nc_out: ERROR: Segment memory reference not allowed |
| 67 |
| 68 |
| 69 # The same instruction with a REP prefix. |
| 70 asm: repz cmpsb %es:(%rdi),%ds:(%rsi) |
| 71 hex: f3 a6 |
| 72 nc_out: ERROR: Segment memory reference not allowed |
| 73 nc_out: ERROR: Segment memory reference not allowed |
| 74 |
| 75 |
| 76 # The same instruction with a REPNE prefix |
| 77 asm: repnz cmpsb %es:(%rdi),%ds:(%rsi) |
| 78 hex: f2 a6 |
| 79 nc_out: ERROR: Segment memory reference not allowed |
| 80 nc_out: ERROR: Segment memory reference not allowed |
| 81 |
OLD | NEW |