Important Notice: Our web hosting provider recently started charging us for additional visits, which was unexpected. In response, we're seeking donations. Depending on the situation, we may explore different monetization options for our Community and Expert Contributors. It's crucial to provide more returns for their expertise and offer more Expert Validated Answers or AI Validated Answers. Learn more about our hosting issue here.

Why is NoICE disassembling my ARM code as Thumb code (or vice versa)?

0
Posted

Why is NoICE disassembling my ARM code as Thumb code (or vice versa)?

0

Processors with multiple instruction sets are a pain for a disassembler – how do you know how to disassemble a given chunk of memory? This isn’t a problem at run time – if the processor’s T-bit is set, then it executes Thumb instructions. If not, it executes ARM instructions. But you may be disassembling a piece of code far from where the processor is executing, and its Thumbness or ARMity is unrelated to the processor’s current state. NoICE provides four options (on the View menu) to control the disassembler: • Force to ARM • Force to Thumb • Follow the CPSR T bit (useful when single-stepping through code that you don’t have source for, but otherwise not usually useful) • “Auto” which takes hints from a debug file. This works, of course, only if your debug file contains the hints. (The common hints understood by NoICE are symbols of the form $a and $t, respectively, at the beginning of ARM and Thumb sections; and odd addresses for Thumb symbols. If you are always seeing Thumb, you may

Related Questions

What is your question?

*Sadly, we had to bring back ads too. Hopefully more targeted.