Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Using a release

Download the Windows x64 or Linux x64 ZIP from GitHub Releases and extract it. Each archive contains bin/kasm.exe (Windows) or bin/kasm (Linux), plus the project README and the Apache 2.0 license under share/doc/kasm.

From the extracted package directory, create example.asm containing mov eax,42;, then run:

.\bin\kasm.exe example.asm
.\bin\kasm.exe --bits 64 example.asm
./bin/kasm example.asm
./bin/kasm --bits 64 example.asm

Expected output with the current source build:

B8 2A 00 00 00
0000: mov eax, 42
Decoding successful.

The CLI accepts either one source-file path, which defaults to 64-bit mode, or --bits 16|32|64 followed by one source-file path. The current implementation supports the initial 16-bit forms described in The 16-bit instruction set and the existing 64-bit path; 32-bit mode is rejected. It prints one line of uppercase hexadecimal bytes, with a space after each byte, followed by a decoded listing and Decoding successful. when decoding succeeds. Older releases may print only the hexadecimal line. For program.asm, the CLI writes program.bin (raw bytes) and program.h (C declarations) in the current working directory, replacing previous files with those names before decoding. Redirecting stdout saves text, including the listing, rather than a raw binary. Unless a full listing is shown, the encoding examples elsewhere in this reference show only the first hexadecimal line. Instructions are encoded in source order and are not executed by the CLI. Windows packages use the static MSVC runtime; Linux packages are built on Ubuntu 24.04.

Source-file links in this reference point to the repository on GitHub; source files and test drivers are not included in the binary ZIPs.

Packaging and releases

The repository workflow builds and tests Debug and Release configurations on Windows x64 and Linux x64. On a push to main, successful builds produce two Release ZIPs through CPack and publish a GitHub Release. Tags use v<version>-build.<run-number>; the version comes from project(kasm VERSION ...) in CMakeLists.txt. A merge to main triggers this process through its push.

To build a Windows ZIP locally from the repository root:

cmake --preset windows-release -DBUILD_TESTING=ON
cmake --build --preset windows-release
ctest --test-dir build/windows-release -C Release --output-on-failure
cpack --config build/windows-release/CPackConfig.cmake -C Release -G ZIP -B dist

The package installs the executable under bin and documentation under share/doc/kasm. GitHub’s automatically generated source archives are separate from these executable packages.

License

Copyright 2026 Kenneth Looney. Licensed under the Apache License, Version 2.0. See LICENSE, included beside the README in release packages.