Differences

This shows you the differences between two versions of the page.

Link to this comparison view

alf:teme:tema_1 [2021/03/06 21:46]
diana.ghindaoanu created
alf:teme:tema_1 [2021/03/17 16:33] (current)
alexandru.radovici [Conseils d'implémentation]
Line 3: Line 3:
 ===== Information ===== ===== Information =====
 <note important>​ <note important>​
-Deadline: ** le 21 Mars, 23:55** +Deadline: ** le 21 Mars, 23:55**\\ 
-Points: **1 point** de la note finale +Points: **1 point** de la note finale\\ 
-Link:+Link: [[https://​classroom.github.com/​a/​olSpOMPY|Devoir 1]]\\
 Téléchargement tardif: **1p/jour** (maximum 2 jours) Téléchargement tardif: **1p/jour** (maximum 2 jours)
 </​note>​ </​note>​
Line 151: Line 151:
  stack ; imprime [ 1 2 ]  stack ; imprime [ 1 2 ]
  </​code>​|  </​code>​|
 +
 +
 +==== Erreurs ====
 +Le fichier que le simulateur de processeur exécute peut contenir des erreurs. Lorsque le simulateur rencontre une erreur, il ignore cette instruction et continue l'​exécution avec la ligne suivante.
 +
 +Le format d'​erreur général est:
 +<​code>​
 +ERROR (nom_instruction):​ texte d'​erreur
 +</​code>​
 +
 +<​note>​Les erreurs doiventetre affichés exactement comme dans l'​exemple suivant: </​note>​
 +
 +^ Erreur ^ Signification ^ Exemple ^
 +| unknown instruction | le simulateur a trouvé une instruction qu'il ne connaît pas | <code asm>​multi ; ERROR (multi): unknown instruction</​code>​ |
 +| stack underflow | le simulateur essaie d'​exécuter une instruction qui extrait certaines valeurs de la pile, mais la pile n'a pas assez de valeurs | <code asm>push 1
 + mul ; ERROR (mul): stack underflow</​code>​|
 +| unable to open file ''​filename''​ (''​node error message''​) | le simulateur tente d'​ouvrir un fichier qu'il ne peut pas ouvrir | <code bash>$ node index not_a_filename.asm
 +ERROR unable to open file filename.asm(ENOENT:​ no such 
 +file or directory, open '​filename.asm'​)</​code>​|
 +| undefined label | le simulateur essaie de faire un jump à une étiquette qui n'est pas définie | <code asm>jump jumper ; ERROR (jump): undefined label jumper</​code>​|
 +| invalid jump address | le simulateur essaie de faire un jump à une adresse (numéro de ligne) qui n'​existe pas dans le fichier | <code asm> jump 2 ; ERROR (mul): invalid jump address 2</​code>​|
 +
 +===== Exécution du simulateur =====
 +
 +Pour exécuter le simulateur, un utilisateur va taper la commande:
 +
 +<code bash>
 +$ node index.js filename.asm
 +</​code>​
 +
 +Le simulateur lira les instructions du fichier donné en paramètre et les exécutera.
 +
 +Si aucun paramètre n'est indiqué, le message suivant s'​affiche:​
 +
 +<code bash>
 +$ node index.js
 +USAGE: node index.js filename.asm
 +</​code>​
 +
 +<​note>​Le $ dans les exemples est le prompt du shell et ne fait pas partie de la commande</​note>​
 +
 +Les tests du devoir auront le format suivant:
 +
 +Tous les tests auront des instructions de débogage.
 +
 +^ Note ^ Tests ^
 +| 50% | pile et instructions mathématiques |
 +| 20% | instructions jump |
 +| 10% | étiquettes |
 +| 10% | instructions du registre |
 +| 10% | erreurs |
 +
 +===== Conseils d'​implémentation =====
 +Le devoir comprend beaucoup de fonctionnalités a implémenter,​ donc on vous suggere de suivre les étapes:
 +   - Lire le contenu du fichier dans le string s et implémenter ​ l'​erreur ''​no file''​
 +   - Séparer l'​entrée lue par ''​\n''​ (''​\r\n''​ pour Windows, assurez-vous de l'​avoir changé avant de transférer sur git), en utilisant la fonction ''​split''​
 +   - Séparer chaque ligne par ' ' (espace) et extraire l'​instruction et ses parametres
 +   - Implémenter l'​erreur ''​unknown instruction''​
 +   - Implémenter les instructions ''​push''​ et ''​pop''​ en utilisant un array de numéros pour la pile
 +   - Implémenter les fonctions mathématiques
 +   - Implémenter toutes les instructions
 +
 +
 +===== Bonus =====
 +
 +Pour **2p** supplémentaires,​ implémentez une mémoire pour le CPU. Le simulateur recevra un autre paramètre dans la ligne de commande qui représente le nombre d'​emplacements mémoire disponibles.
 +
 +Implémentez les instructions de mémoire suivantes:
 +
 +^ Instruction ^ Paramètre ^ Détails ^
 +| write | - | Extrait 2 numéros de la pile et écrit le premier a l'​emplacement de la mémoire défini par le deuxième |
 +| read | - | Extrait un numéro de la pile et lit un numéro de l'​emplacement de la mémoire défini par le premier numéro, en ajoutant le deuxieme a la pile |
 +
 +<​note>​
 +Le bonus ne sera attribué que si tous les autres tests réussissent.
 +</​note> ​
 +
 +
 +===== Règles =====
 +
 +   - Vous ne pouvez pas utiliser //RegEx// ou toute autre bibliothèque qui utiliserait des expressions régulières (outre \n\r? pour séparer les lignes d'​entrée de la source)
 +   - Le code source doit être indenté (-0.1p)
 +   - Vous devez expliquer en détail dans le Readme.md comment vous avez rédigé les devoirs (-1p)
 +
 +===== Tricher =====
 +
 +Les devoirs sont individuels. Toute tentative de tricher entraînera **0p** pour les devoirs. Un système anti-copie automatisé sera utilisé.
 +
 +===== Questions =====
 +
 +Si vous avez des questions concernant les devoirs, posez-les en publiant un problème sur le github [[https://​github.com/​UPB-FILS-ALF/​questions| repository pour les questions]] avec le format du titre //​[simulator] <titre de votre question>//​. Vous aurez besoin d'un compte github pour cela.
 +
 +<note warning>
 +** NE POSTEZ AUCUN CODE **. Cette action est considéré comme tentative de tricher et alors vous obtiendrez **0p** pour le devoir.
 +</​note>​
 +
 +Si vous souhaitez recevoir un e-mail lorsque des problèmes sont publiés ou lorsqu'​il y a de nouveaux messages, accédez au [[https://​github.com/​UPB-FILS-ALF/​questions|repository pour les questions]] github et cliquez sur //​Regarder//​.
 +
alf/teme/tema_1.1615059984.txt.gz · Last modified: 2021/03/06 21:46 by diana.ghindaoanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0