Master the fundamental concepts of arm assembly (aarch64) through this focused micro-challenge.
Cross-compilation targets a different ISA than the host CPU. Docker buildx and GitHub Actions arm64 runners use the same toolchain flow: aarch64-linux-gnu-gcc emits arm64 ELF, qemu-aarch64 translates instructions and forwards syscalls to the host kernel.
bashLoading…
Failures often show up as wrong syscall numbers or linker scripts meant for x86.
For this exercise, you will cross-assemble a small program and run it under QEMU. This task asks you to verify output matches native expectations, because Raspberry Pi OS images and arm64 containers on Docker Hub are built exactly this way when CI lacks bare metal.
Keep the relevant man page, ABI doc, or Rust reference chapter open while you work. When your output disagrees with the reference implementation on the same machine, the mismatch is usually an alignment rule, an off-by-one terminator, or a register slot you misread in GDB. Skim the official documentation for the tool or ABI named in the exercise; the prose changes, but register roles, syscall numbers, and ownership rules stay stable across releases.
Write ARM assembly and cross-compile using QEMU.
Requirements:
Three hints are available for this task, revealed one at a time inside the code workspace so you can struggle productively before seeing them.
All starter code and reference implementations are available for your local setup.
View on Github