← All workCase study 17

ARM CPU Emulator

An ARM processor implemented in software in C — fetching, decoding and executing real machine code, with a disassembler on the side.

Type

Systems

Status

Shipped

Context

Systems programming · Leeds Beckett University

Period

2026

Source

Public

(01) Overview

A software implementation of an ARM processor written in C. It runs the fetch-decode-execute cycle over real ARM machine code, updating registers and condition flags exactly as the hardware would, and doubles as a disassembler that turns raw hex opcodes back into readable assembly.

(02) Architecture

C · instruction decoder and disassembler · fetch-decode-execute cycle · register file and condition flag state machine

(03) What was built
  1. 01Decodes raw ARM machine code into human-readable assembly — 0xE3A00001 becomes `mov r0, #1`.
  2. 02Goes beyond translation and actually executes instructions, updating registers and status flags after each one.
  3. 03Implements the fetch-decode-execute cycle that every CPU runs, in software.
(04) Stack

C / ARM Assembly

Next case study

Realtime Chat (Go)

→