aarch64-pg
[31:0] live emulator · no install · no server

Look inside the machine

aarch64-playground is a hand-written ARMv8 emulator and visual debugger. Paste a program, assemble it, and watch the registers, the stack, and memory update as each instruction runs.

a64-pg · live die view
// build a small value, print a line with the write syscall, return the valuedefine(base, x19)define(total, x20)        .textmsg:    .string "hello from the playground\n"msg_len = . - msg - 1                   // length without the NUL        .balign 4        .global mainmain:        stp     x29, x30, [sp, -16]!        mov     x29, sp        mov     base, 7        add     total, base, 3        // write(stdout, msg, msg_len)        mov     w0, 1        ldr     x1, =msg        mov     x2, msg_len        mov     x8, 64        svc     0        mov     x0, total        ldp     x29, x30, [sp], 16        ret

regfile

N clearZ clearC clearV clear

x0–x30 are the integer registers.

X0arg00x0000000000000000
X1arg10x0000000000000000
X2arg20x0000000000000000
X3arg30x0000000000000000
X4arg40x0000000000000000
X5arg50x0000000000000000
X6arg60x0000000000000000
X7arg70x0000000000000000
X8ind0x0000000000000000
X90x0000000000000000
X100x0000000000000000
X110x0000000000000000
X120x0000000000000000
X130x0000000000000000
X140x0000000000000000
X150x0000000000000000
X16ip00x0000000000000000
X17ip10x0000000000000000
X18pr0x0000000000000000
X190x0000000000000000
X200x0000000000000000
X210x0000000000000000
X220x0000000000000000
X230x0000000000000000
X240x0000000000000000
X250x0000000000000000
X260x0000000000000000
X270x0000000000000000
X280x0000000000000000
X29fp0x0000000000000000
X30lr0x0000000000000000
SP0x0000000080000000
PC0x0000000000400000
console

Output prints here as your program runs.

Step with F10, run with F5, or feed stdin from the box below.

jump table

01 · jump table

what it does

02 · what it does
  • Hand-written interpreter

    Readable Rust compiled to WebAssembly runs the whole machine in the tab: no server, no QEMU, no install.

  • Visual debugger

    Registers, the stack, memory, and the console update as each instruction runs.

  • Step and step back

    Walk forward one instruction at a time, or rewind to see exactly where a value went wrong.

  • Hosted runtime

    printf, scanf, malloc, argv, and Linux syscalls answer the way the course servers do, so tutorial programs run unmodified.

  • Course toolchain

    define aliases, sections, and =label literal loads resolve the way GNU m4 and GAS handle them on the course servers.

  • Bounded sandbox

    A runaway loop or a program that allocates without limit halts cleanly with a plain explanation instead of freezing the tab.