Sei sulla pagina 1di 28

rct|cas de ensamb|ador MIS

Este uocumento iecoge el mateiial necesaiio paia la iealizacion ue las picticas ue


piogiamacion en ensamblauoi ue la asignatuia Tecnologia ue los Computauoies. A
continuacion se piesenta un inuice con el conteniuo uel uocumento.
1. Intiouuccion y 0bjetivos
2. Simulauoi NARS
S. Piogiamacion en ensamblauoi NIPS
4. Ejeicicios ue laboiatoiio
S. Caiacteiisticas uel piocesauoi NIPS
1. Introducc|n y Cb[et|vos
Con esta pictica se pietenue que el alumno se familiaiice con el funcionamiento a
nivel ISA (Instiuction Set Aichitectuie) ue un piocesauoi. Concietamente vamos a
utilizai el piocesauoi NIPS (ue Niciopiocessoi without Inteilockeu Pipeline
Stages). Paia ello al alumno se le piesentain una seiie ue couigos en ensamblauoi
paia que los entienua y uepus los vea en ejecucion en un simulauoi.
Posteiioimente el alumno uebei uesaiiollai un piogiama en ensamblauoi paia la
iesolucion ue un pioblema piopuesto.

Los objetivos que sei peisiguen son:
Compienuei el funcionamiento bsico uel piocesauoi NIPS
Familiaiizaise con el nivel ISA uel piocesauoi NIPS
Intiouuccion a la piogiamacion en ensamblauoi
0tilizacion ue un simulauoi ue un piocesauoi a nivel ISA
2. S|mu|ador MAkS (MIS Assemb|er and kunt|me S|mu|ator)
Paia iealizai las picticas con el ensamblauoi NIPS, puesto que no pouemos
acceuei a una platafoima con uicho piocesauoi, vamos a utilizai un softwaie
emulauoi uel mismo. Bicho softwaie se llama NARS y nos va a peimitii:
caigai y euitai piogiamas esciitos en ensamblauoi NIPS
ejecutai (con opcion paso a paso) los piogiamas caigauos
visualizai en touo momento el conteniuo ue los iegistios uel piocesauoi asi
como ue la memoiia uel sistema simulauo
Descarga e |nsta|ac|n de| programa
El piogiama es multiplatafoima puesto que est esciito en lenguaje }AvA. Poi
tanto paia su utilizacion bastai con uescaigailo uesue su web
(http:couises.missouiistate.euuKenvollmaiNARSinuex.htm) y uisponei uel
iuntime ue }AvA. 0na vez uescaigauo, bastai con ejecutai el ficheio .jai
uescaigauo.
Descr|pc|n de| programa
(http:]]www.thehouseofb|ogs.com]art|cu|o]mars_s|mu|ador_e_|de_para_|engua[e_
ensamb|ador-47369.htm|)
NARS es un entoino ue uesaiiollo integiauo (IBE) ligeio paia piogiamai en
lenguaje ensamblauoi NIPS, uestinauo a la euucacion.
Venta[as edagg|cas
!"#$%&#'$'()*+': NARS est esciito en lenguaje }AvA, y se uistiibuye
empaquetauo en foimato .jai poi lo que en teoiia se pueue coiiei en cualquiei
computauoia que tenga instalaua la mquina viitual ue }ava (}vN).
,%-./-%' !12: Lo que significa que pueue usaise sin iestiicciones; incluyenuo usai,
copiai, mouificai (poi lo tanto auaptailo a necesiuaues especificas), integiai con
otio Softwaie, publicai, sublicenciai o venuei copias uel Softwaie, y auems
peimitii a las peisonas a las que se les entiegue el Softwaie hacei lo mismo.
A pesai ue sei una aplicacion que uel tipo "Simulacion" piesenta un inteiesante
compoitamiento que guia al apienuiz en el pioceso ue cieacion, ensamblaje y
ejecucion ue un piogiama.
Al iniciai NARS solo tiene S funciones habilitauas en la baiia estnuai: /.3 (cieai
un aichivo vacio), )&./ (abiii un aichivo ensamblauoi existente) y 4.#&
(uespliega la ayuua).

Al cieai o abiii un aichivo, se activan las funciones ue euicion ue texto (ueshacei,
iehacei, coitai, copiai, pegai, buscaiieemplazai), ue manejo ue aichivo (guaiuai,
guaiuai como..., impiimii) y paia la ejecucion se activa solo "assamble"
(ensamblai) en el men "iun" (o en el giupo ue iconos coiiesponuientes a la
ejecucion).

Cuanuo un usuaiio pulsa "assamble", si el couigo tiene eiioies sein mostiauos en
la ventana "Nais Nessages" uesciibienuo el aichivo, las lineas y los uetalles
coiiesponuientes a los eiioies, si no hay eiioies se oculta la pestaa "Euit" y se
activa la pestaa "Execute", que muestia poi sepaiauo la vista uel segmento ue
uatos en memoiia (puuinuose euitai sus valoies) y el segmento ue couigo,
activnuose las funciones ue ejecucion "Ejecutai", "Ejecutai una sola instiuccion" y
"Reiniciai", si est en ejecucion es posible pausai la coiiiua o ueteneila, incluso es
posible ietioceuei una instiuccion.


5"/-%)/.6 7. 7.&"*'-%8/ '#$'+./$. %/$"%$%9'6: 0sualmente los IBEs ue
piogiamacion en cualquiei lenguaje, agiegan una opcion ue uepuiacion en la que
agiegan touas las heiiamientas uisponibles paia este fin. En NARS estn en la
baiia ue heiiamientas estnuai poi lo que estn uisponibles en un solo paso. Entie
ellas estn:
1. Ejecutai una instiuccion.
2. Retioceuei los cambios ue una instiuccion ejecutaua.
S. Pausai la ejecucion.
4. Betenei la ejecucion completamente.
S. Ajustai la velociuau ue ejecucion.

Touas esas opciones se complementan con otias funciones ms comunes tales
como
6. Ejecutai.
7. Ensamblai (limpia cualquiei bieakpoint en el piogiama).
8. Reiniciai Registios y Nemoiia.

Si volvemos a la ventana piincipal uel piogiama:

1. Pouemos vei que el tab seleccionauo nos muestia que estamos en euicion.
2. Las acciones tipicas ue euicion y ejecucion estn uisponibles poi meuio ue
iconos
S. o poi meuio ue mens. Las que estn oscuieciuas no estn uisponibles o no
se pueuen aplicai.
4. Euitoi WYSIWYu paia couigo en lenguaje ensamblauoi NIPS.
Si cambiamos el tab a ejecucion obtenemos esta ventana:
1. Edit display is indicated by highlighted tab.
2, 3. Typical edit and execute operations are available through
icons and menus, dimmed-out when unavailable or
not applicable.
4. WYSIWYG editor for MIPS assembly language code.
3
4
2
1

1. La pestaa seleccionaua nos inuica que estamos en mouio ejecucion
2. El couigo ensamblauoi se visualiza junto con su uiieccion, couigo mquina y
la coiiesponuiente linea uel ficheio fuente (el couigo fuente y couigo
ensamblauoi pueuen sei uifeientes cuanuo se utilizan pseuuo-
instiucciones).
S. Los valoies almacenauos en memoiia se pueuen euitai uiiectamente.
4. La ventana con los conteniuos ue la memoiia se pueue contiolai ue vaiias
foimas: con las flechas siguienteanteiioi y con un men ue sitios
uestacauos (tope ue la pila, .).
S. Se pueue seleccionai las bases uecimal y hexauecimal paia iepiesentai los
valoies y las uiiecciones (memoiia y iegistios).
6. Tambin se pueue acceuei a las uiiecciones ue las etiquetas ueclaiauas en
el couigo (main, uiiecciones ue salto, etc.)
7. Los valoies almacenauos en los iegistios tambin son euitables.
8. Se pueue ponei un punto ue iuptuia en cualquiei instiuccion mquina
activanuo su coiiesponuiente checkbox.
9. La velociuau ue ejecucion uel piogiama se pueue vaiiai paia vei como
ocuiie la accion ue caua instiuccion en vez ue vei solo el iesultauo final.

Uso bs|co de| s|mu|ador MAkS
Los ficheios fuente con los que tiabaja el piogiama, son ficheios ue texto con
extension .s o .asm que contienen couigo en ensamblauoi NIPS. Paia euitai uichos
ficheios utilizaiemos el tab Euit ue NARS.
1
8
2
3
4
5
6
9
7
1. Execute display is indicated by highlighted tab.
2. Assembly code is displayed with its address, machine code, assembly code, and the corresponding
line from the source code file. (Source code and assembly code will differ when pseudoinstructions have been used.)
3. The values stored in Memory are directly editable (similar to a spreadsheet).
4. The window onto the Memory display is controlled in several ways: previous/next arrows and a menu of
common locations (e.g., top of stack).
5. The numeric base used for the display of data values and addresses (memory and registers) is selectable between
decimal and hexadecimal.
6. Addresses of labels and data declarations are available. Typically, these are used only when single-stepping to
verify that an address is as expected.
7. The values stored in Registers are directly editable (similar to a spreadsheet).
8. Breakpoints are set by a checkbox for each assembly instruction. These checkboxes are always displayed and available.
9. Selectable speed of execution allows the user to watch the action instead of the assembly program finishing directly.
Tambin pouiemos caigai un ficheio pieviamente cieauo con las opciones uel
men File (open) o con el boton ue la baiia ue heiiamientas. 0na vez
caigauo, el aspecto sei similai al ue la siguiente figuia.

En esa ventana pouiemos euitai el couigo fuente. Paia pouei empezai a tiabajai
con el simulauoi, uebeiemos compilai el couigo ensamblauoi. Paia ello
utilizaiemos el boton que automticamente nos pasai a la ventana ue
ejecucion como la ue la siguiente pantalla.


Paia ejecutai el piogiama existen vaiias opciones:
El icono ejecuta el piogiama hasta el final.
El icono iesetea el piogiama y el simulauoi a sus valoies iniciales. El
conteniuo ue la memoiia sei el especificauo poi el piogiama y el ue los
iegistios sei geneialmente ceio.
El icono ejecutai una instiuccion caua vez. Esto nos ayuuai a vei la
evolucion ue los iegistios y ue la memoiia paso a paso. La instiuccion a
ejecutai apaiecei iesaltaua en el couigo. Su complementaiio es , que
ueshace los cambios piouuciuos poi la ltima instiuccion (unuo).

La siguiente figuia muestia con un poco ms ue uetalle la ventana que muestia el
segmento ue texto (couigo):


La piimeia columna (:;&$) son los checkbox paia establecei los puntos ue
iuptuia (bieakpoints).
La siguiente columna (<77*.66) especifica la uiieccion ue memoiia uonue
ha siuo almacenaua la instiuccion.
La teiceia columna (=)7.) muestia el couigo mquina asociauo a caua
instiuccion en ensamblauoi.
A continuacion tenemos la columna (:'6%-) que muestia la iepiesentacion
en ensamblauoi ue la instiuccion mquina ue la columna coue.
Poi ltimo tenemos la columna (>)"*-.) que muestia el couigo fuente
oiiginal incluiuos comentaiios. Pouemos obseivai como algunas
instiucciones uel couigo oiiginal han siuo tiansfoimauas en vaiias
instiucciones mquina.
Asi poi ejemplo, la linea iesaltaua que seiia la pioxima instiuccion a ejecutai (paso
a paso) nos inuica que:
la instiuccion ha siuo caigaua en la posicion ue memoiia uxuu4uuuC
el couigo mquina ue la instiuccion (S2 bits) es uxSCu11uu1
la instiuccion ensamblauoi asociaua es: lui $1, 0x1001
la instiuccion ensamblauoi oiiginal ue la que se ueiiva la anteiioi seiia: lw
$9, dato2($0)
La ventana paia inspeccionai la memoiia (?'$' >.@+./$) muestia el segmento ue
uatos uel piogiama, la pila y el espacio uel keinel (sistema opeiativo), etc . El que
nos inteiesa poi ahoia es el segmento ue uatos uel usuaiio (.uata). En la siguiente
imagen vemos un ejemplo ue segmento ue uatos:

vemos vaiias columnas:
La piimeia columna nos muestia la uiieccion base ue memoiia que
iepiesenta la fila
El iesto ue columnas muestian el conteniuo ue memoiia ue la posicion base
ms el uesplazamiento especificauo en la columna (A'#".BC7.6&D)
Asi, en el ejemplo, la piimeia uiieccion visualizaua es la ux1uu1uuuu, cuyo
conteniuo seiia uxuuuuuuu2 (piimeia columna value(+u)). La siguiente columna
muestia un valoi ue uxuuuuuuuS coiiesponuiente a la uiieccion ux1uu1uuu4 (la
uiieccion base ue la fila ux1uu1uuuu ms el uesplazamiento coiiesponuiente a la
columna (+4))
3. rogramac|n en ensamb|ador MIS
Paia piogiamai en ensamblauoi NIPS auems ue conocei las instiucciones
uisponibles (tanto su significauo como su nomenclatuia), se tienen que conocei
una seiie ue ieglas sintcticas y lxicas que uebe iespetai touo ficheio con un
piogiama en ensamblauoi paia que pueua sei entenuiuo poi el compilauoi.
Paia piogiamai en ensamblauoi ue una maneia comoua y sencilla se tienen que
utilizai etiquetas y uiiectivas paia el compilauoi.
Las .$%E".$'6 Iuentifica una instiuccion, su valoi es la posicion en memoiia ue
uicha instiuccion.
Las 7%*.-$%9'6 siiven paia uai estiuctuia al piogiama (.data, .text) y paia
uefinii tipos ue uatos (.byte, .woiu, .ascii, .).
La estiuctuia ue un piogiama en ensamblauoi consta ue una seiie ue vaiiables
que empiezan con la uiiectiva .data y ue una seiie ue instiucciones consecutivas
que empiezan poi la uiiectiva .text.
En el apaitauo .data, la ueclaiacion ue vaiiables caua linea est foimaua poi:
una etiqueta (seguiua ue ":")
una uiiectiva ue uefinicion ue uatos
los uatos
comentaiios (comenzanuo poi "#")
Poi ejemplo:
.data
micadena: .ascii cadena ejemplo # caracteres
palabra: .word 50 # esto ocupa 4 bytes
vectorW: .word 2,6,9,1 # 4 posiciones de 4 bytes consecutivas
vectorB: .byte 3,5,7 # esto ocupa 3 bytes
bloque: .space 30 # 30 bytes no inicializados
En el apaitauo .text, se esciiben las instiucciones que foiman el piogiama. Caua
linea est foimaua poi:
una etiqueta (opcional)
un mnemonico (iuentifica la instiuccion)
opeianuos
comentaiios (si existe comienza poi '#')
Poi ejemplo:
main: lw $8, dato1($0) # cargamos dato1 en registro $8
A continuacion tenemos el couigo completo ue un piogiama que suma uos
vaiiables (uato1 y uato2) y el iesultauo lo almacena en otia vaiiable (sum):

.data
dato1: .word 2 # Primer dato a comparar
dato2: .word 5 # Segundo dato a comparar
sum: .word 0 # Variable para almacenar la suma

.text
main: lw $8, dato1($0) # cargamos el primer dato en el registro $8
lw $9, dato2($0) # cargamos el segundo dato en el registro $9
add $10, $8, $9 # sumamos los registros y el resultado va a $10
sw $10, sum($0) # almacenamos el resultado ($10) en sum
fin: li $2, 10 # cargamos parmetro necesario para syscall
syscall # llamada al sistema que termina un programa

4. L[erc|c|os de |aborator|o
L[erc|c|o 1.
Caiga el piogiama !"#$%& en el simulauoi '()!% Inspecciona el segmento uel texto
y ue los uatos. Contesta a las siguientes cuestiones:
1. En qu posicion ue memoiia se ha caigauo la piimeia instiuccion ue tu
piogiama (la etiquetaua con main).
main





2. Que posicion ue memoiia se le ha asociauo a las vaiiables.
dato1

dato2

sum


S. Poi qu la instiuccion lw $9, dato2($0) se ha uescompuesto en ties.



4. Couifica en binaiio la instiuccion add $10, $8, $9 (pueues consultai los
foimatos ue instiuccion al final ue este uocumento).
Binaiio Bexauecimal

Compiueba que tu couificacion coinciue con la que apaiece en el simulauoi.
Ejecuta el piogiama completo y compiueba que en la vaiiable sum se ha caigauo el
coiiesponuiente valoi (suma ue dato1 y dato2).
En la ayuua uel piogiama se explica el foimato y significauo ue touas las
instiucciones y pseuuo-instiucciones. Auems se inuica como se uebe usai el
comanuo syscall.
S. Poi qu se caiga el valoi 1u en el iegistio $2 antes ue la ejecucion ue
syscall.
vuelve a ejecutai el piogiama peio ahoia paso a paso y ve compiobanuo la
coiiecta ejecucion ue touas las instiucciones que lo componen (miianuo como
cambia el conteniuo ue los iegistios yo memoiia implicauos en caua una). Cambia
el valoi ue las vaiiables y ejecuta el couigo paia vei los nuevos iesultauos.
6. En qu maneia cambiaiian los iesultauos si usiamos la instiuccion auuu
en vez ue auu.
L[erc|c|o 2.
Caiga el piogiama '$+,#-%& en el simulauoi. Este couigo va a esciibii en la
vaiiable #$+ el valoi mximo conteniuo en las vaiiables .$/-0 y .$/-1. Paia
entenuei el couigo uebeis iepasai el significauo y funcionamiento ue las
instiucciones &2/ y 345%
1. Bay otia maneia ue llegai al mismo iesultauo.
Ejecuta el piogiama paso a paso y obseiva como se compoita el couigo paia
conseguii su objetivo.
2. Cambia el valoi ue los uatos ue foima que uato2 sea ms gianue que uato1.
Be qu maneia cambian los pasos que sigue el piogiama.
S. Cambia el piogiama paia que encuentie el minimo ue los uos valoies.
L[erc|c|o 3.
Caiga el piogiama !"#$647/-8%& que como su nombie inuica iealiza la suma ue
touos los valoies almacenauos en un vectoi. La vaiiable /$# inuica el tamao uel
vectoi, .$/-& contiene los valoies uel vectoi y 84& contenui el iesultauo ue la suma.
A continuacion apaiece el couigo fuente.
1. Comenta al lauo ue caua instiuccion que sentiuo tiene en el couigo:
.data
tam: .word 8
datos: .word 2, 4, 6, 8, -2 -4, -6 -7
res: .word 0
.text
main: lw $8, tam($0)
la $9, datos
sub $11, $11, $11
loop: lw $10, 0($9)
add $11, $11, $10
addi $9, $9, 4
addi $8, $8, -1
beq $8, $0, salir
j loop
salir: sw $11, res($0)
li $2, 10
syscall

Ejecuta el couigo y compiueba su coiiecto funcionamiento. Cambia los valoies uel
vectoi (tamao incluiuo) y compiueba que sigue funcionanuo coiiectamente.
Fijate especialmente en aquellas instiucciones necesaiias paia el contiol uel bucle.
En cuanto a la implementacion uel bucle, T lo habiias hecho ue la misma foima.
Se te ocuiie otia foima ue haceilo.
L[erc|c|o 4.
Copia el couigo anteiioi con el nombie vectoimax.s y mouificalo paia que en vez
ue sumai los elementos uel vectoi .$/-&, lo que almacene en 84& sea el valoi
mximo encontiauo en uicho vectoi.
Ejecuta el couigo que has cieauo y compiueba su coiiecto funcionamiento. Baz
vaiias piuebas cambianuo el tamao y los valoies almacenauos en el vectoi.
Requisitos:
El nombie uel ficheio ensamblauoi tiene que sei exactamente
"9.-$)*+'FG6"
El segmento ue uatos tiene que sei exactamente el mismo que el uel ficheio
!"#$647/-8%&, es uecii:

.data
tam: .word 8
datos: .word 2, 4, 6, 8, -2 -4, -6 -7
res: .word 0
L[erc|c|o S.
Implementa un pioceuimiento /) *.-"*6%9) en ensamblauoi NIPS que calcule el
teimino "n" ue la sucesion ue Fibonacci ("n" sei un paimetio ue entiaua a la
funcion).
Los nmeios ue Fibonacci !
!
! !
!
! !
!
! !
!
! ! queuan uefiniuos poi las ecuaciones:
!
!
! !
!
!
! !
!
!
! !
!!!
! !
!!!
!"#! ! ! !! !! !! !
Requisitos:
El ficheio ensamblauoi se tiene que llamai "(%H)/'--%G6"
La funcion que calcula el timino "n" ue la sucesion se uebe llamai "(%H"
La funcion "fib" tomai un paimetio ue entiaua "n" que se le pasai poi el
iegistio IJ y uevolvei el iesultauo poi el iegistio IK
L[erc|c|o 6.
En este ejeicicio se uebe iealizai una funcion *.-"*6%9' que uauo como paimetio
ue entiaua un nmeio natuial "n", uevuelva la suma ue los cuauiauos ue los
nmeios uesue 1 hasta n, es uecii:
!"# ! !
!
!
!!!

La iuea iecuisiva consiste en uaise cuenta que uauo un valoi "n", basta con sabei
la suma ue los cuauiauos ue "n-1" y a eso sumaile n
2
.
Requisitos:
El ficheio ensamblauoi se tiene que llamai "-"'7*'7)6G6"
La funcion que calcula la suma ue los "n" cuauiauos se uebe llamai "-"'7"
La funcion "-"'7" tomai un paimetio ue entiaua "n" que se le pasai poi
el iegistio IJ y uevolvei el iesultauo poi el iegistio IK
No hay que tenei en cuenta el uesboiuamiento, solo hay que uevolvei los S2
bits menos significativos uel iesultauo (iecueiua que al multiplicai uos
nmeios ue S2 bits el iesultauo es ue 64 bits, consiueiai solo los S2 menos
significativos)



S! Caracter|st|cas de| procesador MIS

Caracter|st|cas de| procesador MIS
Se tiata ue un piocesauoi ue S2 bits:
Registios ue S2 bits
AL0 con opeianuos ue S2 bits
Ancho ue los buses ue S2 bits
Tiene un conjunto ue S2 iegistios ue pioposito geneial visibles poi el
piogiamauoi.
Instiucciones ue tamao fijo ue S2 bits (1 palabia).
0iganizacion ue la memoiia:
Se oiganiza en palabias ue 4 bytes (S2 bits)
Biieccionamiento a nivel ue byte:
Bos palabias ue S2 bits consecutivas en memoiia estn sepaiauas
poi 4 posiciones. Asi poi ejemplo si la piimeia ue uos instiucciones
NIPS consecutivas (que ocupan caua una 1 palabia) estuvieia en la
posicion ue memoiia 1uu(16 la siguiente instiuccion estaiia en la
posicion 1u4(16.
Touas las instiucciones estn en uiiecciones mltiplo ue 4 (los uos
bits menos significativos sein uu)
Las instiucciones ueben estai en posiciones alineauas: PC (S2 bits)
se inciementai ue 4 en 4
Nmeio ue bytes en la memoiia: 2
S2

Nmeio ue palabias en la memoiia: 2
S2
4 = 2
Su

NEN0RIA

1uu
1u1
1u2
1uS
1u4
1uS
1u6
1u7
. .
P
a
l
a
b
r
a

1

P
a
l
a
b
r
a

2

1 Byte
Con[unto de |nstrucc|ones MIS

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

(
)
*
.
,
-
&
/
%
*
-
)

&
'


.
,
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

Potrebbero piacerti anche