nice to hear about the bl808; looks like the ox64 is also 8 dollars

by 'arm' i mean armv3 (such as arm700) without thumb, with only 33 instructions; armv6 and armv7 are almost perfectly backwards compatible, perfectly unless you're doing something really weird. i definitely don't mean aarch64. thumb is very nice if you're size-optimizing your code, but it adds a lot of headaches (though there are some improvements too). we're talking about introducing computer science students to assembly language, which admittedly i don't have much experience doing. but, my guess from the little experience i do have is that for that purpose anything that makes it easier to understand the mapping from your intention to an actual runnable instruction is going to be helpful

and arm has a number of features that make high-performance implementations more difficult but make it easier to write assembly: ldm/stm, preincrement and postincrement addressing modes, a two-register addressing mode, bit-shifted operands, bit-shifted indices, and conditional execution. even the instruction format is surprisingly readable; you can just about read a hex dump digit by digit. for the most part everything is delightfully boring, just getting out of your way. the only real dark spots i've found from this point of view are loading constants, the small register set, the lack of a division instruction, interrupt handling (fixed in cortex at the expense of speed), and thumb

risc-v is pretty simple, and dramatically superior if you're teaching computer engineering and building a cpu rather than computer science and writing assembly programs. it's even more delightfully boring than arm. it omits all the features of arm i listed above that make high-performance implementations so difficult, and, just as you say, has fewer instruction formats (in part because it isn't wasting bits on conditionalization). rv32i has 40 instructions, more than armv3 but only slightly, and the larger register set is more comfortable. rvc is brilliant, totally avoiding the hassles of thumb (core dumps when the t bit is wrong, more painful disassembly, and the arbitrary-seeming restrictions on what you're allowed to do) while actually slightly beating it at density. and rv64c exists, while aarch64 thumb doesn't

but, because of the missing but problematic conveniences of arm, my risc-v assembly always comes out to be a lot longer than my arm assembly, and that makes it harder to read. it's also much harder to read in a hex dump, to the point that i don't bother trying, because the instruction formats are carefully optimized for hardware, which is probably what you want in an instruction set you're going to implement and use. the m extension, bundling division with multiplication, is poorly thought out for actual hardware but well thought out for introductory classes; including a division instruction is helpful for learners but adds punishing complexity to low-end hardware in exchange for little performance gain. i forget the name of the new multiplication-only extension that fixes this

speaking of extensions, the main selling point of risc-v is that you can extend it however you like, so people do, and the result is an enormous diversity of instruction sets, more even than for arm. for the most part you can just ignore this unless you're writing an operating system tho

risc-v is probably going to eat arm's lunch rather quickly in the microcontroller world, but it's probably going to be decades before you can't buy a new stm32f104 or similar arm chip. both risc-v and arm make it possible to run the same architecture on your workstation and your microcontroller, which is a nice reduction in the unnecessary complexity of the whole system, but for the time being it's a lot more practical to run linux on an arm than on a risc-v, something which will hopefully change this year.

the hottest microcontrollers out there from my point of view are the esp32-c3, the stm32 family, the ch32v003, the apollo3, and the pms150c, which is its own weird 8-bit architecture; the others are evenly divided between arm and risc-v. there isn't an x86 even in the running and hasn't been for decades