Closed
Description
I'm working on Emu68 project and since yesterday use capstone to print the translation results to the console. I have noticed that in case of FPU loads and stores exactly the same op_str is generated. This is not the case in case of integer family of instructions.
Steps to reproduce. The following code:
fmove.d fp0, -(a7)
fmove.d (a7)+, fp1
rts
Generates a binary stream:
f2 27 74 00 f2 1f 54 80 4e 75
Disassembled or checked in other tools (ODA for example) one may notice that the code is correct. The disassembly from capstone is however broken in op_str:
[JIT] 36c00000: fmove.d -(a7), fp0 -> 00000000: str d8, [x29, #-8]!
[JIT] 36c00004: fmove.d (a7)+, fp1 -> 00000004: ldr d9, [x29], #8
Since pre-decrement and post-increment modes are allowed for both loads and stores on m68k it cannot be distinguished based on op_str what kind of instruction it actually is. The current op_str suggest that both fmoved instructions are loads from memory.
Metadata
Metadata
Assignees
Labels
No labels