Open plafosse opened 8 years ago
@withzombies asks that we prioritize these instructions: movk, ldaxr, stlxr, madd, ccmp, cinc
I have an arm64 binary where some forms of b
are not properly handled.
b.eq and b.vs specifically in one function. I can provide the binary out of band.
I am noticing that ld2
is showing unimplemented.
@ChrisKader That is because LD2
is part of the vector SIMD instructions that we do not support lifting of yet. In general, we don't support vector instructions because we do not currently have a way to represent vector operations in our ILs.
Thank you for your quick reply @galenbwill
Is it common for BN to only identify a single line entry for instructions that are unimplemented? There are several instances in this binary where the LD2 instruction is used but only one line is tagged. I assume this may be the only like that code resolves to?
Actually it seems that this specific instance of LD2 is using the additional imm
/Xm
parameter of the LD2 you linked previously.
There are several instances in this binary where the LD2 instruction is used but only one line is tagged.
That is probably an effect of the inexact mapping from IL instructions to instructions in the disassembly. This is especially true for HLIL (or in your case, Pseudo-C), where the mapping can be many-to-many: one asm instruction can contribute to multiple HLIL instructions, but one HLIL instruction generally maps to several MLIL, LLIL, and disassembly instructions.
The following is the list of instructions which we currently disassemble and lift (Fully or Partially). If you have any instructions which differ from this table, there is likely a bug or a documentation failure, please let us know (also if you could provide the opcodes that would be great).