blob: c30dc410710d141879cc2370a413a63689321bd1 (
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
|
semantic: 0.990
instruction: 0.944
mistranslation: 0.452
other: 0.286
x86 ADOX and ADCX semantic bug
Description of problem
The result of instruction ADOX and ADCX are different from the CPU. The value of one of EFLAGS is different.
Steps to reproduce
Compile this code
void main() {
asm("push 512; popfq;");
asm("mov rax, 0xffffffff84fdbf24");
asm("mov rbx, 0xb197d26043bec15d");
asm("adox eax, ebx");
}
Execute and compare the result with the CPU. This problem happens with ADCX, too (with CF).
CPU
OF = 0
QEMU
OF = 1
Additional information
This bug is discovered by research conducted by KAIST SoftSec.
|