Está en la página 1de 5

Prcticas de Estructura de Computadores Grado en Ingeniera Informtica

Curso 2010/2011

PRCTICA 1-2 LENGUAJE MAQUINA PROCESADOR MIPS E INTRODUCCIN AL SIMULADOR Simula3MS Hecho por: Carlos Vadillo Toledano y Alberto Sevilla Vera
Objetivos: Familiarizarse con la arquitectura del MIPS Conocer el formato de las instrucciones del MIPS Aprender a manejar el simulador Simula3MS

Desarrollo / Comentario: Para el desarrollo de esta prctica (y las siguientes) vamos a emplear el programa Simula3MS, que implementa un subconjunto de las instrucciones del procesador MIPS. Adems de poder escribir y ejecutar programas en lenguaje ensamblador del MIPS, el Simula3MS simula el comportamiento del camino de datos durante la ejecucin de los mismos. Antes de comenzar con el desarrollo de esta prctica se introducir la arquitectura del MIPS y la herramienta. Tanto el programa como el manual de usuario del mismo (que incluye una descripcin de la arquitectura del MIPS y del juego de instrucciones implementado) pueden descargarse desde moodle. Parte 1) a. Rellena las columnas Nemotcnico y Formato indicando a qu instrucciones del MIPS hacen referencia los siguientes palabras de 32 bits almacenadas en memoria a partir de la direccin 0x00400000, as como el formato de cada una de las instrucciones:

Direccin [0x00400000] [0x00400004]

Palabra almacenada 0x3c0d1001 0x35ad0054

Nemotcnico lui $t5,1001h


Ori $t5,$t5,0x0054

Formato I
I

[0x00400008] [0x0040000c] [0x00400010] [0x00400014]

0x140d0001 0x8d2c0000 0x08100006 0x02768020

Bne $zero,$t5,0x0001 Lw $t4,0000 ($t9) J 0100006 Add $s0 $s3 $s6

I I J R

Comprobar que estn bien usando el simulador

Prcticas de Estructura de Computadores Grado en Ingeniera Informtica

Curso 2010/2011

Prcticas de Estructura de Computadores Grado en Ingeniera Informtica

Curso 2010/2011

b. Anlisis de un Programa Ejemplo. Estudia el programa ejemplo que se muestra a continuacin para comprender su funcionamiento.
#segmento de datos .data .word 13 .word 0x1500 .word 0 # segmento de texto .text .globl main main: la $t1,num1 lw $t2, 0($t1) la $t3,num2 lw $t4, 0($t3) add $t5, $t2, $t4 addi $t5, $t5, -7 la $t6,resul sw $t5, 0($t6) addi $v0, $0, 10 #llamada al sistema para salir del programa syscall

num1: num2: resul:

Observar que: o hay dos secciones: .data (opcional): Contiene la declaracin de variables necesarias. Se guardan en el segmento de datos del programa. .text (obligatoria): Contiene las instrucciones. Se guardan en el segmento de texto del programa.

Los comentarios se ponen con el smbolo # Etiqueta: debe ser nica en la lnea Declaracin de variables: Etiqueta_Nombre_var: <tipo> <valores> Donde tipo puede ser: .ascii .asciiz .word .space .float .double Por defecto se usa base 10

Prcticas de Estructura de Computadores Grado en Ingeniera Informtica

Curso 2010/2011

c. Indica qu hace el programa. -El programa lee dos nmeros que estn en memoria( el 13, el 0x1500) y los suma almacenndolos en el temporal 5, luego le resta el 7 y lo almacena en la variable resul.

d. Qu valor se almacena en resul? -Se almacena el valor 0x1506.

e. Indica en hexadecimal la codificacin de las siguientes instrucciones mquina. lw $t2, 0($t1) 0x8d2a0000 add $t5, $t2, $t4 0x014c6820

addi $t5, $t5, -7 0x21ADfff9

sw $t5, 0($t6) 0xadcd0000

Parte 2) Uso del simulador Simula3MS f. Ejecutar el programa Simula3MS y cargar el programa 2010Practica1.s Archivo/Abrir) (opcin

g. Ensamblar el programa. Si no tiene errores entrar en Ejecutar. Observar la informacin que aparece. En qu direccin de memoria se ha cargado el programa? en el segmento de texto_____0x10010004____ En qu direccin de memoria se han cargado los datos? En el segmento de datos______0x10010000___ Qu valor tiene el PC?___00400000___________ Comprobar en el segmento de texto que habis realizado correctamente el apartado e. Qu valor toma la etiqueta num2? ___0x10010004_________

Prcticas de Estructura de Computadores Grado en Ingeniera Informtica

Curso 2010/2011

h. Observar el segmento de datos. Indica el valor que hay cargado en las direcciones de memoria : a. Num1 __0d__, Num1+1 _00___, Num1+2 _00___, Num1+3 ___00_, b. Num2 ___00____ c. Num2+2 __00____

Ahora vamos a ejecutar el programa (arquitectura del procesador monociclo) con la opcin de Ciclo siguiente e iremos observando ciclo a ciclo como se va ejecutando el programa y como se van modificando los registros. i. Qu valor tiene $t5 al acabar el programa? _0x00001506_______ j. Cuntos ciclos tarda en ejecutarse el programa? __13 ciclos_____ k. Indica la direccin de memoria en la que se almacena la instruccin lw $t4, 0($t3) [0x00400014]

l. Indica en qu instrucciones se transforma la pseudo-instrucccin la $t1, num1 lui $t1, 0x1001 ori $t1, $t1, 0x0000

También podría gustarte