Undocumented Instructions in Microprocessors
ISEF · 2019 Embedded Systems
Overview
The aim of our research was to find out if the ATMega328p processor contains undocumented instructions, and if it does, how they effect and change the registers and contents of RAM. In order to explore the field, we had to learn assembly for the ATMega328p microprocessor, which can be found on the Arduino Uno. We used Python scripts to inject potentially undocumented instructions into the assembly programs, which were then compiled with Atmel's compiler (avrasm2) to Intel HEX and uploaded to the Arduino Uno using a batch script. The program on the ATMega performed a memory dump, executed the injected instruction and once again sent the contents of the memory. The memory dumps were then analyzed with Python and C# programs. In the end, based on the differences between the memory dumps, before and after execution of the injected instruction, we could determine if an instruction really is an undocumented instruction. In total we’ve discovered over 120 undocumented instructions and proved that they can be found even in such simple processors.
Awards (2)
- Innopolis University : Full tuition scholarships for the Bachelor program in Computer Science
- Innopolis University : Full tuition scholarships for the Bachelor program in Computer Science
Competition history
- ISEF 2019
Resources
Related projects
ISEF · 2019
An Interactive Tool for Self-Studying or Teaching the Inner Workings of a Simple 8-Bit Central Processing Unit
ISEF · 2024
Development and Construction of a TTL Processor
ISEF · 2026
Simple-VIII: Designing an 8-bit Computer Architecture for End-to-End Open Source ASIC Implementation
ISEF · 2024
Extending PCPU: A New, Practical, and Production-Ready Processor Core Written From Scratch
Closest projects by meaning, across every fair and year in the corpus.
Source: Regeneron International Science and Engineering Fair