[fpc-pascal] Free Pascal Support for ARM Architecture
Jonas Maebe
jonas.maebe at elis.ugent.be
Mon Dec 8 22:18:14 CET 2008
On 08 Dec 2008, at 22:00, Prince Riley wrote:
> Sorry, I think you are mistaken.. I did ask which ARM Architecture
> and if
> you follow the thread back you'll see I even gave examples of what the
> assembler options were for ARM
>
> Here is the text of that post ....
I did not understand your questions that way
> ===========================================
> Thanks for that reply ... and yes I meant IA32
>
> A few additional points if I may ..
>
> When you say the FP supports the ARM architecture my specific
> question is
> how does FP 'inform' *the GNU assembler back end of which ARM
> architecture
> is intended ..*.
Answer: it does not inform the GNU assembler back end of which ARM
architecture is intended. The code generator is not "the GNU assembler
backend".
[snip GNU as command line options to select ARM variants]
> *I need to be clear on how FP specifies one of these option
Answer: it does not specify any of those options.
> and how the
> 'assemble' directive within the FP syntax is implemented to use ARM
> register
> and assembler sematics/syntax which the GNU Assembler assumes will
> be set by
> the language 'front end'*
Answer: the frontend (the compiler) does not set any architecture
option for the GNU assembler.
> ==================================================================
>
> if you look at this list you'll see that ARM3,6, and 7 are among the
> options.
Yes, but that's not the point. I think the confusion stems from your
usage of "(GNU) assembler", by which you meant "code generator". The
code generator is not part of the (GNU) assembler, but part of the
compiler.
The "assemble" part of the compiler only consists of either calling an
external assembler (such as the GNU assembler) or using the internal
assembler (e.g., for IA32 and x86_64) to convert the code generated by
the code generator into object code. Code selection happens before
that phase.
The way it basically works is scanner -> parser -> code generator ->
assembler -> linker. The scanner converts the source code into tokens,
the parser converts those tokens into a parse tree, the code generator
converts the parse tree into assembler code, the assembler converts
the assembler code into object code, and the linker links together all
object code (and libraries) into a program or library.
Jonas
More information about the fpc-pascal
mailing list