Δραστηριότητα 9
Έστω ο ακόλουθος κώδικας:
Κατά την εκτέλεση του προηράμματος προκύπτει κίνδυνος ελέγχου από την εντολή διακλάδωσης με συνθήκη. Για να αντιμετωπιστείο ο κίνδυνος σε αυτή την περίπτωση, μπορεί ο μεταγλωττιστής να προγραμματίσει τη σχισμή καθυστέρησης διακλάδωσης με την εντολή πριν από την εντολή BNEZ. Αυτό μπορεί να το κάνει επειδή δεν υπάρχει κίνδυνος δεδομένων μεταξύ της εντολής διακλάδωσης και της εντολή SUB.
SUB R1, R2, R3
BNΕZ R3, N
OR R4, R5, R2
………………….
N: AND R5, R3, R2
· Αν εκτελεστεί ο παραπάνω κώδικας υπάρχει περίπτωση να εμφανιστεί κάποιος κίνδυνος;
· Τι είδος κίνδυνος είναι αυτός και σε ποιο σημείο του κώδικα εμφανίζεται;
· Να προτείνετε τρόπο αντιμετώπισης του κίνδυνου που πιθανόν προκύπτει.
Απάντηση δραστηριότητας 9
Η εντολή 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