Πίσω

Παράδειγμα

   Να δείξετε την ανάπτυξη του βρόχου και να καθορίσετε τις εξαρτήσεις ελέγχου. Πως οι εξαρτήσεις ελέγχου μετακινήθηκαν ;

Aπάντηση

Κάθε εντολή, εκτός από αυτές του αρχικού βασικού μπλοκ, έχει εξάρτηση ελέγχου από τις εντολές διακλάδωσης BEQZ. Οι εξαρτήσεις ελέγχου φαίνονται με τα βέλη. Η συνθήκη BEQZ είναι συμπληρωματική της BNEZ και μας προστατεύει από κακή εκτέλεση του προγράμματος. Συγκεκριμένα η εντολή διακλάδωσης BEQZ δεν επιτρέπει το περιεχόμενο του καταχωρητή R1 να γίνει αρνητικό, εφόσον δεν υπάρχουν αρνητικές θέσεις μνήμης.
Η παρουσία των ενδιάμεσων εντολών διακλάδωσης, BEQZ, εμποδίζει :

  • Τις αλλαγές των εξαρτήσεων ελέγχου που προκύπτουν από τη μετακίνηση των εντολών, αν είχαμε προγραμματισμό του βρόχου.
  • Την απομάκρυνση των εντολών SUBI, αφού η νέα τιμή του R1 σε κάθε εντολή SUBI, χρησιμοποιείται σε κάθε εντολή διακλάδωσης BEQZ.

Πρωταρχικός στόχος λοιπόν, είναι να αφαιρέσουμε τις ενδιάμεσες εντολές διακλάδωσης, με αποτέλεσμα την αλλαγή των εξαρτήσεων ελέγχου και την απομάκρυνση των περιττών εντολών SUBI. Σε αυτή την περίπτωση το περιεχόμενο του R1 είναι πολλαπλάσιο του 32 και επομένως ο αριθμός των επαναλήψεων του βρόχου είναι πολλαπλάσιο του 4. Επειδή η συνθήκη των τριών ενδιάμεσων BEQZ είναι συμπληρωματική, οι εντολές BEQZ δεν εκτελούνται και τις απομακρύνουμε. Έτσι λοιπόν, καμία εντολή δεν έχει εξάρτηση ελέγχου από τις διακλαδώσεις.