ohio813 / distorm

Automatically exported from code.google.com/p/distorm
GNU General Public License v3.0
0 stars 0 forks source link

Invalid decompose of FST/FSTP/FIST/FISTP #70

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
In what mode did you try to disassemble (16/32/64)?
32

What is the input buffer (binary stream) you used to reproduce the problem?
Use hex.

// fst         qword ptr [X (0A374E8h)]
const uint8 kFst[] = { 0xDD, 0x15, 0xE8, 0x74, 0xA3, 0x00 };
// fstp        qword ptr [X (0A374E8h)]
const uint8 kFstp[] = { 0xDD, 0x1D, 0xE8, 0x74, 0xA3, 0x00 };
// fist         qword ptr [X (0A374E8h)]
const uint8 kFist[] = { 0xDB, 0x15, 0xE0, 0x74, 0xA3, 0x00 };
// fistp        qword ptr [X (0A374E8h)]
const uint8 kFistp[] = { 0xDB, 0x1D, 0xE0, 0x74, 0xA3, 0x00 };

What is the expected output (or what instruction)?
We expect the flag FLAG_DST_WR to be on.

Which tool did you use to see the expected output?

What do you see instead?

What version of diStorm are you using? On what platform (Python/EXE/other)?
distorm@229

Please provide any additional information below.

The flag should be on to reflect the memory write.

Original issue reported on code.google.com by etienne....@gmail.com on 3 Jun 2013 at 5:27

GoogleCodeExporter commented 9 years ago
Only integer instructions support the destination-write flag.
I might add it for some of the FPU instruction then.
If you could give me a list of what's missing, I would appreciate your help.
Thanks.

Original comment by distorm@gmail.com on 22 Jun 2013 at 8:59

GoogleCodeExporter commented 9 years ago
Added a few more FPU instructions to this category.

Original comment by distorm@gmail.com on 23 Jun 2013 at 8:13