Chapitre 6 Instructions Pep/8, factorisation et refactorisation Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 1 / 23
Plan 1 Instructions machines 2 Instructions logiques 3 Instructions spéciales 4 Branchements et sous-programmes Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 2 / 23
Plan 1 Instructions machines 2 Instructions logiques 3 Instructions spéciales 4 Branchements et sous-programmes Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 3 / 23
Processeurs Processeur = travailleur Chacun à son jeu d instructions Il existe des familles de processeur Pep/8 Processeur simplifié 39 instructions 1 ou 3 octets Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 4 / 23
Code d instruction Un octet Code d opération (4 à 8 bits) Bits de paramètres registre adressage... Exemples 0000 0000 : STOP 0001 101r : NEGr 0111 raaa : ADDr Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 5 / 23
Programmes non purs Principe Les instructions sont des octets en mémoire Or, on peut modifier les octets en mémoire Donc, on peu modifier les instructions lors de l exécution le programme s écrit lui-même Programme dit «non pur» Ses instructions se modifient à l exécution Style à proscrire Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 6 / 23
Exercices : programmes non purs Simulation accès indexé Écrire un programme non pur qui affiche un chaîne en utilisant que les adressages directs et immédiats Idée : récrire des spécificateurs d opérandes Calculatrice juste-à-temps Écrire un programme non pur qui demande un nombre d opération n et un opérateur (+ ou -) ; puis demande n pairs d opérandes et affiche pour chaque pair le résultats de l opération Idée : en fonction de l opérateur, générer une fois pour toute l instruction arithmétique adaptée Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 7 / 23
Plan 1 Instructions machines 2 Instructions logiques 3 Instructions spéciales 4 Branchements et sous-programmes Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 8 / 23
Instruction logiques Opérations sur bits Une valeur est un ensemble de bits Utilisation Traiter des tas de bits Traites des valeurs via leur représentation binaire Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 9 / 23
Instructions bit-à-bit Instruction NOTr Inverse les bits (0 1 et 1 0) Exercice : ~0xEF01 =? Instruction ANDr Fait le «et» binaire des opérandes (1 et 1 1, sinon 0) Exercice : 0xEF01 & 0x7FAF =? Instruction ORr Fait le «ou» binaire des opérandes (0 et 0 0, sinon 1) Exercice : 0xEF01 0x7FAF =? Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 10 / 23
Instruction bit-à-bit Attention NOTr, ANDr et ORr ne sont pas les connecteurs logiques booléens NEGr NOTr Exercice Écrire un programme qui transforme les minuscules en majuscules. Dur : écrire un programme qui vérifie si un nombre est une puissance de 2 Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 11 / 23
Instructions de décalage Instruction ASLr : décalage à gauche Le bit de poids fort est rangé dans C Le nouveau bit de poids faible est 0 Exercice : 0xABCD << 1 =? Instruction ASRr : décalage à droite Le bit de poids faible est rangé dans C Le nouveau bit de poids fort vaut l ancien Exercice : 0xABCD >> 1 =? Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 12 / 23
Instructions de décalage Attention Travaillent en 16 bits signés Exercices Écrire un programme qui multiple un nombre par 100 Écrire un programme qui affiche le nombre de bits à 1 d un nombre 16 bits signé Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 13 / 23
Instructions de décalage circulaire Instruction ROLr : rotation à gauche Ancien bit fort nouveau C Ancien C nouveau bit faible Instruction RORr : rotation à droite Ancien C nouveau bit fort Ancien bit faible C En pratique Peu d usage car C est difficilement contrôlable en Pep/8 Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 14 / 23
Plan 1 Instructions machines 2 Instructions logiques 3 Instructions spéciales 4 Branchements et sous-programmes Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 15 / 23
Instructions non réalisées Instructions NOPn et NOP Ne font rien 12 spécificateurs d instruction Utilité Place pour commentaires Place pour code généré (programmes non purs) Appel systèmes Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 16 / 23
Instructions de transfert spéciaux Instruction MOVSPA Copie le pointeur de pile vers A Instruction MOVFLGA Copie NZVC vers A Attention Vers A seulement Dans un sens seulement Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 17 / 23
Plan 1 Instructions machines 2 Instructions logiques 3 Instructions spéciales 4 Branchements et sous-programmes Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 18 / 23
Instructions de branchement Déjà vus : BR et BRcond Branche (conditionelement) à une adresse PC opérande Adressages Immédiat ou indexé Exercice Écrire un programme qui affiche un menu fonctionnel (mais qui ne fait rien) Idée : traduire un switch/case en BR indexé Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 19 / 23
Exercice Sommes Écrire un programme qui demande deux nombres affiche leur somme demande deux autres nombres affiche leur somme indique si cette dernière est la plus grande Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 20 / 23
Appel de sous-programmes Instruction CALL Empile la valeur du compteur ordinal (2 octets) Branche à l adresse indiquée Instruction RETn Dépile n octets (pour l instant 0) Dépile 2 octets et branche à cette adresse Utilisation Sous-programmes (procédures et fonctions) Exercice Refaire l exercice précédent Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 21 / 23
Manipulation de pile Instruction ADDSP Dépile des octets Instruction SUBSP Empile des octets Plus tard Semaine 8 Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 22 / 23
Retour d appel système Instruction RETTR Retour de TRAP Encore plus tard Semaine 11 Jean Privat (UQAM) 06 Instructions INF2170 Automne 2013 23 / 23