Hacker News new | ask | show | jobs
by crusso 4478 days ago
After learning 6502 assembly when I was a teenager, I was floored by the beauty and straightforward cleanliness of the 68000 used by Macs and then the similar assembly of the VAX.

x86_64 is just plain ugly. While I admire the backward compatibility, it's sad that this nasty-looking architecture won out. I'm really glad that the compiler handles it.

3 comments

I was not there at the time of 6502, but imo ARM assembly is simpler (relative to x86_64).

I would go as far to say I really love debug things on RISC instruction set.

At the time of 6502 you were truly on command. I didn't do as much Z80 but I guess it was similar in this particular respect.

Things got really out of hand from AT on (80286). IMO that's not Personal Computing anymore, but rather Home Computer. You are mostly a consumer, even if you develop in ASM. You delegate control of your hardware completely.

I'd recommend anyone to learn Commodore 64 coding inside out. Or maybe Spectrum 48K. These are not the simplest machines of their time but they allow you to do a lot and were popular enough that almost everything that truly matters in computing exists for these architectures. And you can fathomably grok them inside out to such a level it will blow your mind.

If you start from 8080/Z80 and work your way up, you will have a very different perspective. 16-bit (and especially 32-bit) x86 looks quite regular if you see it in the right way; although IMHO the 64-bit extension wasn't designed as well as the move to 32-bit.
I did Z80 back in the day and I think x86 is a mess, ever since 286 at the very least. It's absolutely terrible. Not just because of the ASM itself but because of the whole OS/computing paradigm it grew with.
Well, I always thought that the motorola 6809 was much more attractive. As a compiler writer during those days, the lack of regularity of the 8080, z80, were a pain.
ASM is not made to be read by humans but by computers.
Actually, Assembly is sometimes called Mnemonic Assembly. Mnemonic roughly means "a device such as a pattern of letters, ideas, or associations that assists in remembering something." Assembly was developed to help humans write machine code more easily. It is machine code that is not for humans. Assembly certainly is. (Although, as a historical note, humans have often written raw machine code in a number ways, including toggling it in via switches)
Modern assembly less and less so, but it definitively was originally intended for humans, and for quite some time a lot of fairly substantial programs were handwritten in assembly.

When I was in my teens I even occasionally resorted to compling C code and disassembling it to work with it, because I preferred M68k assembly to the C source, and the C compilers of the time were horribly inefficient - I could often delete pointless lines and reassign registers etc. almost as fast as I could read the code...