Sujet : Re: Why VAX Was the Ultimate CISC and Not RISC
De : mitchalsup (at) *nospam* aol.com (MitchAlsup1)
Groupes : comp.archDate : 11. Mar 2025, 19:56:52
Autres entêtes
Organisation : Rocksolid Light
Message-ID : <1ad795d74196830d2232d4f0b50ac2e4@www.novabbs.org>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
User-Agent : Rocksolid Light
On Tue, 11 Mar 2025 18:15:06 +0000, Stephen Fuld wrote:
On 3/11/2025 10:44 AM, MitchAlsup1 wrote:
When you do change names, can you spell LD and ST instead of MOV ??
>
Yes, please LD / ST it is so much clearer what is going on. Less trouble
getting confused by the placement of operands.
>
I always put the memory operand second, which breaks the pattern of
having the destination operand first. Otherwise the destination is
first.
>
I go cross-eyed reading code that is a whole lot of moves.
>
I agree.
>
I wonder if the different preferences is at least partially due to
whether the person has a hardware or a software background?
Even when both LD and ST are written MOV there is a different OpCode
for the inbound MOV versus the outbound MOV, so, in effect, they are
really different instructions requiring different pipeline semantics.
Only (O N L Y) when one has a memory to memory move instruction can
the LDs and STs be MOVs. VAX had this, BJX* does not.
One should argue that different pipeline semantics requires a different
OpCode--and you already have said OpCode having different bit patterns
and different signedness semantics different translation access rights
, ... At the HW level about the only thing LD has in common with ST is
the way the address is generated--although MIPS did something different.
The idea is
that when hardware guys see the instruction, they think in terms of
register ports (read versus write), what is required of the memory
system (somewhat different for loads versus stores), etc. However
software guys think of a language construct, e.g. X = Y, which is
MARY and MARY2 used X = Y to mean the value in X is deposited into Y.
Both were left to right only languages. This should surprise most !!
{{Although to be fair, Mary used the =: operator to perform assign.}}
It took me 40 years of writing specifications to get to the point where
I can write a specification such that neither the uninformed benevolent
reader nor the malicious engineer can misread that specification. MOV
is one of those things that makes getting the specification perfect
harder--and down the road, you too will figure out why I carry this
torch ...
logically a move. I don't know if this is right, but I think it is
interesting.
>
A somewhat related question, if one wants to copy the contents of R3
into R2, is that a load or a store? :-)
In several RISC ISAs it is an ADD #0 or OR #0, however, in My 66000
we get a MOV instruction (reg-reg only) as a degenerate version of
the CMOV instruction {Hey, fell out for free}