CHAPITRE 8 Les booléens et les chaines de bits 1
Les booléens Le booléen est le type le plus élémentaire Peut prendre la valeur vrai (1) Peut prendre la valeur faux (0) On peut définir plusieurs opérations sur les booléens ET logique OU logique OU exclusif L’implication L’équivalence Le complément 2
Les booléens On définit les opérations par des tables de vérité 3 Y 01 X Y 01 X Y 01 X Y 01 X Y 01 X X 01 10
Les chaines de bits Les processeurs ne sont pas faits pour atteindre directement 1 seul bit La mémoire comporte un ensemble d’octets Soit on met un booléen par octet (perte d’espace) Soit on utilise plusieurs instructions pour accéder à un bit Sur le SPARC, on ne peut accéder à un seul bit à la fois On fait les opérations sur une chaine de bits Finalement, toute valeur dans un ordinateur est une chaine de bits! 4
Instructions 5 and%r1, {%r2 | imm 13 }, %rd andcc%r1, {%r2 | imm 13 }, %rd andn%r1, {%r2 | imm 13 }, %rd andncc%r1, {%r2 | imm 13 }, %rd Y 01 X Y 10 X
Instructions 6 or%r1, {%r2 | imm 13 }, %rd orcc%r1, {%r2 | imm 13 }, %rd orn%r1, {%r2 | imm 13 }, %rd orncc%r1, {%r2 | imm 13 }, %rd Y 01 X Y 10 X
Instructions 7 xor%r1, {%r2 | imm 13 }, %rd xorcc%r1, {%r2 | imm 13 }, %rd xorn%r1, {%r2 | imm 13 }, %rd xorncc%r1, {%r2 | imm 13 }, %rd Y 01 X Y 10 X
Application ANDANDN = = 0110
Application ORORN = = 0110
Application XORXORN = = 0110
Instructions synthétiques 11 tst %l0 orcc%g0, %l0, %g0 not %l0 xnor%l0, %g0, %l0 btst %l0, %l1, %l0 andd%l0, %l1, %l0 bset %l0, %l1, %l0 or%l0, %l1, %l0 bclr %l0, %l1, %l0 andn%l0, %l1, %l0 btog %l0, %l1, %l0 xor%l0, %l1, %l0 Le dernier opérande des quatre dernières instructions est appelé un masque.
Instructions synthétiques 12
Les décalages Permet de décaler les bits d’une chaine de bits Autant vers la gauche que vers la droite Permet d’isoler, ou d’insérer un ou plusieurs bits Un décalage peut être Logique Arithmétique Circulaire 13
Les décalages Décalage logique à droite srl %l0, 3, %l0 srlx %l0, %l4, %l0 La valeur du décalage est représentée par les 5 bits de poids faible De l’immédiat Du registre
Les décalages Décalage logique à gauche sll %l0, 3, %l0 sllx %l0, %l4, %l0 La valeur du décalage est représentée par les 5 bits de poids faible De l’immédiat Du registre
Les décalages Décalage arithmétique à droite sra %l0, 3, %l0 srax %l0, %l4, %l0 La valeur du décalage est représentée par les 5 bits de poids faible De l’immédiat Du registre Le bit de signe est inséré
Les décalages Décalage arithmétique à gauche Dès qu’un bit perdu diffère du bit de signe Le bit V (overflow) du registre CC est levé. N’existe pas sur le SPARC Le bit de signe ne bouge pas
Les décalages Décalage circulaire C’est un décalage nécessairement logique N’existe pas sur le SPARC
Autres instructions Il existe d’autres instructions pour manipuler les chaines de bits 19 signxreg! Étend un entier signé de 32 bits sur 64 bits clruwreg! Réduit un entier signé de 64 bits sur 32 bits setuwcst, reg! Met un entier non signé de 32 bits dans un registre setswcst, reg! Met un entier signé de 32 bits dans un registre popcreg, rd! Compte le nombre de bits à 1 dans le reg
Circuits logiques Un ordinateur fonctionne à l’électricité 1 Il y a du courant 0 Il n’y a pas de courant Il est possible d’utiliser les opérations booléennes pour former des circuits logiques Au chapitre 5, on a vu que la multiplication pouvait être effectuée grâce à des décalages On peut utiliser les opérations booléennes pour faire des additions 20
Additionneur = =0110 Y 01 X c = Y 01 X
Additionneur Pour une addition 1 bit, on a besoin D’un XOR pour la somme D’un AND pour la retenue Ça ne donne qu’un demi-additionneur! 22 A B Somme Report
Additionneur Pour une addition sur 1 bit, en prenant en considération une potentielle retenue déjà calculée On doit mettre deux demi-additionneurs en série Suivi d’un OU pour le calcul de la retenue finale 23 A B Somme Report R
Additionneur = ABR Entrée SR Sortie xor A, B, T xor T, C, S and A, B, C1 and T, C, C2 or C1, C2, C