ysyx-workbench/nemu
xinyangli 2209c26dce
All checks were successful
Build abstract machine with nix / build-abstract-machine (push) Successful in 8m7s
nemu: fix some memory bug
2024-03-26 12:43:03 +08:00
..
configs pa1.3: watchpoint support 2024-02-08 20:07:03 +08:00
include pa2.2: nemu small fixes 2024-03-25 17:02:12 +08:00
resource NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
scripts build: initial support for building nemu, am-kernels with nix 2024-03-04 12:05:43 +08:00
src nemu: fix some memory bug 2024-03-26 12:43:03 +08:00
tests pa2.1: support RV32I instructions 2024-03-06 12:50:56 +08:00
tools NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
.clang-format pa1.2: use flex and bason to implement expr parser 2024-01-12 22:16:35 +08:00
.gitignore pa1.3: watchpoint support 2024-02-08 20:07:03 +08:00
default.nix nemu: try difftest 2024-03-26 01:53:17 +08:00
Kconfig nemu: fix some memory bug 2024-03-26 12:43:03 +08:00
LICENSE pa1.2: use flex and bason to implement expr parser 2024-01-12 22:16:35 +08:00
Makefile pa2.2: nemu small fixes 2024-03-25 17:02:12 +08:00
README.md NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00

NEMU

NEMU(NJU Emulator) is a simple but complete full-system emulator designed for teaching purpose. Currently it supports x86, mips32, riscv32 and riscv64. To build programs run above NEMU, refer to the AM project.

The main features of NEMU include

  • a small monitor with a simple debugger
    • single step
    • register/memory examination
    • expression evaluation without the support of symbols
    • watch point
    • differential testing with reference design (e.g. QEMU)
    • snapshot
  • CPU core with support of most common used instructions
    • x86
      • real mode is not supported
      • x87 floating point instructions are not supported
    • mips32
      • CP1 floating point instructions are not supported
    • riscv32
      • only RV32IM
    • riscv64
      • only RV64IM
  • memory
  • paging
    • TLB is optional (but necessary for mips32)
    • protection is not supported
  • interrupt and exception
    • protection is not supported
  • 5 devices
    • serial, timer, keyboard, VGA, audio
    • most of them are simplified and unprogrammable
  • 2 types of I/O
    • port-mapped I/O and memory-mapped I/O