- M Multipy Extension (Optional), adds 'hardware' multplication
- Zicsr Extension (Optional?) adds extra CSR registers
- Disassembly with symbols & labels, register debug
- Graphical Interface with PC debug, Cpu speed & VGA FrameBuffer
- MMIO (ROM, WAD-ROM, RAM, BRAM, VGA, UART, SPI)
- Multi core support* (*Experimental, needs A atomic extension not yet implemented...)
In case of issues might be worth cheking the build guide for GLFW first at https://www.glfw.org/docs/3.3/compile.html
sudo apt install build-essential
sudo apt install xorg-dev
git clone https://github.com/Paulo-D2000/imrisc.git
cd imrisc
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --target ImRisc-gui --
Then run ImRisc-gui
with .ImRisc-gui
and enjoy!
sudo apt install build-essential
sudo apt install libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules
git clone https://github.com/Paulo-D2000/imrisc.git
cd imrisc
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --target ImRisc-gui --
Then run ImRisc-gui
with .ImRisc-gui
and enjoy!
Dependencies: GCC (MinGW-W64 > 12) (https://github.com/niXman/mingw-builds-binaries/releases)\ CMake (Cmake > 3.2) (https://cmake.org/download/)\ Ninja (https://github.com/ninja-build/ninja/releases) or Make (https://gnuwin32.sourceforge.net/packages/make.htm)\ (Optional) Git (https://git-scm.com/downloads)
If you have Git, run on cmd:
git clone https://github.com/Paulo-D2000/imrisc.git
cd imrisc
Or just download the repo as a zip and extract it to some place, then open cmd on that folder
Then run:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --target ImRisc-gui --
Then run ImRisc-gui
with ImRisc-gui.exe
and enjoy!
File formats:
.bin
actual binaries, made with objcopy -B binary of the .elf file.sym
Symbols dump, made with obdjump -D of the .elf file.WAD
DOOM WAD File
You can change the core count on config.h, note this isn't working correctly right now!
You can load .bin files into RAM or ROM and add breakpoints at addresses, check the commented lines on main.cpp to see how its done (TODO: Document This).
- Update Documentation
- Add binary build guide & examples, linkerscript settings, uart addresses... etc...
- Add A atomic extension ?
- Add a cmd (maybe even gui?) interface that allows user to load binaries, setup extensions, configure Number of cores, etc...
- Add a new framebuffer 'type' (RGB[A]) instead of 256 colors pallete
Thanks to Lucas Teske for his amazing riscv-emulator that was base for a lot of the code on this project! Also thanks to smunaut for his bootloader and the riscv port of DOOM riscv_doom.