-
Notifications
You must be signed in to change notification settings - Fork 5
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Firstly, thank you very much for your work. I've got a few questions with your implementations and some C++-specific stuff but overall it's looking good
@@ -275,6 +328,108 @@ class AArch64ArchitectureExtension : public ArchitectureHook { | |||
return false; | |||
} | |||
|
|||
bool LiftFMOV(cs_insn* instr, LowLevelILFunction& il) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This instruction has 3 variants, FMOV (register), FMOV (general) and FMOV (scalar, immediate). We should definitely be handling these cases (or at a minimum just the register and general case).
Please also add your new instructions to the README |
4056127
to
a264e3e
Compare
I believe I've addressed all your comments except for the other FMOV variants. That's a tomorrow problem. |
Only the same-size/non-converting form of FMOV is lifted, not the rounding or extending forms. Also fixed a NULL-deref of `instr`
Just did some more STL clean-up, MRS is lookin' good in the HLIL view |
I believe I've implemented the rest of FMOV, though I'm not 100% convinced all the cases are accurately lifted (esp. the truncating / extending / shifting). My understanding of fmov could be off. Also note that the version of capstone pinned in the submodule here does not disassemble some of the instructions in the test file, but I tested those by bumping to capstone's next branch locally. I'm sure this lifting logic could use some factoring, but that'll likely come more easily while implementing other floating point instructions in the future. |
Looks great. We'll get this merged and deal with Capstone soon. |
Only the same-size/non-converting form of FMOV is lifted, not the
rounding or extending forms.
Also fixed a NULL-deref of
instr
I'm sure my C++ is atrocious, I hardly ever use the STL.