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.
- La page du cours.
- Le sujet du projet.
- La page du cours, y compris les fichiers du projet.
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 :
- l'assemblage via
lc3as
, qui produit un fichier.obj
, et - 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.
- 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'instructionGETBIT
ouSETBIT
qui vous intéresse. - Vous pouvez utiliser cette
version
expérimentale des lc3tools, patchée pour supporter
GETBIT
etSETBIT
.
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 !