Instrucciones de Control
Repeat - until
Se pueden expresar de la forma:
et1: instrucciones
....
....
if( a > b) then
GOTO et2
else
GOTO et1
et2:
.....
Ejemplo:
n = 2;
c = 0;
Repeat
r1 = c + 3;
r2 = r1 * n;
n = n * 1;
until n > 11
Tripleta
(1) (=,n,2)
(2) (=,c,0)
(3) (=,r1,(4))
(4) (+,c,3)
(5) (=,r2,(6))
(6) (*,r1,n)
(7) (=,n,(8))
(8) (+,n,1)
(9) (>,n,11)
(10) (jump false,(9),(3))
(11) ....
Cuadrupla
(1) (=,n,,2)
(2) (=,c,,0)
(3) (+,c,3,t1)
(4) (=,t1, ,r1)
(5) (*,r1,n,t2)
(6) (=,t2, ,r2)
(7) (+,n,1,t3)
(8) (=,t3, ,n)
(9) (>,n,11,cmp)
(10) (jump false,cmp, ,(3))
(11) ....
Código P
lda n
ldc 2
sto
pop
lda c
ldc 0
sto
pop
lab et1
lda r1
lod c
ldc 3
adi
sto
pop
lda r2
lod r1
lod n
mpi
sto
pop
lda n
lod n
ldc i
adi
sto
pop
lod n>11
fjp et1
Instrucciones de Control
Switch
E J EMPLO
e=1;
switch (e){
case 1:
x=y+z;
break;
case 2:
x=y*z;
break;
default:
x=0;
break;
}
TRIPLETA
e=1;
switch (e){
case 1:
x=y+z;
break;
case 2:
x=y*z;
break;
default:
x=0;
break;
}
1) = , e , 1
2) == , e , 1
3) salta si no es igual, (2), (7)
4) + , y , z
5) =, x , (4)
6) salta, , (13)
7) ==, e, 2
8) salta si no es igual , , (12)
9) * , y , z
10) = , x , (9)
11) salta, , (13)
12) = , x , 0
13) ...
CUADRUPLA
e=1;
switch (e){
case 1:
x=y+z;
break;
case 2:
x=y*z;
break;
default:
x=0;
break;
}
1) = , 1 , , e
2) == , e , 1 , t1
3) salta si falso, t1 , , (7)
4) + , y , z , t2
5) = , t2 , , x
6) salta, , , (13)
7) == , e , 2 , t3
8) salta si falso , t3 , , (12)
9) * , y , z , t4
10) = , t4 , ,x
11) salta, , , (13)
12) = , 0 , , x
13) ...
lda e
ldc 1
sto
pop
lod e==1
fjp et2
lda x
lod y
lod z
adi
sto
pop
jmp et4
et2
lod e==2
fjp et3
lda x
lod y
lod z
mpi
sto
pop
jmp et4
et3
lda x
ldc 0
et4
...
CÓDIGO
P
e=1;
switch (e){
case 1:
x=y+z;
break;
case 2:
x=y*z;
break;
default:
x=0;
break;
}
Repeat-until Y Switch
By Luis Olivera
Repeat-until Y Switch
Creación de Tripletas, Cuadruplas y Codigo P de las Instrucciónes de Control "Repeat-until" y "Switch"
- 373