L1 MIASHS - UFR Mathématiques et Informatique 2014 - 2015 Architecture des ordinateurs TD6 - Processeur HACK et assembleur Le processeur Hack possède : • une zone mémoire ROM dans laquelle est chargée le programme à exécuter • une zone mémoire RAM pour stocker et lire des données • une ALU qui décode et exécute les instructions de la ROM • 3 registres principaux : PC qui comporte l’adresse de la prochaine instruction à exécuter dans la ROM (compteur ordinal) A destiné à contenir une adresse à laquelle accéder dans la RAM D pour stocker les résultats temporaires des calculs de l’ALU. On considère deux types d’instruction : • les A-instructions (adresses), • les C-instructions (commandes). 1) Les A-instructions Notation @value Exemple @17 Permet de charger la valeur 17 dans le registre A (registre d’adresse) 1 L1 MIASHS - UFR Mathématiques et Informatique 2014 - 2015 2) Les C-instructions Les C-instructions agissent sur les registres D et A et la mémoire M pointée par A. Notation dest = comp ; jump Exemples D = D+1 : Ajoute 1 au registre D M = D : Copie la valeur de D dans la mémoire à l’adresse contenue en A D;JGT : Copie la valeur de A dans PC si D est supérieur à 0 D=D+1;JGT : Met D+1 dans D et copie A dans PC si D+1>0 dest peut valoir : M, D, A, MD, AM, AD, AMD ou être vide. comp peut valoir : 0, 1, -1, A, D, M, !A, !D, !M, -A, -D, -M, A+1, D+1, M+1, A-1, D-1, M-1, D+A, D-A, A-D, D+M, D-M, M-D, D|A, D|M, D&A, D&M-D. jump peut valoir : JGT, JEQ, JGE, JLT, JNE, JLE, JMP ou être vide. 1) Les A-instructions en binaire Format : 0 a1 a2 a3 a4 a5 a6 a7 a8 a9 value a10 a11 a12 a13 a14 a15 2) Les C-instructions en binaire Format : c1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 c2 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 c3 1 1 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 a c4 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 c5 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 c6 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 1 d1 0 0 0 0 1 1 1 1 c1 c2 c3 c4 comp Avec a = 0 0 1 -1 D A !D !A -D -A D+1 A+1 D-1 A-1 D+A D-A A-D D&A D|A d2 0 0 1 1 0 0 1 1 d3 0 1 0 1 0 1 0 1 c5 c6 d1 d2 d3 dest j1 j2 j3 jump Avec a = 1 M D MD A AM AD AMD j1 0 0 0 0 1 1 1 1 M !M -M M+1 M-1 D+M D-M M-D D&M D|M j2 0 0 1 1 0 0 1 1 j3 0 1 0 1 0 1 0 1 JGT JEQ JGE JLT JNE JLE JMP PC = A si ... Jamais ... comp > 0 ... comp = 0 ... comp ≥ 0 ... comp < 0 ... comp 6= 0 ... comp ≤ 0 Toujours Le résultat de comp est stocké dans... nulle part la mémoire (en M[A]) le registre D la mémoire ET le registre D le registre A le registre A PUIS la mémoire les registres A ET D les registres A et D PUIS la mémoire 2