Projet d'Architecture des Ordinateurs 20/21 — Foire aux Questions

1 Rappels généraux

Les questions/réponses ci-dessous ne remplacent pas une lecture attentive du sujet. En cas d'incohérence entre cette FAQ et le sujet, ce dernier prime.

2 Foire aux questions

2.1 Dois-je implémenter une version pipelinée du LC-3 ?

Bien sûr que non !

2.2 Comment obtenir un fichier .mem à partir d'un code assembleur ?

Les lc3tools, que ce soit la version fournie sur la page du cours ou celle, expérimentale, fournie plus bas, sont capables de produire les fichiers .mem que Logisim peut charger dans la RAM de votre circuit. Il suffit de les installer via les commandes suivantes, où XXX désigne le répertoire d'installation.

$ cd lc3tools
$ ./configure --installdir XXX
$ make
$ make install

(Toutefois, attention à la question suivante !)

2.3 Pourquoi l'instruction LEA produit-elle des résultats différents entre lc3sim et mon circuit ?

Le processus d'assemblage pour aller du fichier .asm au fichier .mem est constitué de deux étapes :

  1. l'assemblage via lc3as, qui produit un fichier .obj, et
  2. la traduction du fichier .obj en fichie .mem, qui consiste simplement à afficher le code binaire de chaque instruction en hexadécimal.

Le fichier .mem peut ensuite être chargé dans votre circuit écrit en Logisim. La simulation via lc3sim ignore la seconde étape et utilise directement le fichier .obj.

La raison pour laquelle vous pouvez observer des adresses différentes entre la simulation via votre circuit (en logisim) et lc3sim est simple : l'étape 2 ignore la directive .orig du fichier source, et place le début du code à l'adresse 0x0000. Si vous spécifiez via .orig une adresse différente de 0000, les instructions et données seront donc placées à des adresses différentes avec lc3sim.

Par exemple, le programme ci-dessous termine avec R0 valant 0x1002 avec lc3sim, et 0x0002 avec logisim.

      .ORIG x1000
      LEA R0, addr
      BR end
addr: .FILL x0000
end:  NOP
      .END

Pour éviter cette incohérence entre le projet et le simulateur fourni, utilisez systématiquement .ORIG x0000 dans vos programmes assembleur.

2.4 Comment tester mes programmes assembleurs utilisant GETBIT/SETBIT ?

Les instructions GETBIT et SETBIT que vous devez ajouter à votre processeur ne fait pas partie de l'architecture LC3. Pour cette raison, les outils standard ne sont pas capables de la traiter. Pour tester vos programmes assembleur utilisant cette instruction, vous avez donc deux possibilités.

  1. Vous pouvez réaliser l'assemblage vous même, en éditant le fichier .mem généré pour remplacer un NOP judicieusement placé dans votre fichier source par l'encodage de l'instruction GETBIT ou SETBIT qui vous intéresse.
  2. Vous pouvez utiliser cette version expérimentale des lc3tools, patchée pour supporter GETBIT et SETBIT.

Si vous adoptez la première possibilité, veuillez à nous fournir les fichiers .mem ainsi que le fichier .asm où les NOP qui doivent être remplacés par une instruction GETBIT ou SETBIT ont été commentés avec la dite instruction !

Author: Alexandre Brière & Adrien Guatto

Created: 2021-10-27 mer. 17:26

Validate