bitbornMAKE EVERY BIT COUNT

LEARN / A PATH THROUGH THE LAB

Start with bits.
Keep asking why.

Six stops, from an eight-bit token to an independently tested program. Short experiments here; the complete explanations live in the project’s canonical guides.

Start in your language

The same literal example, quickstart and support boundaries in eight languages. Detailed guides and interactive controls currently use English.

Learning path

  1. 01

    Separate notation from a byte

    10111000 is eight text characters representing one byte, B8. A packer converts notation into byte values. It does not choose an instruction.

  2. 02

    Read an opcode and immediate

    In 16-bit mode, B8 2A 00 loads 42 into AX. Change one low opcode bit to choose another register; change an immediate bit to choose another value.

  3. 03

    Give the bytes a boot environment

    Legacy BIOS loads a first sector at physical 0x7C00. Inspect the explicit code, message, padding, and final 55 AA marker. A marker identifies a candidate; it cannot prove correct behavior.

  4. 04

    Follow state, one instruction at a time

    A register is a current value, a flag records a condition, and IP selects the next instruction. Step through the model to see a branch follow its signed displacement from the end of an instruction.

  5. 05

    Ask a real execution environment

    Package literal source, verify sizes and reviewed hashes, then boot a disposable QEMU guest. Linux ELF examples require Linux x86-64; their expected nonzero exit statuses are demonstrations, not generic failures.

  6. 06

    Solve one problem and explain it

    Use a binary challenge to practice the mechanism you just learned. Then inspect an example’s source and byte table before changing it. Correct bytes and a reproducible check matter together.