Πίσω
Παράδειγμα 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.