Sujet : Re: Why I've Dropped In
De : tkoenig (at) *nospam* netcologne.de (Thomas Koenig)
Groupes : comp.archDate : 13. Jun 2025, 07:03:02
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <102geum$38g45$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11
User-Agent : slrn/1.0.3 (Linux)
Stephen Fuld <
sfuld@alumni.cmu.edu.invalid> schrieb:
No. Other systems in the S/360 time frame (i.e. before virtual memory)
used a system "base register", that was hidden from the user (but was in
its context), that was set by the OS when the program was loaded, or if
it was swapped out, when it was swapped in again. It was reloaded
whenever the program gained control of the CPU. Besides the advantage
of not requiring a user register for that purpose, it allowed a program
to be swapped in to a different memory address than it was swapped out
from, a feature the S/360 didn't enjoy.
It was supposed to, but I belive that was one of the earliest
failures that they noticed, and should have realized before:
their memory to memory instructions did not have base+offset+index.
Also, how was storing a pointer to somewhere supposed to work
for swapping out/swapping in?
You would only have to store it as an offset to a base pointer,
so basically a "fat pointer" containing both base and index
register. Of course, nobody did that.
They really didn't think that one through.
Which brings me to one of my favorite musings... how would a /360
have looked with the benefit of things that could/should have been
seen at the time? PC-relative branches with 16 bit offset and
ARM-style condition codes come to mind (introduced with the /390,
I believe), as could be binary floats (don't save those few gates).
Also, just discussed: Throw out the base registers and put in
memory operations with 16-bit offset.