tmr232/Sark

IDA 7 byte sized operands listed as size 3

Closed this issue · 3 comments

In IDA version 7, idaapi.dt_3byte == idaapi.dt_byte. This is causing all byte operands to be listed as size 3 instead of size 1.

I believe the issue could be fixed by reversing the order to idaapi.dt_byte and idaapi.dt_3byte in the sark.code.base.DTYP_TO_SIZE dictionary.

As an aside, there is no dt_3byte in the ida_ua module, which I believe is the module containing all the dt_* fields in the idaapi reorganization HexRays did.

I've sent an email to HexRays about this issue as well. I can share any updates they give me here.

This also breaks accessing the register name for byte sized registers.

This is because the incorrect size is being passed to base.get_register_name from Operand.reg.

Received a response from Hex Rays:

Yes, we removed the 3byte operand type from IDA. It is not really used in any processor modules except one or two, where we reimplemented it as a custom data type. Feel free to remove all references to it from your source code.

Closed in #68