Πίσω

Δραστηριότητα 9

   Έστω ο ακόλουθος κώδικας:

    SUB   R1, R2, R3
    BNΕZ    R3, N
    OR    R4, R5, R2
    ………………….
N:    AND R5, R3, R2

· Αν εκτελεστεί ο παραπάνω κώδικας υπάρχει περίπτωση να εμφανιστεί κάποιος κίνδυνος;
· Τι είδος κίνδυνος είναι αυτός και σε ποιο σημείο του κώδικα εμφανίζεται;
· Να προτείνετε τρόπο αντιμετώπισης του κίνδυνου που πιθανόν προκύπτει.


Απάντηση δραστηριότητας 9

   Κατά την εκτέλεση του προηράμματος προκύπτει κίνδυνος ελέγχου από την εντολή διακλάδωσης με συνθήκη. Για να αντιμετωπιστείο ο κίνδυνος σε αυτή την περίπτωση, μπορεί ο μεταγλωττιστής να προγραμματίσει τη σχισμή καθυστέρησης διακλάδωσης με την εντολή πριν από την εντολή BNEZ. Αυτό μπορεί να το κάνει επειδή δεν υπάρχει κίνδυνος δεδομένων μεταξύ της εντολής διακλάδωσης και της εντολή SUB.
Η εντολή SUB εκτελείται είτε η διακλάδωση ακολουθείται είτε όχι. 1) Αν δεν ακολουθείται η διακλάδωση, τότε η εκτέλεση συνεχίζεται με την εντολή που βρίσκεται μετά την εντολή καθυστέρησης, δηλαδή εκτελείται η εντολή OR.

BNEZ          IF    ID    EX    MEM    WB
SUB                   IF       ID    EX       MEM    WB
OR                               IF      ID       EX      MEM    WB

2) Αν η διακλάδωση ακολουθείται τότε η εκτέλεση του προγράμματος συνεχίζει από τον στόχο διακλάδωσης δηλαδή από την εντολή στη διεύθυνση N

BNEZ                                 IF      ID       EX       MEM       WB
SUB                                              IF       ID          EX       MEM       WB
AND                                                         IF          ID          EX       MEM    WB