A RISC-V emulator written in Rust :crab:

Related tags

Emulators r2
Overview

R2

GitHub Actions Status

A RISC-V emulator written in Rust πŸ¦€ .
Inspired cnlohr/mini-rv32ima.

Capture

You can run linux in your browser.

capture

Playground

https://bokuweb.github.io/r2/

Native

$ cargo run -p app -- -i fixtures/linux.bin -d fixtures/default.dtb

WASI

$ cargo build -p wasi --target wasm32-wasi --release
$ wasmtime ./target/wasm32-wasi/release/wasi.wasm

Wasm

$ cd wasm
$ cargo build --target wasm32-unknown-unknown --release
$ wasm-opt --asyncify [email protected] ../target/wasm32-unknown-unknown/release/wasm.wasm -o out.wasm
$ npx serve

Special Thanks

References

License

MIT

You might also like...
ZX Spectrum emulator written in Rust
ZX Spectrum emulator written in Rust

rustzx ZX Spectrum emulator which I writing in rust. I develop this project just for fun and for learning the basics of computer architecture. License

CHIP-8 emulator written in Rust
CHIP-8 emulator written in Rust

CHIP-8 emulator written in Rust. This is intended to be a project for gaining experience writing emulators and practice Rust.

A 6502 emulator written in Rust.

v6502 This package contains an emulator for the 6502 microprocessor. It doesn't support binary decimal (BCD) mode yet. To run the debug version: cargo

Spaghetti Chip8 Emulator Written In Rust

How to run? Command is simple: cargo run FILENAME. files are stored in the /c8games folder, use one of them. Example: cargo run INVADERS Keymap use 1

Non cycle-accurate emulator of the 6502 cpu, written in pure rust

CPU 6502 A non cycle-accurate emulator implementing all legal 6502 opcodes. What does non cycle-accurate mean? Every instruction on the 6502 takes a n

Experimental Nintendo Switch Emulator written in Rust

Kaminari Experimental Nintendo Switch Emulator written in Rust Usage You'll need to install Rust. rusc = 1.55.0 rustup = 1.24.3 Disclaimer Kaminari

A barely functional terminal emulator written in Rust. For nothing but fun.

Nothing much to say now. The basic architecture (kind of) so far is: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ptm │◀──────▢│ device::Shell β”‚ └─┬

A Chip8 Emulator written in Rust

Chipper: Chipper is a Chip8 Emulator written in Rust. It currently supports a few known quirks of the Chip8 varieties. I intend on making it support t

A CHIP-8 emulator written in Rust

damn8 A CHIP-8 emulator written in Rust To run, pass a path to a rom in the command line. TODO: Use function pointers to handle opcodes instead of a l

Comments
  • fix(deps): update rust crate clap to 4.3.0

    fix(deps): update rust crate clap to 4.3.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | clap | dependencies | minor | 4.2.7 -> 4.3.0 |


    Release Notes

    clap-rs/clap

    v4.3.0

    Compare Source

    Fixes
    • (assert) Allow multiple, value-terminated, positional arguments
    • (assert) Clear up language on last assertion
    • (parser) Correctly assign values to arguments when using multiple, value-termianted, positional arguments
    • (parser) Ensure value_terminator has higher precedence than allow_hyphen_values
    • (help) Only use next-line-help on subcommand list when explicitly specified, not just with --help
    • (help) Correctly align possible values list
    • (help) Don't waste code, vertical space in moving possible value descriptions to next line

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Configure Renovate

    Configure Renovate

    Mend Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • app/Cargo.toml (cargo)
    • core/Cargo.toml (cargo)
    • devices/Cargo.toml (cargo)
    • wasi/Cargo.toml (cargo)
    • wasm/Cargo.toml (cargo)
    • .github/workflows/ci.yml (github-actions)
    • .github/workflows/static.yml (github-actions)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Enable Renovate Dependency Dashboard creation.
    • Use semantic commit type fix for dependencies and chore for all others if semantic commits are in use.
    • Ignore node_modules, bower_components, vendor and various test/tests directories.
    • Group known monorepo packages together.
    • Use curated list of recommended non-monorepo package groupings.
    • Apply crowd-sourced package replacement rules.
    • Apply crowd-sourced workarounds for known problems with packages.

    πŸ”‘ Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    With your current configuration, Renovate will create 3 Pull Requests:

    fix(deps): update rust crate clap to 4.3.0
    • Schedule: ["at any time"]
    • Branch name: renovate/clap-4.x
    • Merge into: main
    • Upgrade clap to 4.3.0
    chore(deps): update actions/configure-pages action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-configure-pages-3.x
    • Merge into: main
    • Upgrade actions/configure-pages to v3
    chore(deps): update actions/deploy-pages action to v2
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-deploy-pages-2.x
    • Merge into: main
    • Upgrade actions/deploy-pages to v2

    🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for prhourlylimit for details.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • fix(deps): update rust crate clap to 4.3.8

    fix(deps): update rust crate clap to 4.3.8

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | clap | dependencies | patch | 4.3.0 -> 4.3.8 |


    Release Notes

    clap-rs/clap

    v4.3.8

    Compare Source

    Fixes
    • Error on ambiguity with infer_long_arg, rather than arbitrarily picking one, matching the documentation and subcommand's behavior

    v4.3.7

    Compare Source

    Documentation
    • Further clarify magic behavior in derive tutorial
    • Further clarify derive API's relationship to builder within the tutorial

    v4.3.6

    Compare Source

    Documentation
    • Suggest clio

    v4.3.5

    Compare Source

    • ColorChoice::possible_values is added to simplify things for builder users
    Fixes
    • ColorChoice::to_possible_value no longer includes descriptions, encouraging shorter help where possible

    v4.3.4

    Compare Source

    Features
    • Add Error::exit_code

    v4.3.3

    Compare Source

    Features
    • Command::defer for delayed initialization of subcommands to reduce startup times of large applications like deno

    v4.3.2

    Compare Source

    Fixes
    • (derive) Don't produce unused_equalifications warnings when someone brings a clap type into scope

    v4.3.1

    Compare Source

    Performance
    • (derive) Reduce the amount of generated code

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Other Branches

    These updates are pending. To force PRs open, click the checkbox below.

    • [ ] chore(deps): update actions/configure-pages action to v3
    • [ ] chore(deps): update actions/deploy-pages action to v2

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    cargo
    app/Cargo.toml
    • anyhow 1.0.71
    • clap 4.3.0
    core/Cargo.toml
    devices/Cargo.toml
    • libc 0.2
    wasi/Cargo.toml
    wasm/Cargo.toml
    github-actions
    .github/workflows/ci.yml
    • actions/checkout v3
    .github/workflows/static.yml
    • actions/checkout v3
    • actions/configure-pages v2
    • actions/upload-pages-artifact v1
    • actions/deploy-pages v1

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
Owner
bokuweb
Embedded / Web Engineer
bokuweb
Nes-emulator - A NES emulator made to learn the Rust programming language

nes-emulator Building $ rustc --version rustc 1.32.0 (9fda7c223 2019-01-16) $ cargo --version cargo 1.32.0 (8610973aa 2019-01-02) $ cargo build --rel

Michael Burge 225 Dec 23, 2022
Assured Confidential Execution (ACE) for RISC-V

Assured Confidential Execution (ACE) for RISC-V ACE-RISCV is an open-source project, whose goal is to deliver a confidential computing framework with

International Business Machines 12 Oct 6, 2023
NES emulator written in Rust to learn Rust

OxideNES A NES emulator in Rust. CPU should be accurate, PPU is mostly accurate, timing between the 2 is off for some corner cases and hardware qui

null 37 Nov 7, 2022
Chip8 emulator written in pure rust, using rust-sdl2 for graphics

Rust-8 chip8 emulator written in rust, using rust-sdl2 for graphics. Features Fully implemented all 35 original chip8 opcodes. This emulator does NOT

Chris Hinson 7 Dec 28, 2022
Commodore 64 emulator written in Rust

Rust64 - a C64 emulator written in Rust This is my attempt to study the Rust programming language and have fun at the same time. The goal is to presen

Krzysztof Kondrak 214 Dec 27, 2022
A Flash Player emulator written in Rust

website | demo | nightly builds | wiki Ruffle Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both t

Ruffle 11.2k Jan 8, 2023
A Game Boy research project and emulator written in Rust

Mooneye GB Mooneye GB is a Game Boy research project and emulator written in Rust. The main goals of this project are accuracy and documentation. Some

Joonas Javanainen 802 Dec 28, 2022
RustBoyAdvance-NG is a Nintendoβ„’ Game Boy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG Nintendo GameBoy Advance β„’ emulator and debugger, written in rust. WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/ P

MishMish 510 Dec 30, 2022
An NES emulator written in Rust

Pinky Pinky is an NES emulator written in Rust completely from scratch based only on publicly available documentation. You can run it in your Web brow

Koute 709 Dec 23, 2022
NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language. Its purpose is to serve as a technology dem

Patrick Walton 725 Dec 27, 2022