Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: New Vax - future directions :-)
> On Jul 5, 2021, at 5:50 PM, Mouse <mouse%Rodents-Montreal.ORG@localhost> wrote:
>
>>> The idea that an operation that takes a single register as an argument woul$
>
> That's certainly a defensible position. I'm not sure whether I agree.
> I see arguments each way.
>
> But I'm curious: what's the difference between CLRQ R0 (operates on R1
> as well) and PUSHL R0 (operates on SP as well)? Does PUSHL upset you
> too, and, if not, why the difference? (I see plenty of possible
> reasons; I'm curious about yours. If, that is, PUSHL doesn't bother
> you similarly.)
The difference is that PUSHL is defined as “push long into the stack", and it would behave equivalently in either mode. You can consider that a syntactic alias for the equivalent MOVL statement, and I I would not object for the same reason.
My problem with CLRQ R0 is that is **necessarily** behaves radically differently in 32-bit mode vs a hypothetical 64-bit mode, because in 64-bit mode the register is Q-wide, so it would only operate on one register.
> Would you feel better if the assembler syntax were "CLRQ R0-R1" or some
> such instead?
No, I’d PREFER if “CLRQ R0” on a 32-bit system threw an illegal instruction fault :-). But, as you say, I’m a bit late in my outrage.
> Does it also bother you that 3/4 of the bytes that exist in registers
> are not accessible using byte instructions? Why or why not?
No, because they behave equivalently in 32-bit mode vs a hypothetical 64-bit mode (ok, ok, 7/8 in that case, but you get my point :-)
And before you get tripped up about buy “mode bit changes behavior of the control flow insns”, note that the control flow insns are implicitly defined as “manipulate a register’s worth of data”, and the registers are necessarily bigger in a hypothetical 64-bit mode.
-- thorpej
Home |
Main Index |
Thread Index |
Old Index