armviz

Documentation

The ideas that make the other three views make sense. Register names are live links throughout, so a reference to X29 in the prose leads to the same page the explorer shows.

  1. Why register 31 is two registers

    One encoding, two meanings, and the rule that decides which: the instruction you are looking at, not the register.

  2. What the calling convention promises

    Which registers a function may clobber, which it must preserve, and why X29 and X30 are treated differently from the rest.

  3. Writing a W register does more than it looks

    A 32-bit write is not a smaller write. Bits 63:32 are reset to zero, and the compiler relies on that.

  4. Exception levels and what they cost

    Why AArch64 has four privilege levels, and what changes about your code at each boundary.

  5. How a virtual address becomes a physical one

    Three registers and a chain of tables: TTBR0_EL1, TCR_EL1 and SCTLR_EL1 set the shape, and each level's index picks one entry out of 512.