While disassembling a mips binary, IDA Pro attempts to disassemble into mips 16 mode, even though It's mips 32 ISA.
Below is that code snippet.

.text:XXXXXXXX       .set nomips16 # <= ??
.text:XXXXXXXX 3C    .byte 0x3C        
.text:XXXXXXXX 02    .byte    2
.text:XXXXXXXX       .set mips16   # <= ??
.text:XXXXXXXX 80    .byte 0x80
.text:XXXXXXXX 87    .byte 0x87
.text:XXXXXXXX 8C    .byte 0x8C
.text:XXXXXXXX 42    .byte 0x42 

IDA arbitrarily set this as mips16, and repeatedly disassemble here as mips16.
Which makes me crazy.

How to forcefully disassemble here as mips 32 ISA?
(Manually? or Automatically using IDA Plugins?)


Two options:

  1. at the .set mips16 line, press Alt-G, choose mips16 and set the value to 0.
    enter image description here
  2. Press Ctrl-G to display the list of segment register changepoints, pick the mips16 list and delete the wrong entries with value of 1. enter image description here

Note: it's best that there are no existing instructions at the addresses where you change the mips16 pseudoregister value, so it is recommended to undefine those areas first then recreate the instructions in proper ISA.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.