The fact that x86. Hasn’t changed its foundation much, isn’t that just a combination of hardware making up for original design shortcomings, while economy keeping better solutions at bay? (Not a chip guy, I’m likely wrong.)
Never did SPARC assembly, but ISTR their registers were basically a ring of groups of registers allowing fast context switches as long as the call depth stayed shallow (fsvo shallow). When the ring was exhausted, you had to stash away in memory.
I knew it, man.
I learned MIPS assembly first, and it was like the registers were all a baseball team, with everyone trained and doing their part to try to get the job done.
When I learned about x86 assembly it was like the registers were a tiny band of wacky misfits who were going around in a van trying to solve mysteries.
- Code segment: fine
- Data segment: It’s weird that you even do “segments” but fine
- Extra segment: …
- F segment: Please stop
- G segment: Stop it
Fantastic description!
Z-80 was much the same: djnz uses C as the loop counter (like the 8086 LOOP used CX iirc), H and L combine to make a 16-bit pointer…
Ken Shirriff regularly posts cool hardware deep-dives and can be followed on fedi at @kenshirriff@oldbytes.space