Projet en binôme en Rust
Compétences visées : apprendre un nouveau langage de programmation pour reproduire le fonctionnement d’un processeur dans un programme respectant une spécification stricte.
Le but était de développer un logiciel permettant d’émuler un ordinateur basé sur un processeur RISC-V, en utilisant un langage de programmation autre que Java ou Javascript. Le programme prend en paramètre un fichier compilé et retrace ses instructions avec un mode pas à pas.
Compétences techniques
- Développer en Rust
- Créer des Dockerfiles (pour le rendu de livrables)
- Savoir gérer la mémoire dans un programme
- Savoir gérer les erreurs dans un programme
- Gérer des périphériques d’entrée et de sortie
Autres compétences requises
- Comprendre la spécification RISC-V
- Connaître le fonctionnement d’un processeur
- Comprendre le langage assembleur
- Comprendre un jeu d’instructions
- Comprendre le fonctionnement du semihosting
Ce que ce projet m’a apporté
- Le projet était découpé en plusieurs parties (d’abord créer un décodeur, puis un désassembleur, puis un processeur, puis ajouter les périphériques), ce qui a permis de comprendre progressivement chaque élément nécessaire au logiciel. J’ai appris énormément de choses sur le fonctionnement d’un processeur, que je connaissais très peu avant ce projet.
- J’ai appris un nouveau langage, Rust, que nous avons choisi en binôme par curiosité et par intérêt quant à son utilisation. J’ai pu revoir ou apprendre certaines notions relatives à la gestion des adresses mémoires, du typage, ou encore tout simplement comprendre la structure d’un projet Rust.
- Il y a eu beaucoup de difficultés rencontrées concernant des bugs, des incohérences, des erreurs d’implémentation. J’ai été très challengé dans ma capacité à raisonner, à rechercher correctement dans une documentation, et à débugger, des compétences que je suis reconnaissant d’avoir pu développer sur ce projet.