Test di uguaglianza

di Paolovox il
6 risposte
Tratto dal libro.
Se il salto è del tipo "salta se uguale" si devono confrontare i due registri letti nello stadio ID per verificare se sono uguali.
Il test di uguaglianza può essere eseguito mettendo innanzitutto in OR esclusivo i bit corrispondenti, e poi mettendo in AND i risultati.


Non comprendo il test di uguaglianza.

OR esclusivo = XOR
a b | a xor b
0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 0

Se ad esempio ho due registri A=010 e B=010, A xor B = 000 e l'and come lo faccio?

6 Risposte

  • A quale assembler ti riferisci?
  • Non serve sapere di quale assembly parliamo dato che è un quesito teorico generale.

    Paolo ... ci si sta riferendo a bit ... ma forse c'è una inesattezza ... l'operazione tra registri deve essere XNOR che ha tavola della verità

    Input Output
    A B
    0 0 1
    0 1 0
    1 0 0
    1 1 1

    e quindi il tuo problema diventa

    010 xnor
    010
    ===
    1 and 1 and 1 = 1

  • And logico e vero solo quando tutti i bit sono posti a 1
    mentre lo xor e vero solo quando uno dei due bit e posto a 1
  • smalldragon ha scritto:


    and logico e vero solo quando tutti i bit sono posti a 1
    mentre lo xor e vero solo quando uno dei due bit e posto a 1
    Non serve lo xor ma lo xnor
  • C'era un refuso nel testo del libro e lo avevo risolto un pò di tempo fa ma ho dimenticato di comunicarlo.
    Oregon la tua soluzione va benissimo. Io l'avevo risolto come nell'allegato, ovvero una cascata di xor che finiscono in una nor.
    Grazie mille e buon primo maggio
    Allegati:
    14867_30e2d86e969140f1e4117af13ac6bb6f.png
    14867_30e2d86e969140f1e4117af13ac6bb6f.png
  • E' uguale perché una xor equivale ad una xnor seguita da un not e se sposti le not agli ingressi dell'and avrai una and con gli ingressi negati, ovvero una nor (teorema di De Morgan)

    Quindi

    010 xor
    010
    ===
    not(0 or 0 or 0) = 1
Devi accedere o registrarti per scrivere nel forum
6 risposte