This project is inspired by abstract-machine and aims to provide a relatively simple Rust bare-metal programming framework.
- RISC-V (32-bit) - Partially ✓
- x86 - ✗
- arm - ✗
- stdio - ✓
- Memory Allocator - ✓
- panic - ✓
- Interrupt and Exception Handling - ✗
- RTIC - ✗
- tock - ✗
for example, to build hello binary for nemu in RISC-V arch riscv32im:
just build hello riscv32im-nemuor build all binaries for qemu in RISC-V arch riscv32im_zve32x:
just build _ALL riscv32im_zve32x-qemuto generate disassembly and binary for hello binary for nemu in RISC-V arch riscv32im:
just disasm hello riscv32im-nemuresult will be in target/disasm/nemu/riscv32im/hello/ folder.
For emulators that have been released and imported in flake.nix, you can run the run recipe to directly execute the compiled program.
just run hello riscv32im-qemujust list_bins
just list_archsjust # or
just --listrefer to bin/dummy.
- add new pla in PLATFORM_CONFIGS within scripts/arch/main.nu
- modify build-helper/src/lib.rs
- modify runtime
- add new platform crate in runtimes