Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RISC-V Online Assembler

DOI GitHub Release License: MIT Live demo

Online assembler for RISC-V assembly (all variants that gas supports).

It uses a WebAssembly-compiled version of GNU as, objdump and objcopy to build the assembly.

Built for my RISC-V Emulator series (currently only in portuguese at https://www.youtube.com/playlist?list=PLEP_M2UAh9q6_2Jtvs9fgOVlRgsruii2m)

Building the WASM toolchain

Requires Docker with the emscripten/emsdk image.

./build.sh docker     # build via Docker (recommended)
./build.sh            # native build (requires emsdk in PATH)
./build.sh clean      # remove build artifacts

The script downloads binutils 2.46.0 source, cross-compiles gas, ld, objcopy and objdump to WebAssembly, and copies the resulting .wasm and .js glue files into js/.

Legacy manual build

For reference, these are the raw steps the script automates:

wget https://ftp.gnu.org/gnu/binutils/binutils-2.46.0.tar.xz
tar -xf binutils-2.46.0.tar.xz
mkdir -p build bins
cd build
cat > assets.js <<'JS'
Module['FS'] = FS;
Module['callMain'] = callMain;
JS
emconfigure ../binutils-2.46.0/configure --disable-doc --build=x86 --host=wasm32 --target=riscv64-linux-gnu
emmake make -j4 CFLAGS="-DHAVE_PSIGNAL=1 -DELIDE_CODE -D__GNU_LIBRARY__ -O2 -Wno-unused-but-set-global" LDFLAGS="-s MODULARIZE=1 -s FORCE_FILESYSTEM=1 --post-js $(pwd)/assets.js"
emmake make install DESTDIR="$(pwd)/../bins"
cp binutils/objcopy.wasm binutils/objdump.wasm gas/as-new.wasm ld/ld-new.wasm ../js/
cp ../bins/usr/local/bin/riscv64-linux-gnu-as ../js/riscv64-linux-gnu-as.js
cp ../bins/usr/local/bin/riscv64-linux-gnu-objcopy ../js/riscv64-linux-gnu-objcopy.js
cp ../bins/usr/local/bin/riscv64-linux-gnu-objdump ../js/riscv64-linux-gnu-objdump.js
cp ../bins/usr/local/bin/riscv64-linux-gnu-ld ../js/riscv64-linux-gnu-ld.js

Citation

If this tool helped your research or teaching, a citation is appreciated.

@misc{teske2026riscvasm,
  title={RISC-V Online Assembler},
  author={Teske, Lucas},
  year={2026},
  publisher={Zenodo},
  version={1.0.0},
  doi={10.5281/zenodo.21526003},
  url={https://doi.org/10.5281/zenodo.21526003},
  note={Browser-based RISC-V assembler powered by a WebAssembly build of GNU binutils. Live tool: https://riscvasm.lucasteske.dev/. Source: https://github.com/racerxdl/riscv-online-asm. ORCID: 0009-0002-8526-7662}
}

About

RISC-V Online Assembler using Emscripten, Gnu Binutils

Topics

Resources

Stars

68 stars

Watchers

2 watching

Forks

Used by

Contributors

Languages