Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
S
I
C
O
D
E
L
M
I
P
S
-
R
2
0
0
0
!
"
#
$
%
&
$
#
'
!
(
*
+
+
,
+
-
,
.
-
,
/
!
"
#
$
"
"
#
$
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
)
.
/
&
0
,
.
+
/
)
.
/
.
1
/
+
2
(
)
*
.
,
-
&
/
%
*
-
)
&
'
.
,
0
*
)
3
4
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
&
*
&
'
/
&
0
,
.
+
/
)
/
-
%
-
-
5
+
6
2
5
%
6
2
5
%
7
8
5
+
6
5
%
6
9
5
%
7
*
+
+
0
,
+
-
,
.
-
,
/
!
"
#
$
&
'
(
&
'
)
(
*
"
"
#
$
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
)
.
/
&
0
,
.
+
/
)
.
/
.
1
/
+
2
.
,
*
(
)
*
.
,
-
&
/
%
/
&
'
.
,
0
*
)
3
4
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
&
*
&
'
/
&
0
,
.
+
/
)
/
-
%
-
-
#
5
+
6
2
5
%
6
2
5
%
7
8
5
+
6
5
%
6
9
5
%
7
.
0
1
,
+
-
,
.
-
,
/
+
,
&
-
$
"
:
&
.
+
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
)
.
/
&
0
,
.
+
/
)
/
.
1
/
+
(
)
*
.
,
-
&
/
%
*
-
)
&
'
.
,
0
*
)
3
4
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
&
*
&
'
/
&
0
,
.
+
/
)
/
-
.
#
;
5
+
6
2
5
%
6
2
5
%
7
8
5
+
6
5
%
6
<
5
%
7
.
0
1
0
,
+
-
,
.
-
,
/
+
,
&
-
$
&
'
(
&
'
)
(
*
"
:
&
.
+
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
)
.
/
&
0
,
.
+
/
)
.
/
.
1
/
+
2
.
,
*
(
)
*
.
,
-
&
/
%
/
&
'
.
,
0
*
)
3
4
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
&
*
&
'
/
&
0
,
.
+
/
)
/
3
.
#
;
#
5
+
6
2
5
%
6
2
5
%
7
8
5
+
6
5
%
6
<
5
%
7
*
+
+
2
,
/
-
,
.
-
3
*
4
5
,
!
"
#
$
'
(
#
,
.
'
$
-
$
#
"
#
$
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
/
&
0
,
.
+
/
)
/
.
(
)
*
&
'
=
%
'
)
/
,
*
$
&
-
,
%
+
)
2
(
)
*
.
,
-
&
/
%
*
-
)
&
'
.
,
0
*
)
3
4
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
&
*
&
'
/
&
0
,
.
+
/
)
/
+
3
%
-
-
,
5
+
6
2
5
%
6
2
<
>
?
8
5
+
6
5
%
6
9
@
<
>
?
A
*
+
+
2
0
,
/
-
,
.
-
3
*
4
5
,
!
"
#
$
'
(
#
,
.
'
$
-
$
&
'
(
&
'
)
(
*
#
"
#
$
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
/
&
0
,
.
+
/
)
/
.
(
)
*
&
'
=
%
'
)
/
,
*
$
&
-
,
%
+
)
2
.
,
*
(
)
*
.
,
-
&
/
%
/
&
'
.
,
0
*
)
3
4
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
&
*
&
'
/
&
0
,
.
+
/
)
/
+
3
%
-
-
,
#
5
+
6
2
5
%
6
2
>
?
8
5
+
6
5
%
6
9
>
?
6
0
4
/
,
.
-
,
/
/
"
0
-
'
1
0
'
2
$
2
'
3
(
"
B
#
'
+
,
C
'
,
(
%
&
'
(
)
*
+
&
*
,
-
)
-
&
'
)
.
/
&
0
,
.
+
/
)
.
/
.
1
/
+
3
D
)
.
E
>
B
"
F
-
&
'
/
&
.
#
'
+
%
-
)
.
&
%
'
$
%
(
&
*
%
*
&
*
&
'
/
&
0
,
.
+
/
)
G
H
1
'
)
.
E
>
D
"
F
&
*
&
'
/
&
0
,
.
+
/
)
D
I
$
#
'
+
5
.
6
2
5
.
7
8
5
G
H
@
5
.
6
J
5
.
7
A
@
E
7
K
7
L
A
8
5
D
I
@
5
.
6
J
5
.
7
A
@
7
M
K
6
A
+
2
3
,
.
-
,
/
4
'
5
'
&
'
3
(
"
N
,
=
,
-
&
&
'
/
&
0
,
.
+
/
)
/
.
C
)
/
&
'
/
+
3
4
'
(
)
(
,
&
*
+
&
.
&
%
'
$
%
(
&
*
%
&
*
D
I
1
&
'
/
&
.
+
)
&
*
G
H
3
-
,
=
5
.
6
2
5
.
7
8
5
D
I
5
.
6
O
5
.
7
8
5
G
H
5
.
6
P
5
.
7
'
!
"
7
!
4
8
,
/
-
+
2
,
9
:
:
2
;
<
6
$
7
)
$
1
$
0
$
8
7
$
#
Q
%
/
0
%
'
)
.
E
>
;
,
+
.
%
'
$
%
(
&
*
%
-
)
.
&
*
'
%
C
%
'
%
;
/
%
-
&
$
&
$
)
/
,
%
&
.
C
&
(
,
R
,
(
%
-
%
C
)
/
-
,
/
&
(
(
,
S
*
&
*
&
'
/
&
0
,
.
+
/
)
/
+
3
'
T
5
.
6
2
7
>
@
5
%
6
A
8
5
.
6
B
&
$
U
7
>
9
5
%
6
V
4
1
,
/
-
+
2
,
9
:
:
2
;
<
6
$
7
)
$
8
9
-
,
9
,
:
-
'
,
(
.
,
&
'
)
(
*
#
Q
%
/
0
%
'
)
.
W
;
,
+
.
%
'
$
%
(
&
*
%
-
)
.
&
*
&
'
;
1
+
&
-
&
$
&
$
)
/
,
%
&
.
C
&
(
,
R
,
(
%
-
)
C
)
/
-
,
/
&
(
(
,
S
*
&
*
&
'
D
"
F
-
&
'
/
&
0
,
.
+
/
)
/
+
1
&
X
+
,
&
*
-
&
&
'
.
,
0
*
)
'
;
5
.
6
2
7
>
@
5
%
6
A
8
5
.
6
@
Y
3
3
6
A
B
&
$
U
7
>
9
5
%
6
V
@
7
;
1
+
&
A
8
5
.
6
@
E
7
3
3
W
A
5
.
6
@
Y
A
4
1
0
,
/
-
+
2
,
9
:
:
2
;
<
6
$
7
)
$
8
9
-
,
9
(
*
,
:
-
'
,
(
.
,
&
'
)
(
*
#
Q
%
/
0
%
'
)
.
W
;
,
+
.
%
'
$
%
(
&
*
%
-
)
.
&
*
&
'
;
1
+
&
-
&
$
&
$
)
/
,
%
&
.
C
&
(
,
R
,
(
%
-
)
C
)
/
-
,
/
&
(
(
,
S
*
&
*
&
'
D
"
F
-
&
'
/
&
0
,
.
+
/
)
/
+
.
,
*
&
X
+
&
*
-
&
/
&
'
.
,
0
*
)
'
;
#
5
.
6
2
7
>
@
5
%
6
A
8
5
.
6
6
X
6
6
6
6
6
6
@
B
&
$
U
7
>
9
5
%
6
V
A
@
7
;
1
+
&
A
4
=
,
/
-
+
2
,
9
:
:
2
;
<
6
$
7
)
$
#
,
.
'
$
1
$
0
$
8
7
$
9
,
:
-
;
&
'
)
(
*
#
Q
%
/
0
%
$
&
-
,
%
C
%
'
%
;
/
%
@
7
L
;
,
+
.
A
%
'
$
%
(
&
*
%
-
%
&
*
'
%
$
&
-
,
%
C
%
'
%
;
/
%
-
&
$
&
$
)
/
,
%
&
.
C
&
(
,
R
,
(
%
-
%
C
)
/
'
%
-
,
/
&
(
(
,
S
*
&
*
'
%
C
%
/
+
&
;
%
Z
%
-
&
'
/
&
0
,
.
+
/
)
/
+
1
&
X
+
,
&
*
-
&
&
'
.
,
0
*
)
'
[
5
.
6
2
7
>
@
5
%
6
A
8
5
.
6
@
7
M
3
3
6
A
B
&
$
U
7
>
9
5
%
6
V
@
>
;
1
+
&
.
A
8
5
.
6
@
E
7
3
3
7
L
A
5
.
6
@
7
M
A
4
=
0
,
/
-
+
2
,
9
:
:
2
;
<
6
$
7
)
$
#
,
.
'
$
1
$
0
$
8
7
$
9
(
*
,
:
-
;
&
'
)
(
*
#
Q
%
/
0
%
$
&
-
,
%
C
%
'
%
;
/
%
@
7
L
;
,
+
.
A
%
'
$
%
(
&
*
%
-
%
&
*
'
%
$
&
-
,
%
C
%
'
%
;
/
%
-
&
$
&
$
)
/
,
%
&
.
C
&
(
,
R
,
(
%
-
%
C
)
/
'
%
-
,
/
&
(
(
,
S
*
&
*
'
%
C
%
/
+
&
;
%
Z
%
-
&
'
/
&
0
,
.
+
/
)
/
+
1
*
)
&
X
+
,
&
*
-
&
&
'
.
,
0
*
)
'
[
#
5
.
6
2
7
>
@
5
%
6
A
8
5
.
6
6
X
6
6
6
6
B
&
$
U
7
>
9
5
%
6
V
A
@
>
;
1
+
&
.
A
4
*
,
9
>
-
+
2
,
9
:
:
2
;
<
6
$
7
)
$
.
'
7
,
2
2
'
3
(
?
(
Q
%
/
0
%
'
%
-
,
/
&
(
(
,
S
*
(
%
'
(
#
'
%
-
%
&
*
/
&
0
'
%
5
.
6
2
\
]
:
8
5
.
6
-
,
/
3
%
.
)
(
,
%
-
%
%
&
+
,
^
#
&
+
%
\
]
:
4
0
2
,
/
-
+
*
/
5
6
$
7
)
$
'
(
#
,
.
'
$
-
$
&
"
1
,
7
'
*
7
#
Q
%
/
0
%
&
'
-
%
+
)
,
*
$
&
-
,
%
+
)
&
*
'
)
.
7
L
B
"
F
-
&
'
/
&
0
,
.
+
/
)
/
+
'
#
,
5
.
6
2
7
>
8
5
.
6
@
E
7
3
3
7
L
A
7
>
8
5
.
6
@
7
M
3
3
6
A
6
X
6
6
6
6
4
2
,
9
>
-
+
*
/
5
6
$
7
)
$
'
(
#
,
.
'
$
-
*
?
(
Q
%
/
0
%
&
'
-
%
+
)
,
*
$
&
-
,
%
+
)
&
*
&
'
/
&
0
,
.
+
/
)
/
&
0
3
'
,
5
.
6
2
7
>
8
5
.
6
7
>
'
@
%
?
!
"
!
'
#
@
A
B
(
.
4
/
,
+
-
,
.
-
,
/
<
2
-
'
5
$
&
'
#
,
(
*
7
"
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
-
%
7
.
,
/
.
&
.
$
&
*
)
/
^
#
&
/
+
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
'
+
5
+
6
2
5
%
6
2
5
%
7
8
,
R
@
5
%
6
`
5
%
7
A
5
+
6
7
8
&
'
.
&
5
+
6
6
.
4
/
2
,
/
-
,
.
-
2
<
6
<
2
-
'
5
$
&
'
#
,
(
*
7
2
*
(
'
(
#
,
.
'
$
-
*
#
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
+
%
7
.
,
/
.
&
.
$
&
*
)
/
^
#
&
&
'
-
%
+
)
,
*
$
&
-
,
%
+
)
,
*
$
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
'
+
,
5
+
6
2
5
%
6
2
<
7
M
8
,
R
@
5
%
6
`
<
7
M
A
5
+
6
7
8
&
'
.
&
5
+
6
6
.
9
C
,
+
9
.
/
-
,
.
,
:
D
-
,
.
,
:
E
<
2
-
'
5
$
&
'
'
)
"
$
0
?
(
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
-
&
.
+
%
7
.
,
/
.
/
(
7
&
.
,
0
#
%
'
^
#
&
/
.
/
(
>
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
&
^
5
+
6
2
5
%
6
2
5
%
>
8
,
R
@
5
%
6
a
a
5
%
>
A
5
+
6
7
8
&
'
.
&
5
+
6
6
.
>
9
,
+
9
.
/
-
,
.
,
:
D
-
,
.
,
:
E
<
2
-
'
5
$
&
'
#
$
9
*
7
*
'
)
"
$
0
?
(
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
-
&
.
+
%
7
.
,
/
.
/
(
7
&
.
$
%
1
)
/
)
,
0
#
%
'
^
#
&
/
.
/
(
>
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
0
&
5
+
6
2
5
%
6
2
5
%
>
8
,
R
@
5
%
6
b
a
5
%
>
A
5
+
6
7
8
&
'
.
&
5
+
6
6
.
>
/
,
+
9
.
/
-
,
.
,
:
D
-
,
.
,
:
E
<
2
-
'
5
$
&
'
#
$
9
*
7
?
(
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
-
&
.
+
%
7
.
,
/
.
/
(
7
&
.
$
%
1
)
/
^
#
&
/
.
/
(
>
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
0
+
5
+
6
2
5
%
6
2
5
%
>
8
,
R
@
5
%
6
b
5
%
>
A
5
+
6
7
8
&
'
.
&
5
+
6
6
.
4
9
,
+
9
.
/
-
,
.
,
:
D
-
,
.
,
:
E
<
2
-
'
5
$
&
'
#
,
(
*
7
*
'
)
"
$
0
?
(
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
-
&
.
+
%
7
.
,
/
.
/
(
7
&
.
$
&
*
)
/
)
,
0
#
%
'
^
#
&
/
.
/
(
>
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
'
&
5
+
6
2
5
%
6
2
5
%
>
8
,
R
@
5
%
6
`
a
5
%
>
A
5
+
6
7
8
&
'
.
&
5
+
6
6
.
<
9
,
+
9
.
/
-
,
.
,
:
D
-
,
.
,
:
E
<
2
-
'
5
$
&
'
(
*
'
)
"
$
0
?
(
_
)
*
&
&
'
/
&
0
,
.
+
/
)
/
-
&
.
+
%
7
.
,
/
.
/
(
7
&
.
-
,
R
&
/
&
*
+
&
-
&
/
.
/
(
>
1
%
6
&
*
(
%
.
)
(
)
*
+
/
%
/
,
)
.
*
&
5
+
6
2
5
%
6
2
5
%
>
8
,
R
@
5
%
6
c
a
5
%
>
A
5
+
6
7
8
&
'
.
&
5
+
6
6
C
U
A
D
R
O
R
E
S
U
M
E
N
D
E
L
L
E
N
G
U
A
J
E
E
N
S
A
M
B
L
A
D
O
R
B
S
I
C
O
D
E
L
M
I
P
S
-
R
2
0
0
0
!
"
#
!
$
%
&
!
#
'
%
&
(
)
+
,
-
.
/
0
1
-
2
3
3
1
4
5
!
"
#
$
%
&
'
$
)
$
"
$
*
+
$
'
!
"
#
$
%
&
'
$
&
"
%
)
'
*
&
'
+
,
)
,
&
"
-
&
.
+
/
*
-
)
-
*
&
'
"
$
0
$
"
$
1
-
$
,
&
#
&
#
)
-
+
$
+
'
,
+
%
$
,
$
0
)
-
,
+
-
&
%
%
+
2
'
/
3
4
/
5
6
7
8
9
4
$
5
:
;
<
&
#
=
7
8
>
4
$
5
?
4
/
5
+
6
-
.
/
0
1
-
2
3
3
1
4
5
!
"
#
$
%
&
'
$
*
,
-
&
'
!
"
#
$
%
&
'
$
&
"
@
A
B
,
&
"
-
&
.
+
/
*
-
)
&
'
&
"
1
C
*
&
,
&
#
&
#
)
-
+
$
+
'
,
+
%
$
,
)
0
)
-
,
+
-
&
%
%
+
2
'
/
1
4
/
5
6
7
8
9
4
$
5
:
;
<
&
#
=
7
8
>
4
$
5
?
4
/
5
9
D
E
E
5
:
+
7
-
.
/
0
1
-
2
3
3
1
4
5
!
"
#
$
%
&
'
$
#
&
.
/
$
)
$
"
$
*
+
$
'
!
"
#
$
%
&
'
$
&
'
"
)
/
7
F
1
+
*
/
,
&
#
&
'
)
/
0
&
/
)
,
&
"
-
&
.
+
/
*
-
)
&
'
"
$
#
&
,
+
$
0
$
"
$
1
-
$
,
&
#
&
#
)
-
+
$
+
'
,
+
%
$
,
$
0
)
-
,
+
-
&
%
%
+
2
'
E
/
G
4
/
5
6
7
8
9
4
$
5
:
;
<
&
#
=
7
8
>
4
$
5
?
4
/
5
9
7
H
E
E
5
:
#
)
8
'
#
'
%
&
(
)
%
&
(
9
%
9
%
:
'
;
(
9
)
;
<
=
7
1
-
0
#
0
&
1
&
.
&
2
.
&
3
4
9
I
-
$
'
/
J
+
&
-
&
&
"
%
)
'
*
&
'
+
,
)
,
&
"
-
&
.
+
/
*
-
)
K
L
$
"
-
&
.
+
/
*
-
)
-
,
E
#
J
G
+
4
*
5
;
4
*
5
K
L
<
=
>
?
-
0
#
0
&
1
&
.
&
2
.
&
5
6
9
I
-
$
'
/
J
+
&
-
&
&
"
%
)
'
*
&
'
+
,
)
,
&
"
-
&
.
+
/
*
-
)
@
M
$
"
-
&
.
+
/
*
-
)
-
,
E
#
J
"
)
4
*
7
;
4
*
7
@
M
"
@
:
'
$
!
;
A
5
0
-
0
/
-
+
/
-
.
!
7
8
&
'
-
+
&
+
&
9
/
2
-
+
:
2
9
M
0
&
-
$
%
+
2
'
!
N
O
1
+
*
$
1
+
*
&
'
*
-
&
"
)
/
-
&
.
+
/
*
-
)
/
-
/
C
-
*
E
P
"
-
&
/
Q
"
*
$
,
)
/
&
$
"
#
$
%
&
'
$
&
'
-
,
$
'
,
4
*
5
6
4
$
5
6
4
$
7
;
4
*
5
4
$
5
R
4
$
7
A
5
0
1
-
.
/
-
+
/
1
5
<
!
7
8
%
:
'
/
'
#
&
.
/
$
-
:
'
M
0
&
-
$
%
+
2
'
!
N
O
1
+
*
$
1
+
*
&
'
*
-
&
&
"
,
$
*
)
+
'
#
&
,
+
$
*
)
6
&
S
*
&
'
,
+
&
'
*
)
%
&
-
)
/
6
C
&
"
-
&
.
+
/
*
-
)
-
/
E
P
"
-
&
/
Q
"
*
$
,
)
/
&
$
"
#
$
%
&
'
$
&
'
-
*
E
$
'
,
+
4
*
5
6
4
$
5
6
5
S
!
7
T
T
;
4
*
5
4
$
5
R
9
5
S
5
5
5
5
!
7
T
T
:
?
-
-
0
/
-
+
/
-
.
6
;
&
'
-
+
&
+
&
9
/
2
-
+
:
2
9
M
0
&
-
$
%
+
2
'
M
U
1
+
*
$
1
+
*
&
'
*
-
&
"
)
/
-
&
.
+
/
*
-
)
/
-
/
C
-
*
E
P
"
-
&
/
Q
"
*
$
,
)
/
&
$
"
#
$
%
&
'
$
&
'
-
,
)
-
4
*
5
6
4
$
5
6
4
$
7
;
4
*
5
4
$
5
V
4
$
7
?
-
1
-
.
/
-
+
/
1
5
<
6
;
%
:
'
/
'
#
&
.
/
$
-
:
'
M
0
&
-
$
%
+
2
'
M
U
1
+
*
$
1
+
*
&
'
*
-
&
&
"
,
$
*
)
+
'
#
&
,
+
$
*
)
6
&
S
*
&
'
,
+
&
'
,
)
%
&
-
)
/
6
C
&
"
-
&
.
+
/
*
-
)
-
/
E
P
"
-
&
/
Q
"
*
$
,
)
/
&
$
"
#
$
%
&
'
$
&
'
-
*
E
)
-
+
4
*
5
6
4
$
5
6
5
S
!
7
T
T
;
4
*
5
4
$
5
V
9
5
S
5
5
5
5
!
7
T
T
:
F
O
R
M
A
T
O
D
E
L
A
S
N
S
T
R
U
C
C
O
N
E
S
t
i
p
o
R
i
n
s
t
(
6
b
i
t
s
)
r
s
(
5
b
i
t
s
)
r
t
(
5
b
i
t
s
)
r
d
(
5
b
i
t
s
)
s
h
a
m
t
(
5
b
i
t
s
)
c
o
(
6
b
i
t
s
)
t
i
p
o
I
i
n
s
t
(
6
b
i
t
s
)
r
s
(
5
b
i
t
s
)
r
t
(
5
b
i
t
s
)
i
n
m
(
1
6
b
i
t
s
)
t
i
p
o
J
i
n
s
t
(
6
b
i
t
s
)
o
b
j
e
t
i
v
o
(
2
6
b
i
t
s
)
B
%
;
C
"
!
D
!
#
'
%
&
(
)
+
>
>
-
0
/
-
.
/
+
7
A
<
.
8
&
2
)
"
$
#
/
&
'
-
:
"
:
9
/
%
:
$
"
$
/
<
=
0
/
&
+
.
$
9
O
&
/
0
"
$
W
$
&
"
-
&
.
+
/
*
-
)
-
*
$
"
$
+
W
X
Q
+
&
-
,
$
*
$
'
*
)
/
1
+
*
/
%
)
#
)
+
'
,
+
%
$
/
G
$
#
*
/
"
"
4
*
5
6
4
*
7
6
7
F
;
4
*
5
4
*
7
Y
Y
7
F
+
-
>
-
0
/
-
.
/
+
7
A
<
.
8
&
2
)
"
$
<
$
#
/
&
'
-
:
"
>
9
/
%
:
$
"
$
.
&
+
&
%
?
$
9
O
&
/
0
"
$
W
$
&
"
-
&
.
+
/
*
-
)
-
*
$
"
$
,
&
-
&
%
G
$
*
$
'
*
)
/
1
+
*
/
%
)
#
)
+
'
,
+
%
$
/
G
$
#
*
E
/
-
"
4
/
5
6
4
*
7
6
Z
;
4
/
5
4
*
7
[
[
Z
+
-
A
-
0
/
-
.
/
+
7
A
<
.
8
&
2
)
"
$
<
@
$
+
/
-
#
A
-
/
%
:
$
"
$
.
&
+
&
%
?
$
9
O
&
/
0
"
$
W
$
&
"
-
&
.
+
/
*
-
)
-
*
$
"
$
,
&
-
&
%
G
$
*
$
'
*
)
/
1
+
*
/
%
)
#
)
+
'
,
+
%
$
/
G
$
#
*
E
@
)
/
1
+
*
/
<
A
B
*
)
#
$
'
&
"
#
+
/
#
)
\
$
"
)
-
X
Q
&
&
"
1
+
*
,
&
/
+
.
'
)
,
&
-
*
E
P
"
-
&
/
Q
"
*
$
,
)
/
&
$
"
#
$
%
&
'
$
&
'
-
,
/
-
$
4
/
5
6
4
*
7
6
Z
;
4
/
5
4
*
7
[
[
Z
;
4
/
5
9
]
7
E
E
8
^
:
4
*
7
9
]
7
:
;
!
"
(
)
;
$
)
&
B
'
$
'
)
&
!
"
%
;
6
2
E
-
+
/
-
.
/
2
.
1
E
F
2
.
A
B
$
"
-
:
2
/
/
9
0
$
"
'
A
$
"
*
$
$
&
*
+
X
Q
&
*
$
/
+
-
/
&
/
+
.
Q
$
"
$
-
*
1
&
X
4
*
5
6
4
*
7
6
O
L
U
;
+
J
9
4
*
5
_
4
*
7
:
4
0
%
O
L
U
6
G
2
H
-
+
/
2
.
1
E
F
2
.
A
B
$
"
-
:
2
/
#
$
,
:
+
:
/
9
0
$
"
=
0
&
%
&
+
:
'
A
$
"
*
$
$
&
*
+
X
Q
&
*
$
/
+
-
/
&
/
#
$
C
)
-
)
+
.
Q
$
"
X
Q
&
5
1
.
&
W
4
*
5
6
A
@
I
;
+
J
9
4
*
5
[
_
5
:
4
0
%
A
@
I
6
G
.
H
-
+
/
2
.
1
E
F
2
.
A
B
$
"
-
:
2
/
#
$
,
:
+
=
0
&
%
&
+
:
'
A
$
"
*
$
$
&
*
+
X
Q
&
*
$
/
+
-
/
&
/
#
$
C
)
-
X
Q
&
5
1
.
*
W
4
*
5
6
A
@
I
;
+
J
9
4
*
5
[
5
:
4
0
%
A
@
I
6
>
2
H
-
+
/
2
.
1
E
F
2
.
A
B
$
"
-
:
2
/
#
&
'
:
+
:
/
9
0
$
"
=
0
&
%
&
+
:
'
A
$
"
*
$
$
&
*
+
X
Q
&
*
$
/
+
-
/
&
/
#
&
'
)
-
)
+
.
Q
$
"
X
Q
&
5
1
"
&
W
4
*
7
6
P
I
`
;
+
J
9
4
*
7
Y
_
5
:
4
0
%
P
I
`
6
>
.
H
-
+
/
2
.
1
E
F
2
.
A
B
$
"
-
:
2
/
#
&
'
:
+
=
0
&
%
&
+
:
'
A
$
"
*
$
$
&
*
+
X
Q
&
*
$
/
+
-
/
&
/
#
&
'
)
-
X
Q
&
5
1
"
*
W
4
*
7
6
P
I
`
;
+
J
9
4
*
7
Y
5
:
4
0
%
P
I
`
6
5
2
-
+
/
-
.
/
2
.
1
E
F
2
.
A
B
$
"
-
:
2
/
.
/
2
-
/
'
-
:
'
A
$
"
*
$
$
&
*
+
X
Q
&
*
$
/
+
-
/
&
/
,
+
J
&
-
&
'
*
&
,
&
-
*
1
'
&
4
*
5
6
4
*
7
6
O
L
U
;
+
J
9
4
*
5
Y
[
4
*
7
:
4
0
%
O
L
U
6
G
2
-
2
G
I
/
-
2
G
J
/
2
.
1
E
B
$
"
-
:
#
$
,
:
+
:
/
9
0
$
"
C
;
A
$
"
*
$
$
&
*
+
X
/
+
-
&
.
7
&
/
#
$
C
)
-
)
+
.
Q
$
"
X
Q
&
-
&
.
8
1
.
&
4
*
5
6
4
*
7
6
O
L
U
;
+
J
9
4
*
5
[
_
4
*
7
:
4
0
%
O
L
U
6
G
.
-
2
G
I
/
-
2
G
J
/
2
.
1
E
B
$
"
-
:
#
$
,
:
+
C
;
A
$
"
*
$
$
&
*
+
X
/
+
-
&
.
7
&
/
#
$
C
)
-
X
Q
&
-
&
.
8
1
.
*
4
*
5
6
4
*
7
6
O
L
U
;
+
J
9
4
*
5
[
4
*
7
:
4
0
%
O
L
U
6
>
2
-
2
G
I
/
-
2
G
J
/
2
.
1
E
B
$
"
-
:
#
&
'
:
+
:
/
9
0
$
"
C
;
A
$
"
*
$
$
&
*
+
X
/
+
-
&
.
7
&
/
#
&
'
)
-
)
+
.
Q
$
"
X
Q
&
-
&
.
8
1
"
&
4
*
5
6
4
*
7
6
O
L
U
;
+
J
9
4
*
5
Y
_
4
*
7
:
4
0
%
O
L
U
6
>
.
-
2
G
I
/
-
2
G
J
/
2
.
1
E
B
$
"
-
:
#
&
'
:
+
C
;
A
$
"
*
$
$
&
*
+
X
/
+
-
&
.
7
&
/
#
&
'
)
-
X
Q
&
-
&
.
8
1
"
*
4
*
5
6
4
*
7
6
O
L
U
;
+
J
9
4
*
5
Y
4
*
7
:
4
0
%
O
L
U
;
!
"
(
)
;
'
&
$
)
&
B
'
$
'
)
&
!
"
%
;
K
0
1
-
2
3
3
1
4
5
B
$
"
-
:
/
'
%
:
'
.
/
%
/
:
'
$
"
L
A
$
"
*
$
$
"
$
+
'
/
*
-
Q
%
%
+
2
'
$
0
Q
'
*
$
,
$
0
)
-
"
$
&
*
+
X
Q
&
*
$
,
+
-
&
%
%
+
2
'
a
J
+
'
1
Q
%
"
&
;
4
0
%
,
+
-
&
%
%
+
2
'
&
*
+
X
Q
&
*
$
J
+
'
1
Q
%
"
&
K
A
>
0
1
-
2
3
3
1
4
5
B
$
"
-
$
+
,
&
'
"
$
<
$
+
L
A
$
"
*
$
$
"
$
+
'
/
*
-
Q
%
%
+
2
'
$
0
Q
'
*
$
,
$
0
)
-
"
$
&
*
+
X
Q
&
*
$
,
+
-
&
%
%
+
2
'
C
$
"
#
$
%
&
'
$
"
$
,
+
-
&
%
%
+
2
'
,
&
"
$
+
'
/
*
-
Q
%
%
+
2
'
/
+
.
Q
+
&
'
*
&
&
'
4
-
$
a
$
"
-
Q
*
+
'
$
;
4
0
%
,
+
-
&
%
%
+
2
'
&
*
+
X
Q
&
*
$
-
Q
*
+
'
$
;
4
-
$
,
+
-
&
%
%
+
2
'
/
+
.
Q
+
&
'
*
&
+
'
/
*
-
Q
%
%
+
2
'
K
-
-
+
B
$
"
-
$
+
$
+
&
9
/
2
-
+
:
9
A
$
"
*
$
$
"
$
+
'
/
*
-
Q
%
%
+
2
'
$
0
Q
'
*
$
,
$
0
)
-
&
"
%
)
'
*
&
'
+
,
)
,
&
"
-
&
.
+
/
*
-
)
-
/
E
a
-
4
-
$
;
4
0
%
4
-
$
M
I
P
S
3
2
I
n
s
t
r
u
c
t
i
o
n
S
e
t
Q
u
i
c
k
R
e
I
e
r
e
n
c
e
R
D
-
D
E
S
T
I
N
A
T
I
O
N
R
E
G
I
S
T
E
R
R
S
,
R
T
-
S
O
U
R
C
E
O
P
E
R
A
N
D
R
E
G
I
S
T
E
R
S
R
A
-
R
E
T
U
R
N
A
D
D
R
E
S
S
R
E
G
I
S
T
E
R
(
R
3
1
)
P
C
-
P
R
O
G
R
A
M
C
O
U
N
T
E
R
A
C
C
-
6
4
-
B
I
T
A
C
C
U
M
U
L
A
T
O
R
L
O
,
H
I
-
A
C
C
U
M
U
L
A
T
O
R
L
O
W
(
A
C
C
3
1
:
0
)
A
N
D
H
I
G
H
(
A
C
C
6
3
:
3
2
)
P
A
R
T
S
-
S
I
G
N
E
D
O
P
E
R
A
N
D
O
R
S
I
G
N
E
X
T
E
N
S
I
O
N
!
-
U
N
S
I
G
N
E
D
O
P
E
R
A
N
D
O
R
Z
E
R
O
E
X
T
E
N
S
I
O
N
:
:
-
C
O
N
C
A
T
E
N
A
T
I
O
N
O
F
B
I
T
F
I
E
L
D
S
R
2
-
M
I
P
S
3
2
R
E
L
E
A
S
E
2
I
N
S
T
R
U
C
T
I
O
N
D
O
T
T
E
D
-
A
S
S
E
M
B
L
E
R
P
S
E
U
D
O
-
I
N
S
T
R
U
C
T
I
O
N
P
L
E
A
S
E
R
E
F
E
R
T
O
!
"
#
$
%
&
'
)
*
+
,
#
-
.
+
-
/
*
.
0
1
*
$
*
1
2
*
)
"
"
.
*
%
3
1
4
/
"
.
#
#
5
-
,
.
"
#
$
%
&
'
#
6
%
-
*
/
+
-
#
1
6
%
.
-
7
F
O
R
C
O
M
P
L
E
T
E
I
N
S
T
R
U
C
T
I
O
N
S
E
T
I
N
F
O
R
M
A
T
I
O
N
.
!
"
#
$
%
&
'
$
#
(
*
+
'
"
!
$
#
*
,
-
A
D
D
R
D
,
R
S
,
R
T
R
D
R
S
R
T
(
O
V
E
R
F
L
O
W
T
R
A
P
)
A
D
D
I
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
R
S
C
O
N
S
T
1
6
(
O
V
E
R
F
L
O
W
T
R
A
P
)
A
D
D
I
U
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
R
S
C
O
N
S
T
1
6
A
D
D
U
R
D
,
R
S
,
R
T
R
D
R
S
R
T
C
L
O
R
D
,
R
S
R
D
C
O
U
N
T
L
E
A
D
I
N
G
O
N
E
S
(
R
S
)
C
L
Z
R
D
,
R
S
R
D
C
O
U
N
T
L
E
A
D
I
N
G
Z
E
R
O
S
(
R
S
)
L
A
R
D
,
L
A
B
E
L
R
D
A
D
D
R
E
S
S
(
L
A
B
E
L
)
L
I
R
D
,
I
M
M
3
2
R
D
I
M
M
3
2
L
U
I
R
D
,
C
O
N
S
T
1
6
R
D
C
O
N
S
T
1
6
1
6
M
O
V
E
R
D
,
R
S
R
D
R
S
N
E
G
U
R
D
,
R
S
R
D
R
S
S
E
B
R
2
R
D
,
R
S
R
D
R
S
7
:
0
S
E
H
R
2
R
D
,
R
S
R
D
R
S
1
5
:
0
S
U
B
R
D
,
R
S
,
R
T
R
D
R
S
R
T
(
O
V
E
R
F
L
O
W
T
R
A
P
)
S
U
B
U
R
D
,
R
S
,
R
T
R
D
R
S
R
T
-
%
#
.
$
!
,
/
"
*
$
!
$
'
*
+
'
"
!
$
#
*
,
-
R
O
T
R
R
2
R
D
,
R
S
,
B
I
T
S
5
R
D
R
S
B
I
T
S
5
1
:
0
:
:
R
S
3
1
:
B
I
T
S
5
R
O
T
R
V
R
2
R
D
,
R
S
,
R
T
R
D
R
S
R
T
4
:
0
1
:
0
:
:
R
S
3
1
:
R
T
4
:
0
S
L
L
R
D
,
R
S
,
S
H
I
F
T
5
R
D
R
S
S
H
I
F
T
5
S
L
L
V
R
D
,
R
S
,
R
T
R
D
R
S
R
T
4
:
0
S
R
A
R
D
,
R
S
,
S
H
I
F
T
5
R
D
R
S
~
~
S
H
I
F
T
5
S
R
A
V
R
D
,
R
S
,
R
T
R
D
R
S
~
~
R
T
4
:
0
S
R
L
R
D
,
R
S
,
S
H
I
F
T
5
R
D
R
S
!
~
~
S
H
I
F
T
5
S
R
L
V
R
D
,
R
S
,
R
T
R
D
R
S
!
~
~
R
T
4
:
0
0
*
1
#
(
!
0
!
,
/
2
#
$
3
.
#
'
0
/
*
+
'
"
!
$
#
*
,
-
A
N
D
R
D
,
R
S
,
R
T
R
D
R
S
&
R
T
A
N
D
I
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
R
S
&
C
O
N
S
T
1
6
!
E
X
T
R
2
R
D
,
R
S
,
P
,
S
R
S
R
S
P
S
-
1
:
P
!
I
N
S
R
2
R
D
,
R
S
,
P
,
S
R
D
P
S
-
1
:
P
R
S
S
-
1
:
0
N
O
P
N
O
-
O
P
N
O
R
R
D
,
R
S
,
R
T
R
D
~
(
R
S
,
R
T
)
N
O
T
R
D
,
R
S
R
D
~
R
S
O
R
R
D
,
R
S
,
R
T
R
D
R
S
,
R
T
O
R
I
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
R
S
,
C
O
N
S
T
1
6
!
W
S
B
H
R
2
R
D
,
R
S
R
D
R
S
2
3
:
1
6
:
:
R
S
3
1
:
2
4
:
:
R
S
7
:
0
:
:
R
S
1
5
:
8
X
O
R
R
D
,
R
S
,
R
T
R
D
R
S
"
R
T
X
O
R
I
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
R
S
"
C
O
N
S
T
1
6
!
(
*
,
/
#
$
#
*
,
$
'
-
$
#
,
1
!
,
/
(
*
,
/
#
$
#
*
,
!
0
&
*
4
'
*
+
'
"
!
$
#
*
,
-
M
O
V
N
R
D
,
R
S
,
R
T
I
F
R
T
=
0
,
R
D
R
S
M
O
V
Z
R
D
,
R
S
,
R
T
I
F
R
T
0
,
R
D
R
S
S
L
T
R
D
,
R
S
,
R
T
R
D
(
R
S
R
T
)
?
1
:
0
S
L
T
I
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
(
R
S
C
O
N
S
T
1
6
)
?
1
:
0
S
L
T
I
U
R
D
,
R
S
,
C
O
N
S
T
1
6
R
D
(
R
S
!
C
O
N
S
T
1
6
!
)
?
1
:
0
S
L
T
U
R
D
,
R
S
,
R
T
R
D
(
R
S
!
R
T
!
)
?
1
:
0
&
5
0
$
#
+
0
6
!
,
/
/
#
4
#
/
'
*
+
'
"
!
$
#
*
,
-
D
I
V
R
S
,
R
T
L
O
R
S
/
R
T
;
#
$
=
R
S
M
O
D
R
T
D
I
V
U
R
S
,
R
T
L
O
R
S
!
/
R
T
!
;
#
$
=
R
S
!
M
O
D
R
T
!
M
A
D
D
R
S
,
R
T
A
C
C
R
S
%
R
T
M
A
D
D
U
R
S
,
R
T
A
C
C
R
S
!
%
R
T
!
M
S
U
B
R
S
,
R
T
A
C
C
R
S
%
R
T
M
S
U
B
U
R
S
,
R
T
A
C
C
R
S
!
%
R
T
!
M
U
L
R
D
,
R
S
,
R
T
R
D
R
S
%
R
T
M
U
L
T
R
S
,
R
T
A
C
C
R
S
%
R
T
M
U
L
T
U
R
S
,
R
T
A
C
C
R
S
!
%
R
T
!
!
(
(
5
&
5
0
!
$
*
"
!
(
(
'
-
-
*
+
'
"
!
$
#
*
,
-
M
F
H
I
R
D
R
D
H
I
M
F
L
O
R
D
R
D
L
O
M
T
H
I
R
S
H
I
R
S
M
T
L
O
R
S
L
O
R
S
7
5
&
+
-
!
,
/
2
"
!
,
(
%
'
-
8
,
*
$
'
9
*
,
'
/
'
0
!
6
-
0
*
$
:
B
O
F
F
1
8
P
C
O
F
F
1
8
B
A
L
O
F
F
1
8
R
A
P
C
8
,
P
C
O
F
F
1
8
B
E
Q
R
S
,
R
T
,
O
F
F
1
8
I
F
R
S
R
T
,
P
C
O
F
F
1
8
B
E
Q
Z
R
S
,
O
F
F
1
8
I
F
R
S
0
,
P
C
O
F
F
1
8
B
G
E
Z
R
S
,
O
F
F
1
8
I
F
R
S
_
0
,
P
C
O
F
F
1
8
B
G
E
Z
A
L
R
S
,
O
F
F
1
8
R
A
P
C
8
;
I
F
R
S
_
0
,
P
C
O
F
F
1
8
B
G
T
Z
R
S
,
O
F
F
1
8
I
F
R
S
~
0
,
P
C
O
F
F
1
8
B
L
E
Z
R
S
,
O
F
F
1
8
I
F
R
S
_
0
,
P
C
O
F
F
1
8
B
L
T
Z
R
S
,
O
F
F
1
8
I
F
R
S
0
,
P
C
O
F
F
1
8
B
L
T
Z
A
L
R
S
,
O
F
F
1
8
R
A
P
C
8
;
I
F
R
S
0
,
P
C
O
F
F
1
8
B
N
E
R
S
,
R
T
,
O
F
F
1
8
I
F
R
S
=
R
T
,
P
C
O
F
F
1
8
B
N
E
Z
R
S
,
O
F
F
1
8
I
F
R
S
=
0
,
P
C
O
F
F
1
8
J
A
D
D
R
2
8
P
C
P
C
3
1
:
2
8
:
:
A
D
D
R
2
8
!
J
A
L
A
D
D
R
2
8
R
A
P
C
8
;
P
C
P
C
3
1
:
2
8
:
:
A
D
D
R
2
8
!
J
A
L
R
R
D
,
R
S
R
D
P
C
8
;
P
C
R
S
J
R
R
S
P
C
R
S
0
*
!
/
!
,
/
-
$
*
"
'
*
+
'
"
!
$
#
*
,
-
L
B
R
D
,
O
F
F
1
6
(
R
S
)
R
D
M
E
M
8
(
R
S
O
F
F
1
6
L
B
U
R
D
,
O
F
F
1
6
(
R
S
)
R
D
M
E
M
8
(
R
S
O
F
F
1
6
)
!
L
H
R
D
,
O
F
F
1
6
(
R
S
)
R
D
M
E
M
1
6
(
R
S
O
F
F
1
6
L
H
U
R
D
,
O
F
F
1
6
(
R
S
)
R
D
M
E
M
1
6
(
R
S
O
F
F
1
6
)
!
L
W
R
D
,
O
F
F
1
6
(
R
S
)
R
D
M
E
M
3
2
(
R
S
O
F
F
1
6
)
L
W
L
R
D
,
O
F
F
1
6
(
R
S
)
R
D
L
O
A
D
W
O
R
D
L
E
F
T
(
R
S
O
F
F
1
6
)
L
W
R
R
D
,
O
F
F
1
6
(
R
S
)
R
D
L
O
A
D
W
O
R
D
R
I
G
H
T
(
R
S
O
F
F
1
6
)
S
B
R
S
,
O
F
F
1
6
(
R
T
)
M
E
M
8
(
R
T
O
F
F
1
6
R
S
7
:
0
S
H
R
S
,
O
F
F
1
6
(
R
T
)
M
E
M
1
6
(
R
T
O
F
F
1
6
R
S
1
5
:
0
S
W
R
S
,
O
F
F
1
6
(
R
T
)
M
E
M
3
2
(
R
T
O
F
F
1
6
R
S
S
W
L
R
S
,
O
F
F
1
6
(
R
T
)
S
T
O
R
E
W
O
R
D
L
E
F
T
(
R
T
O
F
F
1
6
,
R
S
)
S
W
R
R
S
,
O
F
F
1
6
(
R
T
)
S
T
O
R
E
W
O
R
D
R
I
G
H
T
(
R
T
O
F
F
1
6
,
R
S
)
U
L
W
R
D
,
O
F
F
1
6
(
R
S
)
R
D
U
N
A
L
I
G
N
E
D
M
E
M
3
2
(
R
S
O
F
F
1
6
)
U
S
W
R
S
,
O
F
F
1
6
(
R
T
)
U
N
A
L
I
G
N
E
D
M
E
M
3
2
(
R
T
O
F
F
1
6
R
S
!
$
*
&
#
(
"
'
!
/
3
&
*
/
#
.
6
3
;
"
#
$
'
*
+
'
"
!
$
#
*
,
-
L
L
R
D
,
O
F
F
1
6
(
R
S
)
R
D
M
E
M
3
2
(
R
S
O
F
F
1
6
)
;
L
I
N
K
S
C
R
D
,
O
F
F
1
6
(
R
S
)
I
F
A
T
O
M
I
C
,
M
E
M
3
2
(
R
S
O
F
F
1
6
R
D
;
R
D
A
T
O
M
I
C
?
1
:
0
C
o
p
y
r
i
g
h
t
2
0
0
8
M
I
P
S
T
e
c
h
n
o
l
o
g
i
e
s
,
I
n
c
.
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
.
M
D
0
0
5
6
5
R
e
v
i
s
i
o
n
0
1
.
0
1
!
"
#
$
%
&
"
!
%
0
z
e
r
o
A
l
w
a
y
s
e
q
u
a
l
t
o
z
e
r
o
1
a
t
A
s
s
e
m
b
l
e
r
t
e
m
p
o
r
a
r
y
;
u
s
e
d
b
y
t
h
e
a
s
s
e
m
b
l
e
r
2
-
3
v
0
-
v
1
R
e
t
u
r
n
v
a
l
u
e
I
r
o
m
a
I
u
n
c
t
i
o
n
c
a
l
l
4
-
7
a
0
-
a
3
F
i
r
s
t
I
o
u
r
p
a
r
a
m
e
t
e
r
s
I
o
r
a
I
u
n
c
t
i
o
n
c
a
l
l
8
-
1
5
t
0
-
t
7
T
e
m
p
o
r
a
r
y
v
a
r
i
a
b
l
e
s
;
n
e
e
d
n
o
t
b
e
p
r
e
s
e
r
v
e
d
1
6
-
2
3
s
0
-
s
7
F
u
n
c
t
i
o
n
v
a
r
i
a
b
l
e
s
;
m
u
s
t
b
e
p
r
e
s
e
r
v
e
d
2
4
-
2
5
t
8
-
t
9
T
w
o
m
o
r
e
t
e
m
p
o
r
a
r
y
v
a
r
i
a
b
l
e
s
2
6
-
2
7
k
0
-
k
1
K
e
r
n
e
l
u
s
e
r
e
g
i
s
t
e
r
s
;
m
a
y
c
h
a
n
g
e
u
n
e
x
p
e
c
t
e
d
l
y
2
8
g
p
G
l
o
b
a
l
p
o
i
n
t
e
r
2
9
s
p
S
t
a
c
k
p
o
i
n
t
e
r
3
0
I
p
/
s
8
S
t
a
c
k
I
r
a
m
e
p
o
i
n
t
e
r
o
r
s
u
b
r
o
u
t
i
n
e
v
a
r
i
a
b
l
e
3
1
r
a
R
e
t
u
r
n
a
d
d
r
e
s
s
o
I
t
h
e
l
a
s
t
s
u
b
r
o
u
t
i
n
e
c
a
l
l
'
"
(
)
*
+
&
-
-
)
+
+
$
.
#
-
/
.
0
"
.
&
$
/
.
1
/
2
3
4
!
"
#
$
%
'
#
(
#
)
*
+
*
(
"
!
T
h
e
s
t
a
c
k
g
r
o
w
s
d
o
w
n
.
!
S
u
b
t
r
a
c
t
I
r
o
m
$
s
p
t
o
a
l
l
o
c
a
t
e
l
o
c
a
l
s
t
o
r
a
g
e
s
p
a
c
e
.
!
R
e
s
t
o
r
e
$
s
p
b
y
a
d
d
i
n
g
t
h
e
s
a
m
e
a
m
o
u
n
t
a
t
I
u
n
c
t
i
o
n
e
x
i
t
.
!
T
h
e
s
t
a
c
k
m
u
s
t
b
e
8
-
b
y
t
e
a
l
i
g
n
e
d
.
!
M
o
d
i
I
y
$
s
p
o
n
l
y
i
n
m
u
l
t
i
p
l
e
s
o
I
e
i
g
h
t
.
,
-
(
$
"
.
/
(
0
#
1
#
+
*
"
*
1
2
!
E
v
e
r
y
p
a
r
a
m
e
t
e
r
s
m
a
l
l
e
r
t
h
a
n
3
2
b
i
t
s
i
s
p
r
o
m
o
t
e
d
t
o
3
2
b
i
t
s
.
!
F
i
r
s
t
I
o
u
r
p
a
r
a
m
e
t
e
r
s
a
r
e
p
a
s
s
e
d
i
n
r
e
g
i
s
t
e
r
s
$
a
0
$
a
3
.
!
6
4
-
b
i
t
p
a
r
a
m
e
t
e
r
s
a
r
e
p
a
s
s
e
d
i
n
r
e
g
i
s
t
e
r
p
a
i
r
s
:
!
L
i
t
t
l
e
-
e
n
d
i
a
n
m
o
d
e
:
$
a
1
:
$
a
0
o
r
$
a
3
:
$
a
2
.
!
B
i
g
-
e
n
d
i
a
n
m
o
d
e
:
$
a
0
:
$
a
1
o
r
$
a
2
:
$
a
3
.
!
E
v
e
r
y
s
u
b
s
e
q
u
e
n
t
p
a
r
a
m
e
t
e
r
i
s
p
a
s
s
e
d
t
h
r
o
u
g
h
t
h
e
s
t
a
c
k
.
!
F
i
r
s
t
1
6
b
y
t
e
s
o
n
t
h
e
s
t
a
c
k
a
r
e
n
o
t
u
s
e
d
.
!
A
s
s
u
m
i
n
g
$
s
p
w
a
s
n
o
t
m
o
d
i
I
i
e
d
a
t
I
u
n
c
t
i
o
n
e
n
t
r
y
:
!
T
h
e
1
s
t
s
t
a
c
k
p
a
r
a
m
e
t
e
r
i
s
l
o
c
a
t
e
d
a
t
1
6
(
$
s
p
)
.
!
T
h
e
2
n
d
s
t
a
c
k
p
a
r
a
m
e
t
e
r
i
s
l
o
c
a
t
e
d
a
t
2
0
(
$
s
p
)
,
e
t
c
.
!
6
4
-
b
i
t
p
a
r
a
m
e
t
e
r
s
a
r
e
8
-
b
y
t
e
a
l
i
g
n
e
d
.
3
*
"
-
1
(
4
#
5
-
*
2
!
3
2
-
b
i
t
a
n
d
s
m
a
l
l
e
r
v
a
l
u
e
s
a
r
e
r
e
t
u
r
n
e
d
i
n
r
e
g
i
s
t
e
r
$
v
0
.
!
6
4
-
b
i
t
v
a
l
u
e
s
a
r
e
r
e
t
u
r
n
e
d
i
n
r
e
g
i
s
t
e
r
s
$
v
0
a
n
d
$
v
1
:
!
L
i
t
t
l
e
-
e
n
d
i
a
n
m
o
d
e
:
$
v
1
:
$
v
0
.
!
B
i
g
-
e
n
d
i
a
n
m
o
d
e
:
$
v
0
:
$
v
1
.
5
$
6
%
2
3
0
$
!
&
*
)
+
)
'
'
!
"
%
%
%
6
)
-
"
k
s
e
g
3
0
x
E
0
0
0
.
0
0
0
0
0
x
F
F
F
F
.
F
F
F
F
M
a
p
p
e
d
C
a
c
h
e
d
k
s
s
e
g
0
x
C
0
0
0
.
0
0
0
0
0
x
D
F
F
F
.
F
F
F
F
M
a
p
p
e
d
C
a
c
h
e
d
k
s
e
g
1
0
x
A
0
0
0
.
0
0
0
0
0
x
B
F
F
F
.
F
F
F
F
U
n
m
a
p
p
e
d
U
n
c
a
c
h
e
d
k
s
e
g
0
0
x
8
0
0
0
.
0
0
0
0
0
x
9
F
F
F
.
F
F
F
F
U
n
m
a
p
p
e
d
C
a
c
h
e
d
u
s
e
g
0
x
0
0
0
0
.
0
0
0
0
0
x
7
F
F
F
.
F
F
F
F
M
a
p
p
e
d
C
a
c
h
e
d
!
"
)
'
$
.
#
&
7
"
-
8
-
+
"
-
/
*
.
&
!
"
#
$
%
&
"
!
(
!
/
5
-
u
n
s
i
g
n
e
d
m
i
p
s
_
c
y
c
l
e
_
c
o
u
n
t
e
r
_
r
e
a
d
(
)
{
u
n
s
i
g
n
e
d
c
c
;
a
s
m
v
o
l
a
t
i
l
e
(
"
m
f
c
0
%
0
,
$
9
"
:
"
=
r
"
(
c
c
)
)
;
r
e
t
u
r
n
(
c
c
<
<
1
)
;
}
)
%
%
"
5
9
+
8
:
+
)
.
#
*
)
#
"
(
*
.
-
&
$
/
.
"
;
)
5
6
+
"
#
i
n
t
a
s
m
_
m
a
x
(
i
n
t
a
,
i
n
t
b
)
#
{
#
i
n
t
r
=
(
a
<
b
)
?
b
:
a
;
#
r
e
t
u
r
n
r
;
#
}
.
t
e
x
t
.
s
e
t
n
o
m
a
c
r
o
.
s
e
t
n
o
r
e
o
r
d
e
r
.
g
l
o
b
a
l
a
s
m
_
m
a
x
.
e
n
t
a
s
m
_
m
a
x
a
s
m
_
m
a
x
:
m
o
v
e
$
v
0
,
$
a
0
#
r
=
a
s
l
t
$
t
0
,
$
a
0
,
$
a
1
#
a
<
b
?
j
r
$
r
a
#
r
e
t
u
r
n
m
o
v
n
$
v
0
,
$
a
1
,
$
t
0
#
i
f
y
e
s
,
r
=
b
.
e
n
d
a
s
m
_
m
a
x
-
<
)
%
%
"
5
9
+
8
:
+
)
.
#
*
)
#
"
(
*
.
-
&
$
/
.
$
.
&
"
!
(
)
-
"
#
i
n
c
l
u
d
e
<
s
t
d
i
o
.
h
>
i
n
t
a
s
m
_
m
a
x
(
i
n
t
a
,
i
n
t
b
)
;
i
n
t
m
a
i
n
(
)
{
i
n
t
x
=
a
s
m
_
m
a
x
(
1
0
,
1
0
0
)
;
i
n
t
y
=
a
s
m
_
m
a
x
(
2
0
0
,
2
0
)
;
p
r
i
n
t
f
(
"
%
d
%
d
\
n
"
,
x
,
y
)
;
}
$
.
0
/
=
$
.
#
5
*
+
&
)
.
'
5
)
'
'
$
.
%
&
!
*
-
&
$
/
.
%
(
!
/
5
-
i
n
t
d
p
(
i
n
t
a
[
]
,
i
n
t
b
[
]
,
i
n
t
n
)
{
i
n
t
i
;
l
o
n
g
l
o
n
g
a
c
c
=
(
l
o
n
g
l
o
n
g
)
a
[
0
]
*
b
[
0
]
;
f
o
r
(
i
=
1
;
i
<
n
;
i
+
+
)
a
c
c
+
=
(
l
o
n
g
l
o
n
g
)
a
[
i
]
*
b
[
i
]
;
r
e
t
u
r
n
(
a
c
c
>
>
3
1
)
;
}
)
&
/
5
$
-
!
"
)
'
:
5
/
'
$
(
8
:
>
!
$
&
"
"
;
)
5
6
+
"
a
t
o
m
i
c
_
i
n
c
:
l
l
$
t
0
,
0
(
$
a
0
)
#
l
o
a
d
l
i
n
k
e
d
a
d
d
i
u
$
t
1
,
$
t
0
,
1
#
i
n
c
r
e
m
e
n
t
s
c
$
t
1
,
0
(
$
a
0
)
#
s
t
o
r
e
c
o
n
d
'
l
b
e
q
z
$
t
1
,
a
t
o
m
i
c
_
i
n
c
#
l
o
o
p
i
f
f
a
i
l
e
d
n
o
p
)
-
-
"
%
%
$
.
#
*
.
)
+
$
#
.
"
'
'
)
&
)
.
/
&
"
?
*
+
>
)
.
'
*
%
>
)
*
&
/
5
)
&
$
-
)
+
+
8
#
"
.
"
!
)
&
"
)
6
6
!
/
6
!
$
)
&
"
-
/
'
"
+
$
&
&
+
"
:
"
.
'
$
)
.
5
/
'
"
9
$
#
:
"
.
'
$
)
.
5
/
'
"
L
W
R
R
D
,
O
F
F
1
6
(
R
S
)
L
W
L
R
D
,
O
F
F
1
6
3
(
R
S
)
L
W
L
R
D
,
O
F
F
1
6
(
R
S
)
L
W
R
R
D
,
O
F
F
1
6
3
(
R
S
)
S
W
R
R
D
,
O
F
F
1
6
(
R
S
)
S
W
L
R
D
,
O
F
F
1
6
3
(
R
S
)
S
W
L
R
D
,
O
F
F
1
6
(
R
S
)
S
W
R
R
D
,
O
F
F
1
6
3
(
R
S
)
)
-
-
"
%
%
$
.
#
*
.
)
+
$
#
.
"
'
'
)
&
)
(
!
/
5
-
t
y
p
e
d
e
f
s
t
r
u
c
t
{
i
n
t
u
;
}
_
_
a
t
t
r
i
b
u
t
e
_
_
(
(
p
a
c
k
e
d
)
)
u
n
a
l
i
g
n
e
d
;
i
n
t
u
n
a
l
i
g
n
e
d
_
l
o
a
d
(
v
o
i
d
*
p
t
r
)
{
u
n
a
l
i
g
n
e
d
*
u
p
t
r
=
(
u
n
a
l
i
g
n
e
d
*
)
p
t
r
;
r
e
t
u
r
n
u
p
t
r
-
>
u
;
}
5
$
6
%
%
'
"
:
#
-
-
-
/
5
6
$
+
"
!
'
"
(
$
.
"
%
_
_
m
i
p
s
M
I
P
S
I
S
A
(
3
2
I
o
r
M
I
P
S
3
2
)
_
_
m
i
p
s
_
i
s
a
_
r
e
v
M
I
P
S
I
S
A
R
e
v
i
s
i
o
n
(
2
I
o
r
M
I
P
S
3
2
R
2
)
_
_
m
i
p
s
_
d
s
p
D
S
P
A
S
E
e
x
t
e
n
s
i
o
n
s
e
n
a
b
l
e
d
_
M
I
P
S
E
B
B
i
g
-
e
n
d
i
a
n
t
a
r
g
e
t
C
P
U
_
M
I
P
S
E
L
L
i
t
t
l
e
-
e
n
d
i
a
n
t
a
r
g
e
t
C
P
U
_
M
I
P
S
_
A
R
C
H
_
!
"
#
T
a
r
g
e
t
C
P
U
s
p
e
c
i
I
i
e
d
b
y
-
m
a
r
c
h
=
!
"
#
_
M
I
P
S
_
T
U
N
E
_
!
"
#
P
i
p
e
l
i
n
e
t
u
n
i
n
g
s
e
l
e
c
t
e
d
b
y
-
m
t
u
n
e
=
!
"
#
.
/
&
"
%
!
M
a
n
y
a
s
s
e
m
b
l
e
r
p
s
e
u
d
o
-
i
n
s
t
r
u
c
t
i
o
n
s
a
n
d
s
o
m
e
r
a
r
e
l
y
u
s
e
d
m
a
c
h
i
n
e
i
n
s
t
r
u
c
t
i
o
n
s
a
r
e
o
m
i
t
t
e
d
.
!
T
h
e
C
c
a
l
l
i
n
g
c
o
n
v
e
n
t
i
o
n
i
s
s
i
m
p
l
i
I
i
e
d
.
A
d
d
i
t
i
o
n
a
l
r
u
l
e
s
a
p
p
l
y
w
h
e
n
p
a
s
s
i
n
g
c
o
m
p
l
e
x
d
a
t
a
s
t
r
u
c
t
u
r
e
s
a
s
I
u
n
c
t
i
o
n
p
a
r
a
m
e
t
e
r
s
.
!
T
h
e
e
x
a
m
p
l
e
s
i
l
l
u
s
t
r
a
t
e
s
y
n
t
a
x
u
s
e
d
b
y
G
C
C
c
o
m
p
i
l
e
r
s
.
!
M
o
s
t
M
I
P
S
p
r
o
c
e
s
s
o
r
s
i
n
c
r
e
m
e
n
t
t
h
e
c
y
c
l
e
c
o
u
n
t
e
r
e
v
e
r
y
o
t
h
e
r
c
y
c
l
e
.
P
l
e
a
s
e
c
h
e
c
k
y
o
u
r
p
r
o
c
e
s
s
o
r
d
o
c
u
m
e
n
t
a
t
i
o
n
.
M
D
0
0
5
6
5
R
e
v
i
s
i
o
n
0
1
.
0
1
C
o
p
y
r
i
g
h
t
2
0
0
8
M
I
P
S
T
e
c
h
n
o
l
o
g
i
e
s
,
I
n
c
.
A
l
l
r
i
g
h
t
s
r
e
s
e
r
v
e
d
.
MIPS Instruction Reference
(http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html)
Esta es una descripcin del conjunto de instrucciones MIPS, su significado, sintaxis,
semntica y codificacin. La sintaxis dada para cada instruccin hace referencia a la
sintaxis del lenguaje ensamblador soportado por el ensambaldor MIPS. Guiones en la
descripcin de la codificacin indican que esos bits no sern considerados en la
decodificacin (no importa su valor).
Los registros de propsito general (GPRs) se indican con el signo del dolar ($). Las
palabras SWORD y UWORD hacen referencia a tipos de datos de 32-bits con signo y
sin signo respectivamente.
La funcin advance_pc (int) se usa para indicar el nuevo valor de PC tras la ejecucin
de la instruccin. La funcin se define como:
void advance_pc (SWORD offset)
{
PC = nPC;
nPC += offset;
}
A continuacin presentamos la descripcin del conjunto de instrucciones:
ADD Add (with overflow)
Description: Adds two registers and stores the result in a register
Operation: $d = $s + $t; advance_pc (4);
Syntax: add $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 0000
ADDI -- Add immediate (with overflow)
Description: Adds a register and a sign-extended immediate value and stores the result in a register
Operation: $t = $s + imm; advance_pc (4);
Syntax: addi $t, $s, imm
Encoding:
0010 00ss ssst tttt iiii iiii iiii iiii
ADDIU -- Add immediate unsigned (no overflow)
Description: Adds a register and a sign-extended immediate value and stores the result in a register
Operation: $t = $s + imm; advance_pc (4);
Syntax: addiu $t, $s, imm
Encoding:
0010 01ss ssst tttt iiii iiii iiii iiii
ADDU -- Add unsigned (no overflow)
Description: Adds two registers and stores the result in a register
Operation: $d = $s + $t; advance_pc (4);
Syntax: addu $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 0001
AND -- Bitwise and
Description: Bitwise ands two registers and stores the result in a register
Operation: $d = $s & $t; advance_pc (4);
Syntax: and $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 0100
ANDI -- Bitwise and immediate
Description: Bitwise ands a register and an immediate value and stores the result in a register
Operation: $t = $s & imm; advance_pc (4);
Syntax: andi $t, $s, imm
Encoding:
0011 00ss ssst tttt iiii iiii iiii iiii
BEQ -- Branch on equal
Description: Branches if the two registers are equal
Operation: if $s == $t advance_pc (offset << 2)); else advance_pc (4);
Syntax: beq $s, $t, offset
Encoding: 0001 00ss ssst tttt iiii iiii iiii iiii
BGEZ -- Branch on greater than or equal to zero
Description: Branches if the register is greater than or equal to zero
Operation: if $s >= 0 advance_pc (offset << 2)); else advance_pc (4);
Syntax: bgez $s, offset
Encoding:
0000 01ss sss0 0001 iiii iiii iiii iiii
BGEZAL -- Branch on greater than or equal to zero and link
Description: Branches if the register is greater than or equal to zero and saves the return address in $31
Operation: if $s >= 0 $31 = PC + 8 (or nPC + 4); advance_pc (offset << 2)); else advance_pc (4);
Syntax: bgezal $s, offset
Encoding:
0000 01ss sss1 0001 iiii iiii iiii iiii
BGTZ -- Branch on greater than zero
Description: Branches if the register is greater than zero
Operation: if $s > 0 advance_pc (offset << 2)); else advance_pc (4);
Syntax: bgtz $s, offset
Encoding:
0001 11ss sss0 0000 iiii iiii iiii iiii
BLEZ -- Branch on less than or equal to zero
Description: Branches if the register is less than or equal to zero
Operation: if $s <= 0 advance_pc (offset << 2)); else advance_pc (4);
Syntax: blez $s, offset
Encoding:
0001 10ss sss0 0000 iiii iiii iiii iiii
BLTZ -- Branch on less than zero
Description: Branches if the register is less than zero
Operation: if $s < 0 advance_pc (offset << 2)); else advance_pc (4);
Syntax: bltz $s, offset
Encoding:
0000 01ss sss0 0000 iiii iiii iiii iiii
BLTZAL -- Branch on less than zero and link
Description: Branches if the register is less than zero and saves the return address in $31
Operation: if $s < 0 $31 = PC + 8 (or nPC + 4); advance_pc (offset << 2)); else advance_pc (4);
Syntax: bltzal $s, offset
Encoding: 0000 01ss sss1 0000 iiii iiii iiii iiii
BNE -- Branch on not equal
Description: Branches if the two registers are not equal
Operation: if $s != $t advance_pc (offset << 2)); else advance_pc (4);
Syntax: bne $s, $t, offset
Encoding: 0001 01ss ssst tttt iiii iiii iiii iiii
DIV -- Divide
Description: Divides $s by $t and stores the quotient in $LO and the remainder in $HI
Operation: $LO = $s / $t; $HI = $s % $t; advance_pc (4);
Syntax: div $s, $t
Encoding:
0000 00ss ssst tttt 0000 0000 0001 1010
DIVU -- Divide unsigned
Description: Divides $s by $t and stores the quotient in $LO and the remainder in $HI
Operation: $LO = $s / $t; $HI = $s % $t; advance_pc (4);
Syntax: divu $s, $t
Encoding: 0000 00ss ssst tttt 0000 0000 0001 1011
J -- Jump
Description: Jumps to the calculated address
Operation: PC = nPC; nPC = (PC & 0xf0000000) | (target << 2);
Syntax: j target
Encoding:
0000 10ii iiii iiii iiii iiii iiii iiii
JAL -- Jump and link
Description: Jumps to the calculated address and stores the return address in $31
Operation: $31 = PC + 8 (or nPC + 4); PC = nPC; nPC = (PC & 0xf0000000) | (target << 2);
Syntax: jal target
Encoding:
0000 11ii iiii iiii iiii iiii iiii iiii
JR -- Jump register
Description: Jump to the address contained in register $s
Operation: PC = nPC; nPC = $s;
Syntax: jr $s
Encoding:
0000 00ss sss0 0000 0000 0000 0000 1000
LB -- Load byte
Description: A byte is loaded into a register from the specified address.
Operation: $t = MEM[$s + offset]; advance_pc (4);
Syntax: lb $t, offset($s)
Encoding:
1000 00ss ssst tttt iiii iiii iiii iiii
LUI -- Load upper immediate
Description:
The immediate value is shifted left 16 bits and stored in the register. The lower 16 bits are
zeroes.
Operation: $t = (imm << 16); advance_pc (4);
Syntax: lui $t, imm
Encoding: 0011 11-- ---t tttt iiii iiii iiii iiii
LW -- Load word
Description: A word is loaded into a register from the specified address.
Operation: $t = MEM[$s + offset]; advance_pc (4);
Syntax: lw $t, offset($s)
Encoding:
1000 11ss ssst tttt iiii iiii iiii iiii
MFHI -- Move from HI
Description: The contents of register HI are moved to the specified register.
Operation: $d = $HI; advance_pc (4);
Syntax: mfhi $d
Encoding: 0000 0000 0000 0000 dddd d000 0001 0000
MFLO -- Move from LO
Description: The contents of register LO are moved to the specified register.
Operation: $d = $LO; advance_pc (4);
Syntax: mflo $d
Encoding:
0000 0000 0000 0000 dddd d000 0001 0010
MULT -- Multiply
Description: Multiplies $s by $t and stores the result in $LO.
Operation: $LO = $s * $t; advance_pc (4);
Syntax: mult $s, $t
Encoding:
0000 00ss ssst tttt 0000 0000 0001 1000
MULTU -- Multiply unsigned
Description: Multiplies $s by $t and stores the result in $LO.
Operation: $LO = $s * $t; advance_pc (4);
Syntax: multu $s, $t
Encoding:
0000 00ss ssst tttt 0000 0000 0001 1001
NOOP -- no operation
Description: Performs no operation.
Operation: advance_pc (4);
Syntax: noop
Encoding:
0000 0000 0000 0000 0000 0000 0000 0000
Note: The encoding for a NOOP represents the instruction SLL $0, $0, 0 which has no side effects. In
fact, nearly every instruction that has $0 as its destination register will have no side effect and can thus be
considered a NOOP instruction.
OR -- Bitwise or
Description: Bitwise logical ors two registers and stores the result in a register
Operation: $d = $s | $t; advance_pc (4);
Syntax: or $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 0101
ORI -- Bitwise or immediate
Description: Bitwise ors a register and an immediate value and stores the result in a register
Operation: $t = $s | imm; advance_pc (4);
Syntax: ori $t, $s, imm
Encoding:
0011 01ss ssst tttt iiii iiii iiii iiii
SB -- Store byte
Description: The least significant byte of $t is stored at the specified address.
Operation: MEM[$s + offset] = (0xff & $t); advance_pc (4);
Syntax: sb $t, offset($s)
Encoding:
1010 00ss ssst tttt iiii iiii iiii iiii
SLL -- Shift left logical
Description:
Shifts a register value left by the shift amount listed in the instruction and places the result
in a third register. Zeroes are shifted in.
Operation: $d = $t << h; advance_pc (4);
Syntax: sll $d, $t, h
Encoding:
0000 00ss ssst tttt dddd dhhh hh00 0000
SLLV -- Shift left logical variable
Description:
Shifts a register value left by the value in a second register and places the result in a third
register. Zeroes are shifted in.
Operation: $d = $t << $s; advance_pc (4);
Syntax: sllv $d, $t, $s
Encoding: 0000 00ss ssst tttt dddd d--- --00 0100
SLT -- Set on less than (signed)
Description: If $s is less than $t, $d is set to one. It gets zero otherwise.
Operation: if $s < $t $d = 1; advance_pc (4); else $d = 0; advance_pc (4);
Syntax: slt $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 1010
SLTI -- Set on less than immediate (signed)
Description: If $s is less than immediate, $t is set to one. It gets zero otherwise.
Operation: if $s < imm $t = 1; advance_pc (4); else $t = 0; advance_pc (4);
Syntax: slti $t, $s, imm
Encoding: 0010 10ss ssst tttt iiii iiii iiii iiii
SLTIU -- Set on less than immediate unsigned
Description: If $s is less than the unsigned immediate, $t is set to one. It gets zero otherwise.
Operation: if $s < imm $t = 1; advance_pc (4); else $t = 0; advance_pc (4);
Syntax: sltiu $t, $s, imm
Encoding:
0010 11ss ssst tttt iiii iiii iiii iiii
SLTU -- Set on less than unsigned
Description: If $s is less than $t, $d is set to one. It gets zero otherwise.
Operation: if $s < $t $d = 1; advance_pc (4); else $d = 0; advance_pc (4);
Syntax: sltu $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 1011
SRA -- Shift right arithmetic
Description:
Shifts a register value right by the shift amount (shamt) and places the value in the
destination register. The sign bit is shifted in.
Operation: $d = $t >> h; advance_pc (4);
Syntax: sra $d, $t, h
Encoding: 0000 00-- ---t tttt dddd dhhh hh00 0011
SRL -- Shift right logical
Description:
Shifts a register value right by the shift amount (shamt) and places the value in the
destination register. Zeroes are shifted in.
Operation: $d = $t >> h; advance_pc (4);
Syntax: srl $d, $t, h
Encoding:
0000 00-- ---t tttt dddd dhhh hh00 0010
SRLV -- Shift right logical variable
Description:
Shifts a register value right by the amount specified in $s and places the value in the
destination register. Zeroes are shifted in.
Operation: $d = $t >> $s; advance_pc (4);
Syntax: srlv $d, $t, $s
Encoding:
0000 00ss ssst tttt dddd d000 0000 0110
SUB -- Subtract
Description: Subtracts two registers and stores the result in a register
Operation: $d = $s - $t; advance_pc (4);
Syntax: sub $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 0010
SUBU -- Subtract unsigned
Description: Subtracts two registers and stores the result in a register
Operation: $d = $s - $t; advance_pc (4);
Syntax: subu $d, $s, $t
Encoding:
0000 00ss ssst tttt dddd d000 0010 0011
SW -- Store word
Description: The contents of $t is stored at the specified address.
Operation: MEM[$s + offset] = $t; advance_pc (4);
Syntax: sw $t, offset($s)
Encoding:
1010 11ss ssst tttt iiii iiii iiii iiii
SYSCALL -- System call
Description: Generates a software interrupt.
Operation: advance_pc (4);
Syntax: syscall
Encoding:
0000 00-- ---- ---- ---- ---- --00 1100
The syscall instruction is described in more detail on the System Calls page.
XOR -- Bitwise exclusive or
Description: Exclusive ors two registers and stores the result in a register
Operation: $d = $s ^ $t; advance_pc (4);
Syntax: xor $d, $s, $t
Encoding: 0000 00ss ssst tttt dddd d--- --10 0110
XORI -- Bitwise exclusive or immediate
Description: Bitwise exclusive ors a register and an immediate value and stores the result in a register
Operation: $t = $s ^ imm; advance_pc (4);
Syntax: xori $t, $s, imm
Encoding:
0011 10ss ssst tttt iiii iiii iiii iiii