suggest an old cpu architecture that doesn't fully suck
category: general [glöplog]
Mornin fellas. I'm on a quest to learn yet another old CPU to add to my mental trophy cabinet of "assembly language flavors I know". So far 68k, z80 and x86 (8086 and IA-32) are in there, and... well as much as I do like x86 in some regards, and z80 is nice too, none of those have even come close to 68k in terms of flexibility and plain simply Making Sense™.
I did try to get into SH-2 for a while, just because it's quite similar to the 68k in its ISA and addressing modes, but there are (to my knowledge) barely any interesting SH-2 systems apart from the 32X.
So yeah, if someone knows any arch, preferably that's not load-store like the z80 nor a freaking unicorn like x86, tell me. There must be, right?
I did try to get into SH-2 for a while, just because it's quite similar to the 68k in its ISA and addressing modes, but there are (to my knowledge) barely any interesting SH-2 systems apart from the 32X.
So yeah, if someone knows any arch, preferably that's not load-store like the z80 nor a freaking unicorn like x86, tell me. There must be, right?
No.
Quote:
No.
Damn. 68k will rule forever I guess
I guess depends on how old you want. PS2 and PS3 has interesting stuff going on CPU wise.
ARM32 old enough? I find it a pleasure to write code for. It definitely is load/store, though. But so ist SH, no?
I've been told that. I've also been told that the PS1's CPU is a good place to start playing with MIPS because it's almost a standard core AFAIK. PS2 is where they started packing extra vector units and peripherals in the CPU, and PS3 is where crap got insane. They might be interesting chips to program but I'm not comfortable crossing the line between CPU generations that expected to be targeted by humans and those that expected to be targeted by compilers. That's the main reason I never bothered playing with x86-64 or the later x86 extensions... things just got stupid real quick.
I've wanted to touch PS2 for a while though. This might be the time.
I've wanted to touch PS2 for a while though. This might be the time.
PCSX2 is quite a mature emulator and has good debugging I've seen, too
Quote:
ARM32 old enough? I find it a pleasure to write code for. It definitely is load/store, though. But so ist SH, no?
ARM is nice. Haven't delved too much into it to say much more about it though. You can call SH load-store, because technically it is, but its indirect addressing modes are rich enough it almost doesn't matter. It almost feels like writing a stripped down 68k, which I guess is why they went for SH-2 in the 32X.
For PS2 you would usually run C/C++ with some mixed assembly on the main CPU, but for the vector units you would write assembly for sure. There is a tool called VCL that made it a bit easier, but to have max perf you would usually have to write in manually.
When I did our PS2 demo (about 20 years ago (lol, times sure files)) I only ran on hw, but PCSX2 should be pretty good these days. That being said I saw some capture of our demo from it (dunno version) and it looked incorrect, but it may be good these days.
It's a fun platform where you can optimize quite a bit if you use hardware correctly.
When I did our PS2 demo (about 20 years ago (lol, times sure files)) I only ran on hw, but PCSX2 should be pretty good these days. That being said I saw some capture of our demo from it (dunno version) and it looked incorrect, but it may be good these days.
It's a fun platform where you can optimize quite a bit if you use hardware correctly.
Quote:
You can call SH load-store, because technically it is, but its indirect addressing modes are rich enough it almost doesn't matter.
OK. You can say the same about ARM32 then. Not so much Thumb, although that ist still quite OK to write.
There's also nice platforms. All the Acorn machines, GBA and other ARM based handhelds, ...
Quote:
All the Acorn machines
Yeah right.
Surprised that nobody mentioned good old 6502 yet. Enough addressing modes and definitely not a unicorn, but an almost zen like exercise in simplicity instead. :)
(also a lot of platforms to choose from)
(also a lot of platforms to choose from)
I guess 6502 was ruled out by "preferably that's not load-store like the z80" - and if 6502 is an option, then Motorola 6800, esp. 6809, is probably the better option.
Proper Archimedes era ARM is lovely.
Gotcha ARM lovers, GBA and archimeees sound like fun. I’d have to look properly into its subsets and supersets because ARM32 is a pretty wide umbrella, but added to my list of things to play with whenever I’m bored. About PS2, it is a nice system but emoon probably makes a lot of sense saying you’d program the MIPS core in C... MIPS IV is a total monster.
About 6800, 6502 and derivatives, I don’t fully discard them and don’t think I like to shit on load-store architectures (because even that is a wide spectrum), but it’s just that I’m so spoiled by the 68k’s supreme approach to register-memory and its ISA orthogonality (even though it breaks in places) that it gets difficult to get comfortable with anything else. At least yet.
About 6800, 6502 and derivatives, I don’t fully discard them and don’t think I like to shit on load-store architectures (because even that is a wide spectrum), but it’s just that I’m so spoiled by the 68k’s supreme approach to register-memory and its ISA orthogonality (even though it breaks in places) that it gets difficult to get comfortable with anything else. At least yet.
Mind that m68k didn't invent orthogonal instruction sets, nor was it the first register-memory architecture. But i guess things like PDP-11 aren't quite in your scope either.
Quote:
I guess 6502 was ruled out by "preferably that's not load-store like the z80" - and if 6502 is an option, then Motorola 6800, esp. 6809, is probably the better option.
Akshually (finger waggle) according to Wikipedia the 6502 isn't Load-Store but Register-Memory - all the ALU opcodes always work on immediates or memory locations for their second argument.
(not trying to mansplain the 6502 to you, just being pedantic about the definition :D)
Quote:
But i guess things like PDP-11 aren't quite in your scope either.
I have written PDP-11 assembly before and it’s a blast. I have an Elektronika BK I got second hand, and it’s a very nice thing to pick up from time to time in place of a PDP-11 I’ll never have.
Quote:
does MSP430 then also count? or AVR??Quote:But i guess things like PDP-11 aren't quite in your scope either.
I have written PDP-11 assembly before and it’s a blast. I have an Elektronika BK I got second hand, and it’s a very nice thing to pick up from time to time in place of a PDP-11 I’ll never have.
other contenders: SuperFX, TMS320, V810/V850/RH850
Quote:
Well, actually i took OP's meaning to want something like a 2-operand machine, such as MOV Rx, MEM in one instruction. Then i looked up "load-store" after my post and found... it's something else, and it goes quite far into RISC machines. :D Anyways, OP with its rather juvenile use of expletives, didn't sound like 6502 and friends would be up its alley.(not trying to mansplain the 6502 to you, just being pedantic about the definition :D)
Sigh... meant more like "such as ADD Rx, MEM" in one instruction (and with orthogonality). :) You get the drift, i hope. :D
TMS9900
Quote:
Then i looked up "load-store" after my post and found... it's something else, and it goes quite far into RISC machines. :D Anyways, OP with its rather juvenile use of expletives, didn't sound like 6502 and friends would be up its alley.
Well, I generally use load-store and register-memory to differentiate how the CPUs let you address resources and how that's exposed in their ISA; internally they might be doing something completely different, so I don't like to get pedantic with these things because they are loose terms, in my opinion. More than getting the taxonomy of processors 100% right, I think the important thing is that we make ourselves clear, which I think has happened so far in this thread, so all good ;)
Load-store and register-memory are mostly used in the RISC vs. CISC realm nowadays, which the CPUs we're talking about predate, so it might've been incorrect from my part to start the thread with a false dichotomy.
BTW, thanks to kb_ for mentioning the 6502's case, I just read an instruction reference and true, a lot of them including ALU ones operate on absolute or absolute indexed memory (also increment/decrement ABSOLUTE memory, wow!!). The z80 can do add/subtract with indirect memory source and increment/decrement with indirect memory destination but not absolute.
Quote:
other contenders: SuperFX, TMS320, V810/V850/RH850
V850... that rings a bell for sure. Didn't Nintendo use a V850 core for the Virtual Boy?
Quote:
…increment/decrement ABSOLUTE memory…
To me, this feels like an essential feature for a microcontroller.