The site and tutorials started from the multi-platform build scripts I put together to make the original ChibiAkumas V1.666, It felt others could benefit from them, so I made some tutorials and put them on line
The tutorials were far more popular than the game, so I was motivated to start learning more assembly languages, making more build scripts and tutorials... well it got a bit out of hand!!!
You can see all the CPU's and systems I've covered here: https://www.assemblytutorial.com/
iberator•3mo ago
I highly recommend to pick up ASM programming on Z80 or 6502 CPUs: it is MUCH MUCH easier and straight forward than modern x86 ASM with 1600+ instructions.
brucehoult•3mo ago
But I suggest RISC-V RV32I or RV32E [1] is a great option too. Only 37 instructions that a compiler would generate from C (etc), mostly simple register-to-register arithmetic and control flow, plus byte/half/word load/store with only one addressing mode.
It's actually, I would say, slightly simpler to learn what the instructions are than 6502 or Z80, and *vastly* easier to use to write useful programs with.
And it's not only for emulator, you can buy a vast range of new hardware today, ranging from 10c microcontrollers (with 2k RAM, 16k flash for the program, 48 MHz) up to a $2500 64 core 2 GHz 128GB RAM workstation, with in the middle ESP32s for a couple of bucks, Raspberry Pi Pico 2 or Milk-V Duo (Linux! In 64MB at 1.0 GHz) for $5, and on to quad core 1.5 or 1.6 GHz Linux SBCs for $20 (VisionFive 2 Lite), $30-$50 (Orange Pi RV or RV2 with 2-8 GB RAM) and so on.
Online tutorial:
https://dramforever.github.io/easyriscv/#my-first-risc-v-ass...
[1] 16 registers instead of 32, as seen in e.g. the $0.10 CH32V003 microcontroller
brucehoult•3mo ago
https://www.chibialiens.com/riscv/
leoc•3mo ago
whobre•3mo ago
It is far more complicated than 6502 or even Z80. Just compare the Easy6502 with EasyRiscV tutorials if you don’t believe me.
brucehoult•3mo ago
HOW is RV32I more complicated than 6502 or Z80? I sure can't see it, please explain.
There are more registers, but that's not complicated because they all behave exactly the same as each other (with the sole exception of the Zero register always reading as 0) and every register can be used for any operand of any instruction.