Skip to content

Reference implementation for the book "Writing a RISC-V Emulator in Rust".

License

Notifications You must be signed in to change notification settings

d0iasm/rvemu-for-book

Folders and files

NameName
Last commit message
Last commit date

Latest commit

58991b0 · Aug 11, 2022

History

93 Commits
Nov 28, 2020
Jan 7, 2021
Nov 28, 2020
Aug 10, 2022
Nov 28, 2020
Aug 10, 2022
Aug 10, 2022
Aug 10, 2022
Aug 10, 2022
Aug 10, 2022
Aug 10, 2022
Apr 11, 2020
Apr 10, 2020
Aug 19, 2020
Nov 28, 2020
Aug 16, 2020

Repository files navigation

rvemu-for-book

Reference implementation of the book, Writing a RISC-V Emulator from Scratch in 10 Steps. The goal of this code and the book is runnning xv6 in our emulator.

This is based on original RISC-V emulator rvemu in Rust.

How to run xv6

$ cd step10 // move to the step10 directory
$ cargo run ./xv6-kernel.bin ./xv6-fs.img

demo.png

Step to implement a RISC-V emulator

See https://book.rvemu.app/

  • Step 1: Setup and Implement Two Instructions
  • Step 2: RV64I Base Integer Instruction Set
  • Step 3: Control and Status Registers
  • Step 4: Privileged Instruction Set
  • Step 5: Exceptions
  • Step 6: UART (a universal asynchronous receiver-transmitter)
  • Step 7: PLIC (a platform-level interrupt controller) and CLINT (a core-local interrupter)
  • Step 8: Interrupts
  • Step 9: Virtio
  • Step 10: Virtual Memory System

Each step has a diff file generated by diff -x target -r step<previous> step<current> > diff_<previous>_<current>.

About

Reference implementation for the book "Writing a RISC-V Emulator in Rust".

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages