I only know x86 and 6502 assembly, I'm curious what other assemblers exist, and what's different about them. Difference down to bytecode level.
I'm curious what's different about arm, and other processors used in different game consoles and older/modern phones. Don't have the time to study each processor individually. Also, I want to buy a hardware that I'll be able to know everything about, down to every transistor, something I can fix cheap enough.
Traditional ARM and MIPS have 4-byte-long instructions and can be big- or little-endian.
They are load-store CPUs, that is, there are no memory to memory move/add/etc instructions.
They are very regular/orthogonal CPUs, having very few registers or instructions that are hardwired together (like x86 xlat with bx and al, loop with cx, (i)div with ax and dx, etc).
Both have many 32-bit general-purpose registers (16 in ARM, 32 in MIPS).
ARM has flags. MIPS doesn't.
ARM supports branchless conditional execution of instructions. MIPS doesn't.
Originally both required naturally aligned memory operands.
MIPS memory operands are of the form: register+offset. ARM also has reg1+reg2*scale, AFAIR.
ARM has PC-relative addressing. MIPS doesn't.
ARM may have no divider on chip.
MIPS branches have delay slots.
Modern ARM and MIPS processors are more interesting and powerful. There're more compact ISAs (e.g. Thumb, Thumb2, MIPS16e, microMIPS, nanoMIPS). And 64-bit as well.
Buy the i8051 if you wan to know everything down to a single transistor. Reportedly, the smallest implementation has 2700 gates. The i8086 had some 20000+. MIPS32 - 1 to 5 million as far as I can see. Modern stuff is hopelessly large and complex for a single person to understand fully in any reasonable amount of time.
Here's one compiled table: A History of Microprocessor Transistor Count 1971 to 2013.
I could also write a bit about i8051, i8080/Z80, TMS320C54xx. But really, if you get the right doc/datasheet, you can see most of stuff yourself. There's usually enough overview and tables/diagrams to give you an idea of how things are the same as or different from what you already know.
68000 was the first assembly language I programmed. Many similarities between x86 and 68k. Both are CISC, encodings are various lengths. I miss the MOVEM instruction - multiple registers can be moved at once to/from memory - it's like a universal adapter for calling conventions. TRAP instruction is like INT. Memory operations can automatically advance the pointer - which made for rather tight loops.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum