ARM7TDMI
I am trying to understand how effective the undefined instruction exception is at stopping uncontrolled execution in arm mode.
Out of the entire 32bit arm mode instruction space, how many patterns are considered invalid instructions? The docs say that some invalid patterns are not caught by the undefined instruction exception. How many?
From my personal experience, when working with a Coldfire V2 MCU, it is often possible to find what caused an exception by just decoding the exception stack frame. On the other hand, a similar application on an ARM7TDMI-based MCU (STR710 family) would be long lost in the woods before it hit a CPU exception. That's because most exceptions were caused by corrupt pointers (I know, but it was early debugging stage) and the Coldfire CPU would generate an exception on the very first illegal memory access because legal memory space is very limited. I guess the moral of the story is: if you want to catch illegal memory accesses efficiently, get an MCU that supports it.