We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
As I understand the STM32F4 programming manual (DM00046982), or the Cortex M4 TechRefManual, a Cortex M4 processor as the STM32F4 can only work with Thumb mode (T2 I think).
But if I use the ST4Discovery (with STM32F407) with Keil uVision, in the Dissambly I see as well 32bit-ARMv7 code (32 bit commands), as Thumb code (16 bit commands). E. g. for LDR commands it seems to use the Thumb command for small offsets, and the 32-bit ARM command for larger offsets.
This really puzzles me very much - how can I see 32bit-ARMv7 in the dissassembly listing, if the processor can only understand Thumb code?
It is Thumb2! Some instructions are 16 bit and some are 32 bit.
See this for details:
infocenter.arm.com/.../index.jsp
Thank you for the fast answer.
Is "ARMv7" a subset of Thumb-2, or is this exactly Thumb-2?
If I look at the LDR command in the ARMv7 TechRefManual, there are 4 encodings named: - "Encoding T1, All versions of the Thumb instruction set", - "Encoding T2, All versions of the Thumb instruction set", - "Encoding T3, ARMv7", - "Encoding T4, ARMv7"
Can CortexM4 / STM32F4 use all of these 4 encodings? (I assume Thumb-2 has nothing to do with "Encoding T2"?).
... sorry for the questioning, I think I got it now:
ARMv7-M = Thumb-2, and T1-T4 has nothing to do with Thumb-2 (In my last Email I forgot the "-M" at the ecoding types T3 and T4 for LDR). Thank you.