AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  ConnexionConnexion  
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 [JOUR 5] Suite de Data-Processing etc...

Aller en bas 
AuteurMessage
Manael
Lama Impérial
Manael



[JOUR 5] Suite de Data-Processing etc... Empty
MessageSujet: [JOUR 5] Suite de Data-Processing etc...   [JOUR 5] Suite de Data-Processing etc... EmptyLun 8 Jan - 16:17

Yo !

Du coup j'ai fini mes opérateurs :

- TST : Fait
- TEQ : Fait
- CMP : Fait
- CMN : Fait
- ORR : Fait
- MOV : Fait
- BIC : Fait
- MVN : Fait

Je vais revenir du coup sur leur fonctionnement. Je rappelle, une instruction en data-processing a la forme suivante :

[JOUR 5] Suite de Data-Processing etc... Graphi10

Où :

- opcode est le numéro de l'opérateur (ADD, SUB, MOV etc...)
- Rn est l'opérande n°1, TOUJOURS stocké dans un registre.
- shifter_operand est l'opérande n°2, qui peut être un registre ou une valeur immédiate. [ je reviens sur cette variable particulière dans le jour d'après !]
- Rd est le registre où sera stocké le résultat.

- I permet de savoir si shifter_operand est un registre (=0) ou une valeur immédiate (=1).
- S permet de savoir si les FLAGS doivent être actualisés (=1) ou pas (=0).

ATTENTION :
- Certaines opérations n'ont Qu'UNE SEULE opérande (MOV, BIC etc...). Par conséquent, seul le shifter_operand est observé, et Rn est oublié.
- Certaines opérations ne sont là que pour des TESTS, seul les FLAGS sont importants et le résultat en lui-même importe peu. Par conséquent, il n'y a pas de registre Rd  pour stocker le résultat. Par contre, S n'est pas pris en compte non plus et les Flags sont obligatoirement modifiés.

--------------------------------------------------------------------------------------------------------------------------

AND : (p159 du manuel) Effectue le "ET" bit à bit.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


EOR : (p183 du manuel) Effectue le "OU" Exclusif bit à bit.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


SUB : (p359 du manuel) Effectue une soustraction.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


RSB : (p265 du manuel) (Reverse substract) C'est une bête soustraction, mais on inverse le sens des opérandes.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


ADD : (p157 du manuel) Effectue une addition.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


ADC : (p155 du manuel) (Add with Carry) Effectue une addition avec Retenue. En gros : A + B (+1 si le C du ZNCV est égal à 1).

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


SBC : (p276 du manuel) (Substract with Carry) Simple soustraction, mais avec retenue.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


RSC : (p268 du manuel) (Reverse Substract with Carry) C'est une soustraction inversée (voir RSB) mais avec retenue (voir SBC).

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


TST : (p380 du manuel) (Test) C'est comme un AND, il permet de comparer 2 valeurs. Son réel usage est de voir la valeur du bit numéro X de l'opérande 1, en lui appliquant le bon masque (avec l'opérande 2).

  • FLAGS OBLIGATOIRE (S inutile)
  • opération à 2 opérandes
  • Rd est inexistant (car inutile de stocker le résultat)


TEQ : (p378 du manuel) (Test Equivalence) C'est comme un EOR, il permet de savoir si 2 valeurs sont égales, notamment de savoir s'ils sont du même signe.

  • FLAGS OBLIGATOIRE (S inutile)
  • opération à 2 opérandes
  • Rd est inexistant (car inutile de stocker le résultat)


CMP : (p178 du manuel) (Compare) Compare deux valeurs, par le biais d'une soustracton : si opérande 1 = opérande 2, alors Z = 1. Sinon si opérande 1 < opérande 2, N = 1. Sinon... Z et N = 0. La différence avec TEQ, c'est que celui-ci n'affecte pas le V flag, contrairement à CMP.
  • FLAGS OBLIGATOIRE (S inutile)
  • opération à 2 opérandes
  • Rd est inexistant (car inutile de stocker le résultat)


CMN : (p176 du manuel) (Compare Negative) Compare en effectualnt la soustraction mais avec le complément de l'opérande 2. Il est assez semblable à CMP, mais celui-ci affecte moins le C flag.
  • FLAGS OBLIGATOIRE (S inutile)
  • opération à 2 opérandes
  • Rd est inexistant (car inutile de stocker le résultat)


ORR : (p234 du manuel) Effectue le "OU" Inclusif bit à bit.

  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


MOV : (p218 du manuel) (Move) Envoie une valeur à un registre donné.

  • FLAGS facultatif (vérifier S)
  • opération à UNE OPERANDE (Rn est inutile)
  • Le résultat doit être stocké dans Rd.


BIC : (p162 du manuel) (Bit Clear) Met à 0 les bits selectionnés (dans l'opérande 2)
  • FLAGS facultatif (vérifier S)
  • opération à 2 opérandes
  • Le résultat doit être stocké dans Rd.


MVN : (p232 du manuel) (Move Not) Il donne juste le négatif de l'opérand (permet de former un masque par exemple)
  • FLAGS facultatif (vérifier S)
  • opération à UNE OPERANDE (Rn est inutile)
  • Le résultat doit être stocké dans Rd.
Revenir en haut Aller en bas
 
[JOUR 5] Suite de Data-Processing etc...
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
GP-12 :: Organisation :: Planning-
Sauter vers: