Πίσω

Παράδειγμα 4:


Το ακόλουθο πρόγραμμα είναι ελαφρώς τροποποιημένο από το αντίστοιχο πρόγραμμα της 6ης ενότητας, για συμβατότητα με τον Windlx.

main:
;***Initialization
addi  r1,r0,0
addi  r4,r0,2
addi  r7,r0,3
addi  r8,r0,4
nop nop
;***Example
1. sub  r10,r4,r8
2. beqz  r1,name
3. and  r12,r2,r5
4. or  r13,r2,r6
5. add  r14,r4,r2
6. slt  r15,r6,r7
name: add  r4,r4,r7


Παρουσιάζεται κίνδυνος ελέγχου στην εντολή 3, όταν ακόμα δε γνωρίζουμε αν θα ακολουθήσει η διακλάδωση.



Στην προκειμένη περίπτωση η διακλάδωση ακολουθείται, οπότε ανακόπτεται η εκτέλεση της εντολής 3, κάτι που δε συμβαίνει στο παρακάτω πρόγραμμα,

main:
;***Initialization
addi  r1,r0,1
addi  r4,r0,2
addi  r5,r0,3
addi  r6,r0,4
addi  r7,r0,5
addi  r8,r0,6
;***Example
1. sub  r10,r4,r8
2. beqz  r1,name
3. and  r12,r2,r5
4. or  r13,r2,r6
5. add  r14,r4,r2
6. slt  r15,r6,r7
name: lw  r4,50(r7)


όπου η διακλάδωση δεν ακολουθείται, επομένως η εκτέλεση των εντολών συνεχίζεται απρόσκοπτα.



Στους κινδύνους ελέγχου δεν μπορεί να επέμβει ο Windlx.