From: "Felipe Monteiro de Carvalho" <[EMAIL PROTECTED]>
On 11/1/07, Marco van de Voort <[EMAIL PROTECTED]> 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. _______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to