Am 01.09.2013 16:12, schrieb Jonas Maebe:
So my question is: is it possible to modify the outcome of step 2 (the linear
assembler representation) depending on the target platform
The linear assembler representation is already 100% platform-specific (as Sven
mentioned above). FPC does not have a platform-independent internal RTL
(register transfer language) representation.
Thank you.
So my assumptions so far were plain wrong.
The difference between platforms is already in the stages above stage 2.
That is (cited from Sven's mail):
<citation>
Also the compile process of FPC is roughly this:
- for each used unit:
- parse the unit and generate a node tree for each
procedure/function/method (basically platform independant)
- generate a CPU specific linear assembler representation of each
node tree (this representation is independant of the specific assembler
used)
- if an external assembler (e.g. GNU as) is used: convert the
assembler lists to assembler files
- call the assembler (internal assemblers work on the assembler
lists directly) to generate the object file
- for external linkers (e.g. GNU ld): write a linkscript to instrument
the external linker
- call the linker (internal linkers work directly on the in memory
information the compiler has gathered)
</citation>
only the first step - node tree - is platform independant, and
the translations from there is already CPU specific - oh, I see,
it's written there - I looked at the word "independant" in the
paranthese - my fault ...
Sorry for that ...
Then the main effort is to understand what the contents of the node tree
mean
and to build another variant of step 2 (for z-Arch).
Kind regards
Bernd
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel