Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] Re: Beginner questions ---> Thumb != 16-bit data!

2005-08-26 by Charles Manning

On Saturday 27 August 2005 00:46, y4krys wrote:
> What is the mode your compiler is set to?  In THUMB mode all data
> must be 16 bits long.  ARM can add shifts to load some 32-bit values
> to registers, but not always.

There is an often-spouted fallacy that Thumb mode is like x86 16-bit mode with 
16-bit data/registers. This is not so.

Thumb is only a 16-bit encoding of a subset of the the ARM instructions. The 
Thumb instructions are effectively decoded in hardware (no overhead) to 
generate an underlying ARM instruction.

Thumb instructions still process data as 32-bit entities using 32-bit 
registers, using 32-bit literal pools etc.

The only difference as far as data handling is concerned is that Thumb has a 
reduced number of bits, so the values handled by mov immediate instructions 
is limited.

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.