No description
  • Scheme 87.2%
  • Shell 10%
  • Makefile 2.6%
  • Common Lisp 0.2%
Find a file
2026-07-30 15:45:53 -06:00
.builds ci: set umask 022 in package/verify tasks too (jerbuild creates group-writable cache dirs during pkg operations) 2026-07-22 13:10:54 -06:00
.jerboa Security hardening and release readiness 2026-06-23 10:48:53 -06:00
docs docs: document entry-size, command-count, and numeric-field bounds 2026-07-21 17:59:56 -06:00
lib/jasm perf: elf read-c-string bulk NUL scan + preallocated string (was per-byte u8 + reversed char list) 2026-07-22 14:19:39 -06:00
scripts Bound assembler inputs and verify bootstrap 2026-07-11 17:22:54 -06:00
support Bound assembler inputs and verify bootstrap 2026-07-11 17:22:54 -06:00
tests archive: require exact non-negative integer numeric fields 2026-07-21 17:56:36 -06:00
.gitignore jpkg: complete binary package setup 2026-07-30 14:55:22 -06:00
.jerbuild build: build jasm with installed jerbuild (no jerboa checkout) 2026-05-28 16:01:41 -06:00
AGENTS.md docs: remove jerboa-emacs restriction 2026-07-30 15:45:53 -06:00
jpkg.lock jpkg: complete binary package setup 2026-07-30 14:55:22 -06:00
jpkg.policy.sexp jpkg: complete binary package setup 2026-07-30 14:55:22 -06:00
jpkg.sexp jpkg: complete binary package setup 2026-07-30 14:55:22 -06:00
LICENSE Switch to MIT license 2026-07-21 13:41:54 -06:00
main.ss Bound assembler inputs and verify bootstrap 2026-07-11 17:22:54 -06:00
Makefile build: add lint target 2026-07-21 11:57:09 -06:00
NOTICE Security hardening and release readiness 2026-06-23 10:48:53 -06:00
README.md Security hardening and release readiness 2026-06-23 10:48:53 -06:00
SECURITY.md Security hardening and release readiness 2026-06-23 10:48:53 -06:00

jasm

jasm is a pure Jerboa binary-to-assembly source library and CLI.

The goal is to grow toward llvm-objdump-style decoding and output parity without linking to LLVM, shelling out to LLVM tools, using FFI, or requiring external libraries at runtime.

Current Scope

  • Pure Jerboa decoder core.
  • Seed x86-64 decoder for common prologue/control-flow instructions.
  • Seed AArch64 decoder for common integer/load/store/return instructions.
  • A Jerboa CLI for raw byte disassembly.

Object-file readers and broader ISA tables live in Jerboa .ss source modules.

Security and Release Gates

make verify
make release-evidence

make verify runs the local security baseline, import check, normal tests, malformed parser regression tests, deterministic object-fuzz evidence, and native binary smoke tests. Release evidence is written to dist/release-evidence/ with SBOM, reproducibility, and target proof status.

Runtime file reads are bounded by JASM_MAX_INPUT_BYTES (default 64 MiB). Raw hex CLI input is bounded by JASM_MAX_HEX_CHARS (default 16 MiB).

Generated native artifacts are ignored and must not be tracked. The root jasm binary is built by make binary and is a release artifact, not source.

Production support also requires a reviewed JASM_TARGET_PROOF_FILE with the markers documented in docs/release-evidence.md. JASM_REQUIRE_TARGET_PROOF=1 fails closed when that target proof is missing or incomplete.

Run

make verify
make binary
./jasm raw --arch x86-64 --syntax intel --hex '55 48 89 e5 c3'
./jasm raw --arch aarch64 --hex '20 00 80 d2 c0 03 5f d6'
./jasm raw --arch mips --hex '27 bd ff e0 03 e0 00 08'

Security Docs

  • SECURITY.md
  • docs/threat-model.md
  • docs/parser-hardening.md
  • docs/release-evidence.md

Source API

(import (jerboa prelude))

(include "lib/jasm/instruction.ss")
(include "lib/jasm/format.ss")
(include "lib/jasm/disasm.ss")

(disassemble->string 'x86-64 (hex-string->bytevector "55 48 89 e5")
  '((syntax . intel) (address . 0)))