ysyx-workbench/nemu
xinyangli 2824efad33 NJU-ProjectN/nemu ics2023 initialized
NJU-ProjectN/nemu eb63cf3568dbf4e0c3c6ef462e6ec685550fabbc Merge pull request #76 from rijuyuezhu/master
2023-12-21 00:20:36 +08:00
..
configs NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
include NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
resource NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
scripts NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
src NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
tools NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
.gitignore NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
Kconfig NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +08:00
Makefile NJU-ProjectN/nemu ics2023 initialized 2023-12-21 00:20:36 +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