Skip to content

ARM Assembler Editor and Simulator written in C++ with QT5 and ANTLR 4.8

License

Notifications You must be signed in to change notification settings

MrDiver/ArmSimulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArmSimulator V 0.6

This project is for educational purposes. The final product will represent a Simulator for basic ARM processor behavior. The first version aims at comepletely emulating the ARMv4 infrastructure and the complete instruction set.

Download and Install

Click on the releases tab in the top bar or click on https://github.com/MrDiver/ArmSimulator/releases. There you can find all the versions. To download just click on the assets button below the release and download the archive that matches your operating system. After that extract the files and run the ArmSimulator executable.

Planned Features

  • More Commands
  • Adding an error listener to the parser for error highlighting
  • Add basic patterns in the menu for easy access and insertion in the code (WHILE, FOR, IF ELSE, SWITCH)

Far future plans

  • Add autocompletion for assembly language
  • Reallocate semantics to external linter library
  • Add optimization hints to the code

Problems

The grammar is not the best sooooo there are some issues with putting commands behind labels and so on. But im lazy and it works if you put a newline after every command and or label.

Current Features

General

  • Compiling the program to a high level instruction sequence for the processor
  • Almost complete arm instruction set recognition for the ArmParser
  • Working breakpoints finally they arrived for everyone !!!
  • Implemented commands
    • MOV, MVN, CMP, CMN, TST, TEQ, ADD, SUB, RSB, ADC, SBC, RSC, AND, BIC, EOR, ORR, ASR, LSL, LSR, ROR, B, BL, BX, LDR, STR, PUSH, POP, MUL
  • Conditional execution
  • Register Preview
  • Memory Preview
  • Stack Pointer is highlighted in Memory Preview
  • Endless loop prevention by only allowing a certain amount of instructions per run
  • Console output window displays return value at last instruction

Gui

  • Marking the line that is going to be executed on a step command
  • Basic Syntax highlighting for the ARM assembly language
  • Using the error list to indicate Errors inside of commands during execution
  • Cstyle Comments everywhere

  • Adding breakpoints via mouse and context menu
  • working console window ( currently not used but its printing "Output:" and is tested to be working)

Quality of Life

  • Warning for unsaved files
  • Basic shortcuts for every action. And standard shortcuts that everyone expects to work
  • A list that displays recent files that can be opened with clicking on them

Preview Gifs

Debugger preview

Endless Loop Prevention

File management

Fun with Lexing

The basic behavior of the Lexer for correctly parsing ARM assembly files

A really really long preview of an AST for an assembly program

About

ARM Assembler Editor and Simulator written in C++ with QT5 and ANTLR 4.8

Resources

License

Stars

Watchers

Forks

Packages

No packages published