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

Version Reference

This table is the same version history the README maintains, reproduced here for quick lookup while reading the journal chapters. If the README and this table ever disagree, the README is the current source of truth for present-day behavior — this book is a historical record.

VersionAdded capability
0.1.0Parse and validate MOV programs, evaluate expressions, and print encoded bytes.
0.2.0Encode ret; as C3, allowing a small function to return to its caller.
0.3.0Save raw bytes in program.bin; test example files in separate output directories.
0.4.0Generate generated.h with a C byte array and length; inspect the data with a C program.
0.5.0Add a Linux x86-64 runner example that loads the generated bytes into executable memory and calls them.
0.6.0Add Windows x86-64 execution to the runner using the same generated bytes.
0.7.0Parse label definitions, including consecutive labels, without emitting extra bytes.
0.8.0Assign instruction and label offsets before encoding, reject duplicate labels, and provide label-offset lookup.
0.9.0Encode near jumps with signed relative displacements and resolve forward label references after layout.
0.10.0Add short jumps with signed 8-bit displacements and require explicit jmp near or jmp short syntax.
0.11.0Add a load-time relocation helper, emit patch metadata in generated headers, and apply patches in both runners before execution.
0.12.0Add jmp abs through a full-width address slot, generate relocation entries, and verify execution of a relocated jump in WSL2.
0.14.0 (0.13.0 skipped)Add INC and DEC on EAX, JZ and JNZ for conditional branches and loops, and a decoder with an exact-listing test.
0.15.0Add ADD/SUB EAX immediate expressions, five-byte encoding, and decoder support.
0.16.0Add OR EAX immediate expressions and PUSH/POP RAX, with layout, operand validation, and decoding support.
0.17.0Add ADC EAX immediate expressions, encoding and decoding, with runtime checks for carry clear and carry set.
0.18.0Add INT with an unsigned 8-bit vector, expression parsing, range validation, encoding, and decoding.
0.18.1Fix decoding for INC EAX and JZ, and add an end-to-end regression test for their byte output and decoded listing.
0.19.0Add CMP and AND EAX immediate expressions, five-byte encoding, flag-setting semantics, decoder support, and JB/JL conditional branches.
0.19.1Replace the fixed 4096-byte source buffer with dynamically growing storage.
0.20.0Add XOR EAX immediate expressions, five-byte encoding, and decoder support.
0.22.0Make CPU mode explicit with --bits 16, --bits 32, or --bits 64; reject unsupported 16-bit and 32-bit modes before encoding.
0.23.0Add DB/byte, DW/word, DD/dword, and DQ/qword data directives, expression lists, range checks, and little-endian emission.
0.24.0Add TIMES/FILL repetition for data directives.
0.24.1Restore the default one-source-file CLI invocation as 64-bit mode.
0.25.0Add $ and $$ location-aware expressions, resolving dynamic TIMES/FILL counts during layout.
0.25.1Fix the boot-padding regression test to measure binary output through HEX, keeping CI behavior consistent across platforms.
0.26.0Add initial 16-bit MOV/ADD/SUB encoding for AX/CX/DX, operand-width-aware layout, and target-aware decoding.
0.27.0Add 16-bit indirect mov from [bx] into AX/CX/DX.
0.28.0Add a 512-byte 16-bit boot-sector fixture using location-aware padding, binary literals, and the 55 AA boot signature.
0.29.0Add 16-bit segment-register push/pop for CS, ES, SS, DS, FS, and GS.
0.30.0Add 16-bit SBB immediate forms for AX, CX, and DX.
0.31.0Add operand-free HALT and PAUSE forms.
0.32.0Make signed constant-expression folding overflow-safe for addition, subtraction, and multiplication.
0.33.0Resolve label expressions in data directives after layout; add Windows x64 COFF object output; name raw binaries and headers after the input file.
0.34.0Documentation only: launch this journal, trim the README’s version history into a pointer to it, and publish the book to GitHub Pages via CI.

Tag timeline

TagDate
v0.1.0-build.3 / build.7 / build.292026-09-12 / 2026-09-13
v0.5.0-build.372026-09-14
v0.10.0-build.452026-09-14
v0.15.0-build.592026-09-15
v0.18.1-build.732026-09-16
v0.19.0-build.842026-09-16
v0.24.1-build.1392026-09-16
v0.25.1-build.1532026-09-17
v0.27.0-build.1672026-09-17
v0.28.0-build.1752026-09-17
v0.29.0-build.1852026-09-17
v0.32.0-build.1992026-09-18
v0.33.0-build.2082026-09-18
v0.34.02026-09-18