Bernd Oppolzer wrote:
Am 01.09.2013 20:30, schrieb Mark Morgan Lloyd:
The problem here is that compiler design has moved on a lot since
Wirth's day. It's not difficult to write a compiler using e.g.
recursive descent or Meta-II which emits instructions for an abstract
stack-based machine, and that might be a good match for a CPU with a
small number of general-purpose registers. However it can be extremely
difficult to optimise this for a modern CPU with a large register
file, it's far more effective to give the frontend a rough idea of how
many registers the backend has available to it and to warn it about
known peculiarities.
Agreed, but:
you write:
it's far more effective to give the frontend a rough idea ...
the frontend?
For the purpose of this discussion: the compiler source files in e.g.
/usr/local/src/fpc/fpcbuild/fpcsrc/compiler (but not in subdirectories).
Note assembler writers in ag*pas, which are somewhat scattered.
The CPU-specific backends are in subdirectories, e.g.
../compiler/sparc, .../compiler/mips and so on.
I wanted to avoid using terms like "portable", "non-machine-specific"
and so on because the point has been made that there isn't an entirely
clean division.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel