blob: 5653b5f2b57177df288be5c002b5aca46dae4d35 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
syscall: 0.573
instruction: 0.298
runtime: 0.129
[i386] Parity Flag Not Set On xor %eax,%eax
Tested against qemu-1.7.0 as well as qemu-1.7.50 on Debian Sid
Steps To Reproduce
$ cat > prog.hex << EOF
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
02 00 03 00 01 00 00 00 54 80 04 08 34 00 00 00
00 00 00 00 00 00 00 00 34 00 20 00 01 00 28 00
00 00 00 00 01 00 00 00 00 00 00 00 00 80 04 08
00 80 04 08 76 00 00 00 76 00 00 00 05 00 00 00
00 10 00 00
31 c0
9c
b8 04 00 00 00
bb 01 00 00 00
89 e1
ba 04 00 00 00
cd 80
b8 01 00 00 00
bb 00 00 00 00
cd 80
EOF
$ xxd -p -r prog.hex > prog
$ chmod 700 prog
$ ./prog | hexdump -vC
00000000 46 02 00 00 |F...|
00000004
$ qemu-i386 ./prog | hexdump -vC
00000000 42 02 00 00 |B...|
00000004
On the other hand if [xor %eax, %eax] (31 c0) is replaced with sub %eax,%eax (29 c0), then the parity flag is set correctly.
|