Skip to content

HackLinux/ARM-emulator

 
 

Repository files navigation

ARM-emulator

Projet de cours en filière SICOM (Grenoble INP)

Livrable 3 : Exécution du programme

  • Jeux de tests
  • Désassemblage de toutes les instructions (sauf la version T4 de LDR et STR)
  • Implantation de la commande run
  • Mise en place de la boucle d'exécution
  • Implantation des fonctions exécutant les instructions du microprocesseur
  • Gestion des erreurs
  • Génération des traces

Livrable 2 : Désassemblage

  • Jeux de tests
  • Lecture du dictionnaire d'instructions
  • Désassemblage des instructions (disasm) [pop, push, ldr et str sont en option mais seront à faire]
  • Gestion des erreurs
  • Génération des traces

1er livrable :

  • Jeux de tests
  • Mise en place de l'interpréteur
  • Implantation de la mémoire et des registres
  • Lecture des fichiers ELF
  • Implantation des commandes de la section 5.2.1 (sauf disasm (disassemble)) et 5.2.2
  • Gestion des erreurs
  • Génération des traces

Description du programme

Le programme final (non encore totalement implémenté) est un émulateur d'une architecture ARMv7-M. Il permet de simuler l'exécution de fichiers objet ELF écrit avec la syntaxe UAL, en tout ce qui concerne la mémoire et l'utilisation des registres. Celui-ci se compose de 2 parties principales : le simulateur et l'interpréteur (termes peut-être à revoir).

Simulateur

Il est composé de 3 éléments :

  • une structure simulant la mémoire vive
  • une structure simulant les registres
  • une structure contenant le code des instructions à décoder

Interpréteur

C'est l'intermédiaire entre le simulateur et l'utilisateur. Il a 2 modes principaux :

  • mode interactif
  • mode console

Il accepte une dizaine de commandes et analyse leur syntaxe.

Commandes acceptées par l'interpréteur

{} : facultatif "+" : l'argument doit être donné au moins une fois

  • charger un fichier : "load <nom_de_fichier> {}"
  • quitter : "exit"
  • afficher des zones de la mémoire : "disp mem +"
  • afficher le map mémoire : "disp mem map"
  • afficher des registres : "disp reg "
  • décoder et afficher du code obj : "disasm +"
  • modifier un registre : "set reg "
  • modifier un octet en mémoire : "set mem "
  • évaluer un registres : "assert reg "
  • évaluer un octet en mémoire : "assert byte "
  • évaluer un mot en mémoire : "assert word "
  • exécuter à partir d'un adresse : "run {}"
  • exécuter en mode pas à pas : "step" "step into"
  • ajouter des points d'arrêt : "break add +"
  • supprimer des points d'arrêt : "break del +|all"
  • afficher les points d'arrêts : "break list"

commandes spécifiques à l'exécution en mode script :

  • donner la main à l'utilisateur : "debug"
  • revenir à l'exécution du script : "resume"

About

Projet de cours en filière SICOM (Grenoble INP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 92.4%
  • Shell 5.3%
  • Makefile 2.3%