# CLI Reference Repository: [sourcedock.dev/petrbalvin/gasm-devkit](https://sourcedock.dev/petrbalvin/gasm-devkit) `gasm` is a single binary with subcommands. Run `gasm --help` for an overview, or `gasm -h` for a command's usage and flags. ## Global Flags | Flag | Description | |------|-------------| | `-h`, `--help` | Show help | | `-V`, `--version` | Print the version | ## `gasm tokens ` Print the lexical token stream of FILE: position, token kind, and text, one token per line. FILE may be `-` to read standard input. ## `gasm parse ` Parse FILE and report syntax errors on stderr. On success, prints how many declarations and TEXT functions the file contains. ## `gasm fmt [-w] [path...]` Canonicalise the formatting of Plan 9 assembly sources: indentation, operand spacing, per-function mnemonic alignment, and blank-line layout. | Flag | Description | |------|-------------| | `-w` | Write result to the source file (default: print to stdout) | With no arguments, or with a directory argument, every `.s` file below it is reformatted in place and the names of changed files are listed (`go fmt` style). `.` and `_` directories are skipped. ## `gasm lint ` Run static checks and print diagnostics as `file:line:col: severity: message [code]`. Exit status is non-zero when an error-severity diagnostic is found. | Flag | Description | |------|-------------| | `-disable` | Comma-separated rule codes to disable | Rules: `unknown-instruction`, `operand-count`, `undefined-label`, `duplicate-label`, `missing-ret`, `missing-textflag-include`, `abi-argsize`, `unreachable-code`, `register-clobber`, `funcdata-pcdata`. ## `gasm asm [--format raw|elf|macho|goobj] [-p pkg] [-o out] ` Assemble FILE (amd64) to machine code. | Flag | Description | |------|-------------| | `--format` | Output format: `raw` (default), `elf`, `macho`, `goobj` | | `-p` | Package path (required for `--format goobj`) | | `-o` | Write output to file (default: hex dump to stdout) | ## `gasm verify [flags] ` Assemble FILE, map it into executable memory, and run dynamic checks. | Flag | Description | |------|-------------| | `--ground-truth` | Compare machine code byte-for-byte against `go tool asm` | | `--fuzz` | Differential fuzz: JIT both gasm and go-tool-asm, compare outputs | | `-n` | Fuzz iterations per function (default: 1000) | | `--abi` | Run ABI-checking calls (sentinel registers + red zone) | | `--profile` | List basic-block structure per function | | `--smoke` | Call each NOSPLIT function with zeroed args | The `--fuzz` mode runs each function in a subprocess; a partial function (e.g. a decoder that faults on malformed input) is reported as `CRASH` without killing the parent. Use `--ground-truth` for decoders. ## `gasm debug --func ` Interactive debugger for JIT-assembled amd64 functions. Requires a compiled binary on `$PATH` (not `go run`). | Flag | Description | |------|-------------| | `--func` | Function to debug (required) | REPL commands: | Command | Description | |---------|-------------| | `break ` | Set a breakpoint | | `step [n]` | Single-step n instructions | | `continue` | Run until next breakpoint or exit | | `regs` | Print general-purpose registers | | `x [addr] [len]` | Hex-dump memory | | `labels` | List function labels and offsets | | `quit` | Kill the debuggee and exit | ## `gasm lsp` Run the language server over standard input/output (JSON-RPC 2.0 with Content-Length framing). Point an LSP-capable editor at the binary and associate it with `.s` files. The target architecture is inferred from the file-name suffix (`_amd64.s`, `_arm64.s`, `_riscv64.s`, `_loong64.s`). Provides: completion, hover, document symbols, diagnostics, and semantic-token highlighting.