[fpc-devel] More on arm4, armi and thumb

Yury Sidorov jura at cp-lab.com
Thu Nov 1 13:16:39 CET 2007


From: "Felipe Monteiro de Carvalho" 
<felipemonteiro.carvalho at gmail.com>
> On 11/1/07, Marco van de Voort <marcov at stack.nl> wrote:
>> It seems that when you branch, in the instruction you can encode if 
>> the
>>  instructionset of the target is thumb or not.
>
> So, currently fpc set's all branches to use arm4 mode
>
> And C++ apps compiled could check what the system is using and use a
> if to either call in arm4 or call in thumb mode. The strange thing 
> is
> that this is a bit arbitrary. There is nothing special about an OS
> call, it's just a call like any other. I wonder where does the
> compiler get the information of if the function is in arm4 or thumb
> mode.

FPC just do calls using BL command. It expects that all procedures are 
ARM4.
C compilers has option called thumb interworking which wraps each 
procedure call with code which checks for procedure mode and performs 
necessary mode swithes. It will slowdown calls.

Also as Marco said interworking code can be added or not depending of 
object file instruction set.

Yury. 



More information about the fpc-devel mailing list