Sujet : Re: Compiler use of instructions (was: Oops)
De : johnl (at) *nospam* taugh.com (John Levine)
Groupes : comp.archDate : 12. May 2024, 22:46:34
Autres entêtes
Organisation : Taughannock Networks
Message-ID : <v1rdbq$205$1@gal.iecc.com>
References : 1 2 3 4
User-Agent : trn 4.0-test77 (Sep 1, 2010)
According to Anton Ertl <
anton@mips.complang.tuwien.ac.at>:
Of course, if the performance cost of these features is so high that
compiler writers prefer to avoid the full-featured call instruction,
the instruction misses the target, too.
The Vax suffered badly from the second system syndrome, in which its
designers loaded it up with all the stuff that wouldn't fit on a
PDP-11. Its design also seems to assume a world where main memory is
expensive and microcode ROM is much faster, hence the dense byte coded
instructions that demand to be decoded one operand at a time and the
tiny 512 byte pages.
I also don't think they thought through the costs of implementing
their design. The Vax chapter in the Computer Engineering book says
that they wanted to have a single system wide procedure call, which is
fine, but it should have been evident even at the time that all of the
memory traffic for saving and restoring registers, including ones the
routine doesn't need, would be really slow.
It's perfectly possible to have a standard calling sequence without
baking it all into microcode. All of the languages on S/360 use the
same calling sequence, but it's made from several instructions, and
you can leave out the ones you don't need, e.g., providing a new save
area in leaf routines, or stack management in non-recursive routines.
-- Regards,John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",Please consider the environment before reading this e-mail. https://jl.ly