/rvcodecjs-ch32xw

RISC-V Instruction En/Decoder, with support for the CH32V003 XW instructions

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

rvcodec.js

Introduction

rvcodec.js is a RISC-V instruction encoder/decoder available at https://luplab.gitlab.io/rvcodecjs/.

rvcodec.js conveniently shows how each token of the assembly instruction is encoded as part of the binary representation.

Contributing

Run locally

  • Clone this repo: $ git clone git@gitlab.com:luplab/rvcodecjs.git
  • Install dependencies: $ npm install
  • Make changes
    • The encoding/decoding logic is in directory core
    • The web user interface is in directory web-ui
  • Run testsuite to avoid any regressions: $ npm test
  • Open website locally to test UI: $ npm run open

Roadmap

If you'd like to contribute, here are the main features we'd like to add:

  • Support for RV32I instruction set
  • Support for RV64I instruction set
  • Support for RV128I instruction set
  • Support for rest of GC extensions
    • Zifencei instruction set
    • Zicsr instruction set
    • M (multiplication/division) instruction set
    • A (atomic) instruction set
    • F (single-precision floating point) instruction set
    • D (double-precision floating point) instruction set
    • Q (quad-precision floating point) instruction set
    • C (compressed) instruction set

Credit and license

rvcodec.js is developed by the LupLab at UC Davis.

rvcodec.js is released under the GNU Affero General Public License v3.0.