This project's aim is to be an emulator of the arm7tdmi processor in c++20. The goal is to provide a library, providing a simple api for constructing, interfacing, and running an arm7tdmi cpu.
This project is in very early stages, and is a work in progress.
- All ARM & THUMB instruction decoding is finished and tested
- Arm "Branch", "Branch and Exchange", "Block Data Transfer", are implemented. Branch instructions are tested.
- Basic memory interface is defined.
Currently builds with CMake (temporarily requires fmt):
cmake_minimum_required(VERSION 3.28)
set(CMAKE_CXX_STANDARD 20)
add_executable(app main.cpp)
target_link_libraries(app PRIVATE arm7tdmi fmt::fmt)- Tests can be enabled with CMake cache variable
BUILD_TESTINGset toOn. - Additionally,
ARM_ASSEMBLER_PATHmust be passed to cmake, in order to build and test with real ARM assembly. This expects a path to thebinfolder of the ARM GNU Toolchain. - Requires Version 10.3-2021.10 of the ARM GNU Toolchain. Later versions have been found to not support
-march=armv4t, required to build executables for this architecture.