Publicado el 5 de Julio del 2017
1.706 visualizaciones desde el 5 de Julio del 2017
1,8 MB
37 paginas
Creado hace 17a (02/01/2008)
Apéndice A
Manual de usuario
En este manual se explica como utilizar Simula3MS . En la sección A.1
se enumeran los pasos básicos para usar la herramienta. A continuación se
describen de forma más detallada la edición de programas en lenguaje en-
samblador para este procesador, los distintos elementos del simulador: el seg-
mento de texto, el segmento de datos, los registros, etc. así como las distintas
conguraciones.
A.1. Guía rápida
A continuación se indican los pasos básicos para empezar a trabajar con
Simula3MS :
1. Una vez abierta la ventana de Simula3MS , existen dos opciones:
Cargar un chero que ha sido editado con anterioridad.
Editar un nuevo código en lenguaje ensamblador.
2. Una vez editado o cargado el chero, el siguiente paso es ensamblarlo,
para ello hay que pulsar el botón Ensamblar. A partir de aquí hay dos
posibles resultados:
1
A.1. Guía rápida
2
Si el código que queremos ejecutar no tiene errores sintácticos se
activará el botón Ejecutar que permite acceder a la ventana de la
simulación de la ejecución del código analizado.
En caso de que el código no sea correcto, en la parte inferior de la
ventana aparecerá un listado con todos los errores y el primero de
ellos aparecerá remarcado. Se puede acceder a los siguientes, en
caso de que los hubiera, por medio del botón Error siguiente. Una
vez corregidos estos fallos se vuelve a pulsar botón Ensamblar y
se repite este paso.
3. El paso siguiente, previo a ejecutar, será escoger la conguración del
simulador sobre la que queremos que se ejecute el código. Para ello, en
el menú Conguración tenemos tres posibles opciones: Entrada/Salida,
Camino de datos y Técnicas de salto. Por defecto la opción activada es
el camino de datos Monociclo con la Entrada/Salida deshabilitada.
Entrada/Salida. La Entrada/Salida aparece inicialmente desacti-
vada. En caso de querer realizar una simulación orientada al es-
tudio de los mecanismos de Entrada/Salida se puede elegir entre
Entrada/Salida con encuesta o Entrada/Salida con interrupciones.
Camino de datos. La opción seleccionada por defecto es el camino
de datos Monociclo. Al escoger Multiciclo o cualquiera de las im-
plementaciones del procesador Segmentado, se abrirá una nueva
ventana formulario que permite congurar la latencia de las ope-
raciones en punto otante.
Técnicas de salto. Actualmente hay implementadas en Simula3MS
dos técnicas de salto: Salto retardado y Salto jo. Ambas apare-
cen inicialmente desactivadas y la selección de cualquiera de estas
técnicas implica escoger el pipeline básico.
4. Una vez obtenido, el código correcto y congurado el simulador, se pulsa
Ejecutar y tenemos acceso a la ventana en la cual se simula la ejecución
A.2. Manual extendido
3
del código escogido. En esta ventana se puede observar la ejecución del
programa completo usando el botón ejecutar, de modo que se mostrarán
sólo los valores nales, o bien ciclo a ciclo, mediante los botones ciclos
siguiente y ciclo anterior, pudiendo ver así las modicaciones que cada
instrucción realiza en cada ciclo.
A.2. Manual extendido
A.2.1. Edición del código
El primer paso al iniciar Simula3MS es editar un código en lenguaje en-
samblador, para ello se puede cargar el código de un chero o bien editarlo. La
sintaxis básica utilizada por Simula3MS tiene las siguientes características:
Los comentarios empiezan por el símbolo #, todo lo que aparezca en
la misma línea a continuación de este símbolo es ignorado.
Los programas se dividen en dos partes:
.text: sección obligatoria en todos los programas, contiene el con-
junto de las instrucciones del programa.
.data: sección opcional, aunque normalmente necesaria. Es la sec-
ción de declaración de las variables del programa.
Características de .text
La sección .text es obligatoria en todos los programas, contiene el conjunto
de instrucciones del programa. Los elementos siguientes se guardan en el
segmento de texto.
Las primeras líneas de la sección .text, obligatorias ya que indican al
simulador donde debe empezar la ejecución del programa, son:
.globl main
.main:
A continuación se escribe el código del programa, siguiendo estas reglas:
A.2. Manual extendido
4
Figura A.1: Ventana del editor
A.2. Manual extendido
5
Las etiquetas van seguidas por dos puntos (:). Una etiqueta válida es
una secuencia de caracteres alfanuméricos, subrayados (_) y puntos (.).
En la línea de la etiqueta no puede haber una instrucción, las instruc-
ciones se situarán a partir de la línea siguiente a la etiqueta.
Las instrucciones válidas implementadas en este simulador se muestran
en tablas según su tipo. Las enteras tipo R en el cuadro A.1, las tipo I
en el A.2 y las tipo J en la tabla A.3. En cuanto a las de punto otante,
las de tipo R se muestran en los cuadros A.4, A.5 y A.6, mientras que
las de tipo I están en el cuadro A.7.
Los registros enteros pueden indicarse por su número de orden o por
su nombre, por ejemplo $t1=$9. Las equivalencias se muestran en el
cuadro A.9. En el caso de los registros de punto otante, también se
permiten ambas nomenclaturas pero la equivalencia se limita a suprimir
la f. Ejemplo: $f6=$6.
Por defecto los números se representan en base 10.
Se pueden incluir llamadas al sistema operativo (syscall ), para solicitar
algún servicio como impresión por pantalla, ver sección A.5.
Con el objetivo de ayudar al usuario a cargar variables, Simula3MS tie-
ne también implementadas las pseudoinstrucciones la y li. Por ejem-
plo:
la $1, variable
carga en el registro $1 la dirección de memoria donde está almacenada
la variable. La ejecución de está pseudoinstrucción se divide en dos
instrucciones:
lui $1, 0x1001 (representa los 16 bits de mayor peso de la dirección
de memoria)
ori $ra, 0x0004 (16 bits de menor peso de la dirección de memoria)
A.2. Manual extendido
6
sub
or
slt
Inst. Denición
add
and
Almacena en el registro $1 el valor de
la suma de los otros dos
Almacena en el $1 el valor de la resta
de $2 (minuendo), menos el $3 (sus-
traendo)
Almacena en el $1 el resultado de ha-
cer una operación AND entre los otros
dos registros
Almacena en el $1 el resultado de ha-
cer una operación OR entre los regis-
tros $2 y $3
Coloca un 1 en el registro $1 si el valor
almacenado en $2 es menor que el de
$3. Si no lo es se almacena un 0 en $1.
Modica la dirección del PC, por aquel
valor almacenado en el registro $1
Se almacena en el HI el resto y en LO
el cociente de dividir $1 (dividendo)
entre $2(divisor).
Se almacena en el registro LO los 32
bits de menor peso y en HI los 32 de
mayor peso de la multiplicar $1 y $2.
mfhi Copia el valor almacenado en el regis-
mult
jr
div
Formato
add $1, $2, $3
sub $1, $2, $3
and $1, $2, $3
or $1, $2, $3
slt $1, $2, $3
jr $1
div $1, $2.
mult $1, $2.
mfhi $1.
tro HI en $1
mo Copia el valor almacenado en LO en el
mo $1.
registro $1
mfc0 Transere el registro $2 del coprocesa-
mfc0 $1, $2
sll
srl
sra
dor 0 al registro $1 de la CPU.
Almacena en el registro $1 el valor del
registro $2 desplazado n bits a la iz-
quierda
Almacena en el registro $1 el valor del
registro $2 desplazado n bits a la de-
recha
Almacena en el registro $1 el valor del
registro $2 después de hacer un des-
plazamiento aritmético de n bits a la
derecha
sll $1, $2, n
srl $1, $2, n
sra $1, $2, n
Cuadro A.1: Instrucciones tipo R
A.2. Manual extendido
Inst. Denición
7
Formato
addi
Se almacena en el registro $1 la suma del registro $2
addi $1, $2, cons-
y el valor de la constante
tante
andi
El registro $1 tiene el resultado de una operación AND
andi $1, $2, cons-
entre $2 y la constante
tante
ori
El registro $1 tiene el resultado de una operación OR
ori $1, $2, constan-
entre $2 y la constante
te
slti
Almacena en $1 un 1 si el valor registro $2 es menor
slti $1, $2, constan-
que el de la constante. En caso contrario almacena un
te
0
lui
Carga la constante en los 16 bits más signicativos del
lui $1, constante
registro $1
lw
Carga en el registro $1 la palabra almacenada en la
lw $1, desplaza-
dirección de memoria que contiene el registro $2 más
miento($2)
el desplazamiento. La nueva dirección calculada debe
ser múltiplo de cuatro
lb
Carga en el registro $1 el byte de memoria apuntado
lb $1, desplaza-
por la dirección almacenada en el registro $2 más el
miento($2)
desplazamiento
sw
Almacena en memoria en la posición obtenida de su-
sw $1, desplaza-
marle el desplazamiento a la dirección del registro $2,
miento($2)
la palabra del registro $1. La dirección debe ser múl-
tiplo de 4.
sb
Almacena en la posición de memoria correspondiente
sb $1, desplaza-
al valor de $2 más el desplazamiento, el primer byte
miento($2).
de la palabra almacenada en $1.
beq
Si el valor de $1 y $2 es igual se modica el valor del
beq $1, $2, etique-
PC para pasar a ejecutar el trozo de código apuntado
ta.
por la etiqueta.
bne
Si el valor de $1 y $2 no es igual se modica el valor del
bne $1, $2, etique-
PC para pasar a ejecutar el trozo de código apuntado
ta.
por la etiqueta.
Cuadro A.2: Instrucciones tipo I
A.2. Manual extendido
8
Inst. Denición
Formato
j
Modica el valor del PC para ejecutar
j etiqueta
las instrucciones siguientes a la etique-
ta
jal
Modica el valor del PC por aquel al
jal etiqueta
que apunta la etiqueta y almacena la
dirección actual del PC en $ra
Cuadro A.3: Instrucciones tipo J
Características de .data
La sección .data contiene la declaración de las variables del programa.
Los elementos siguientes se guardan en el segmento de datos, en concreto en
la memoria. Esta sección es opcional.
La declaración de las variables del programa se ajusta a las siguientes
reglas:
En cada línea no puede haber más de una etiqueta.
La declaración de una variable sigue este formato:
En primer lugar debe ir un identicador de variable válido (eti-
queta). Se considera válida cualquier s
Comentarios de: manual de simula3ms (0)
No hay comentarios