[fpc-devel] ARM vs Thumb2 - can't have both

Jeppe Græsdal Johansen jjohan07 at student.aau.dk
Tue Aug 23 17:42:51 CEST 2011


Is it really that big a deal?

I think the negatives outweigh the positives in the changes implied 
here. Say what you want about the priciples about the instruction 
sets(ARM and Thumb2), but they still share 95% of the backend code.

When you're dealing with lowlevel targets like embedded arm you'll still 
need to know the RTL code pretty well. The build system isn't really 
very complex either. I personally see no reason to change the way it is

Den 23-08-2011 16:01, John Clymer skrev:
> Digging some more around it today, came up with the following idea...
>
> In the rtl/embedded folder - there is the "system" file for "ARM" - it 
> is ALL pascal - and compiles to either of Thumb2 or ARMV4 - but not both.
>
> In that folder's Makefile.fpc, the units to be built are listed - the 
> could be switched to listing directories to get built.
>
> One folder for ARMV4, one for Thumb2.  A "system" file and rtl.cfg 
> file sits in each folder.  The "system" file just bounces back down 
> and includes the current system files from the rtl/embedded folder, 
> but the library gets built in the core specific folder.
>
> That's the easy part, the more difficult part will to be to get the 
> compiler to choose the correct system file.  That is, the "usual" ARM 
> folder where the libraries sit would need to have the same 2 seperate 
> subdirectorie, the compiler would have to choose which one based on 
> the core it's currently compiling for.
>
> John
>
> ------------------------------------------------------------------------
> *From:* David Welch <dwelch at dwelch.com>
> *To:* FPC developers' list <fpc-devel at lists.freepascal.org>
> *Sent:* Tue, August 23, 2011 10:39:50 AM
> *Subject:* Re: [fpc-devel] ARM vs Thumb2 - can't have both
>
>
> Most if not all of my references to thumb meant the original ARMv4T 
> thumb instruction set, definitely not the thumb2 extensions, nor ARMv5 
> or ARMv6 extensions.
>
> If for example you had a thumb backend to fpc, you could easily solve 
> this problem, all of these libraries would run on both platforms, one 
> compiler, one set of libraries, compiled one time.
>
> There is no thumb backend at the moment, this is the first problem to 
> that solution.
>
> I figure most folks would not want to sink to the lowest common 
> denominator.
>
> I would then recommend splitting the arm/arm7/ARMv4 architecture from 
> the cortex-m3/ARMv7m, as implemented now they are two incompatible 
> instruction sets.  One instruction set happens to share the name of 
> the company, move beyond that sticking point and create two architectures.
>
> The third alternative is do what others do and build two sets of 
> libraries, one for each cpu type if that is the preferred term to 
> distinguish arm and thumb2.  Even if they are in the same library file 
> but by name the linker extracts the arm cpu whatsit function from the 
> thumb2 cpu whatsit function it is still two compilations of the 
> whatsit function.
>
> You really have to pick one of those solutions, same instruction set 
> or compile the libraries twice either as two arches build one or the 
> other but not both, or two cpus within an arch and both/all cpus for 
> an arch get built when the arch compiler is built.
>
> David
>
> On 08/22/2011 01:15 AM, John Clymer wrote:
> > Yes, all my references of Thumb meant Thumb2.
> >
>
> _______________________________________________
> fpc-devel maillist  - fpc-devel at lists.freepascal.org 
> <mailto:fpc-devel at lists.freepascal.org>
> http://lists.freepascal.org/mailman/listinfo/fpc-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20110823/79b0daa1/attachment.html>


More information about the fpc-devel mailing list