This book by Stephen Marz seems to be a great addition to the Arpaci-Dousseau's "Operating Systems: Three Easy Pieces" (<a href="https://pages.cs.wisc.edu/~remzi/OSTEP/" rel="nofollow">https://pages.cs.wisc.edu/~remzi/OSTEP/</a>).<p>Stephen also wrote a great blog article series on building your own RISC-V OS in Rust (<a href="https://osblog.stephenmarz.com" rel="nofollow">https://osblog.stephenmarz.com</a>), so I'm really looking forward to reading his computer architecture book (and probably using it in my course).
emu86 emulates x86, ARM, RISC-V, and WASM instruction sets in Python and in Jupyter Notebooks (which can be graded with ottergrader, nbgrader,)<p>assembler/virtual_machine.py:
<a href="https://github.com/gcallah/Emu86/blob/master/assembler/virtual_machine.py">https://github.com/gcallah/Emu86/blob/master/assembler/virtu...</a> :<p>- class RISCVMachine(VirtualMachine): <a href="https://github.com/gcallah/Emu86/blob/master/assembler/virtual_machine.py#L643">https://github.com/gcallah/Emu86/blob/master/assembler/virtu...</a><p>- class WASMMachine(VirtualMachine): <a href="https://github.com/gcallah/Emu86/blob/master/assembler/virtual_machine.py#L752">https://github.com/gcallah/Emu86/blob/master/assembler/virtu...</a><p>assembler/RISCV/key_words.py:
<a href="https://github.com/gcallah/Emu86/blob/master/assembler/RISCV/key_words.py">https://github.com/gcallah/Emu86/blob/master/assembler/RISCV...</a><p>assembler/RISCV/arithmetic.py: <a href="https://github.com/gcallah/Emu86/blob/master/assembler/RISCV/arithmetic.py">https://github.com/gcallah/Emu86/blob/master/assembler/RISCV...</a><p>simd, avx, X86S, x86-64-v4,<p>x86-64 > Microarchitecture levels: <a href="https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels" rel="nofollow">https://en.wikipedia.org/wiki/X86-64#Microarchitecture_level...</a><p>The new x86 Alliance, Intel-AMD x86 ISA overhaul org.<p>"Show HN: RISC-V Linux Terminal emulated via WASM" (2023) and ARM Tetris: <a href="https://news.ycombinator.com/item?id=37286019">https://news.ycombinator.com/item?id=37286019</a>
<a href="https://westurner.github.io/hnlog/#story-37286019" rel="nofollow">https://westurner.github.io/hnlog/#story-37286019</a><p>From <a href="https://news.ycombinator.com/item?id=37086102">https://news.ycombinator.com/item?id=37086102</a> :<p>> [ Bindiff, Diaphora, Ghidra + GDB, ]<p>> <i>Category:Instruction_set_listings has x86 but no aarch64</i> [or RISC-V] <a href="https://en.wikipedia.org/wiki/Category:Instruction_set_listings" rel="nofollow">https://en.wikipedia.org/wiki/Category:Instruction_set_listi...</a><p>> <i>/? jupyter asm [kernel]:</i><p>> <i>- "Introduction to Assembly Language Tutorial.ipynb" w/ the emu86 jupyter kernel which shows register state after ops:</i> <a href="https://github.com/gcallah/Emu86/blob/master/kernels/Introduction%20to%20Assembly%20Language%20Tutorial.ipynb">https://github.com/gcallah/Emu86/blob/master/kernels/Introdu...</a><p>> <i>- it looks like emu86 already also supports RISC, MIPS, and WASM but not yet ARM:</i><p>> <i>- DeepHorizons/iarm: <a href="https://github.com/DeepHorizons/iarm/blob/master/iarm_kernel/iarmkernel.py">https://github.com/DeepHorizons/iarm/blob/master/iarm_kernel...</a> </i><p>JupyterLite docs > adding other kernels: <a href="https://jupyterlite.readthedocs.io/en/latest/howto/configure/kernels.html#adding-other-kernels" rel="nofollow">https://jupyterlite.readthedocs.io/en/latest/howto/configure...</a>