Está en la página 1de 27

TECNOLOGICO NACIONAL DE MEXICO

INSTITUTO TECNOLOGICO DE ACAPULCO


Educacin Tecnolgica con compromiso social

Ingeniera en Sistemas Computacionales


Carrera

Lenguajes y autmatas II
Asignatura

Actividades de aprendizaje
Unidad 4. Generacin de cdigo objeto

Competencia especfica a desarrollar


Utilizar un lenguaje de bajo nivel para traducir el cdigo construido a lenguaje mquina
para su ejecucin.

Profesor: Silvestre Bedolla Solano.

Integrantes del equipo: 4

Nombre Nmero de control


1.- Lorenzo Rosas Jos Francisco 11320197
2.- Neri Garca Beatriz 11320163
3.- Gonzlez Carbajal Erick 10320866
4.- Organista Ponce Freddy 10320151
5.- Magno Santana 10320809

Acapulco, Guerrero, Mayo del 2016


INDICE
- -

ACTIVIDAD 1. MAPA CONCEPTUAL DE LA ARQUITECTURA DE LOS


MICROPROCESADORES INTEL Y COMPATIBLES.

ACTIVIDAD 2. CUADRO SINPTICO DE LA ESTRUCTURA Y FUNCIONAMIENTO DEL


LENGUAJE ENSAMBLADOR.

ACTIVIDAD 3. LISTA DE LAS CARACTERSTICAS PRINCIPALES DEL LENGUAJE


MAQUINA A FIN DE LLEVAR UN CDIGO INTERMEDIO Y ESTE PUEDA SER
RECONOCIDO POR EL HARDWARE.

ACTIVIDAD 4. REPORTE DE LAS TCNICAS DE ADMINISTRACIN DE MEMORIA


PARA EL ALMACENAMIENTO DE DOS PROGRAMAS EN MOMENTO DE EJECUCIN.

ACTIVIDAD 5. REPORTE DE LA EXPERIMENTACIN/EJECUCIN DE PROGRAMAS


CON SIMULADORES DE ARQUITECTURA DE MICROPROCESADORES.

2
- -

Introduccin

Lenguaje Mquina:

Es el que proporciona poca o ninguna abstraccin del microprocesador de un ordenador. El


lenguaje mquina solo es entendible por las computadoras. Se basa en una lgica binaria
de 0 y 1, generalmente implementada por mecanismos elctricos. En general el lenguaje
maquina es difcil de entender para los humanos por este motivo hacemos uso de
lenguajes ms parecidos a los lenguajes naturales.

Caractersticas:

El lenguaje mquina realiza un conjunto de operaciones predeterminadas llamadas micro


operaciones. Las micro operaciones slo realizan operaciones del tipo aritmtica (+,- ,*,/),
lgicas (AND, OR, NOT) y de control (secuencial, de control y repetitiva). El lenguaje
maquina es dependiente del tipo de arquitectura. As un programa mquina para una
arquitectura Intel x86 no s ejecutara en una arquitectura Power PC de IBM (al menos de
manera nativa). Algunos microprocesadores implementan ms funcionalidades llamado
CISC, pero son ms lentos que los RISC ya que estos tienen registros ms grandes.
Ventajas
Mayor adaptacin al equipo.
Mxima velocidad con mnimo uso de memoria.
Desventajas
Imposibilidad de escribir cdigo independiente de la mquina.
Mayor dificultad en la programacin y en la comprensin de los programas.
El programador debe conocer ms de un centenar de instrucciones. Es necesario
conocer en detalle la arquitectura de la mquina.

El generador de cdigo objeto transforma el cdigo intermedio optimizado en cdigo objeto


de bajo nivel. Toma cdigo intermedio y genera cdigo objeto para la mquina considerada
Es la parte ms prxima a la arquitectura de la mquina. Habitualmente, se escriben a
mano desarrollo a medida para cada mquina especfica

3
- -

Actividad 1:
Mapa conceptual de la arquitectura de los microprocesadores Intel y compatibles.

PROCESADORES INTEL

Primera generacin Segunda generacin Tercera generacin Cuarta generacin

Quinta generacin Sexta generacin Sptima generacin

8086 80286 80386S 80486SX


8088 X 80486DX
80386D 804086DX
X 2
80486DX4
Pentium (P5/P54C). Pentium Pro
Pentium (P6).
Overdrive(P24T) Pentium II Pentium
Pentium MMX (P55C). Pentium III IV

Octava generacin

Intel Core
Intel Core2
Intel Core 2 Do
Intel Dual Core
Intel i3, i5,i7

4
- -

Actividad 2:
Cuadro sinptico de la estructura y funcionamiento del lenguaje ensamblador.

Los programas hechos en lenguaje


ensamblador, al ser programado directamente
Caractersticas sobre Hardware, son generalmente ms rpidos
y consumen menos recursos del sistema
(memoria RAM y ROM).

Como trabaja directamente con el microprocesador


Ventajas al ejecutar un programa, pues como este lenguaje
es el ms cercano a la mquina la computadora lo
procesa ms rpido.

Identifica la lnea en la cual se


Lenguaje ensamblador

encuentra.
- Se asocia a la direccin en la
Etiqueta cual se encuentra la instruccin
o el dato, o a la constante
definida.

Identifica:
Nemotcnico -Un cdigo de
Campos de una operacin del lenguaje
instruccin en -Una
ensamblador pseudoinstruccin

- Identifica los operandos que intervienen en


la instruccin o pseudoinstruccin.
- Tipos de operandos:
Constantes
Numricas: decimales (D), binarias (%,
B), octales (O,@,Q,C), hexadecimales (H,
Campo de $).
operandos Alfabticas: entre comillas.
Smbolos
Predefinidos: registros, contador de
direccin de ensamblado.
Implcitos: etiquetas de direccin.
Explcitos: mediante pseudoinstruccin.
Expresiones

5
- -

Actividad 3:

Lista de las caractersticas principales del lenguaje maquina a fin de llevar un cdigo
intermedio y este pueda ser reconocido por el hardware.

Caractersticas del lenguaje ensamblador.

Las instrucciones se expresan en el alfabeto binario (estn codificadas en binario como


cadena de unos y ceros) pudindose utilizar cdigos intermedios (octal y hexadecimal),
esta caractersticas hace que un programa en lenguaje maquina sea difcil de entender y,
como consecuencia, difcil de modificar.

Los datos se referencian por medio de las direcciones de memoria donde se encuentran
(no aparecen nombres de variables o constantes).

Las instrucciones realizan operaciones muy simples. El programador debe ingenirselas


para expresar cada una de las operaciones que desea realizar en funcin de las funciones
elementales que dispone.

Existe muy poca versatilidad para la redaccin de instrucciones, ya que, tienen un formato
rgido en cuanto a la posicin de los distintos campos (cdigo de operacin seguido de los
campos dedicados a los operandos).

El lenguaje maquina depende y est ntimamente ligado a la CPU del ordenador. Esto hace
que los programas en dicho lenguaje no sean transferibles de un modelo de ordenador a
otro es decir existe baja portabilidad.

En un programa en lenguaje maquina no pueden incluirse comentarios que faciliten la


legibilidad del mismo.

La salida del generador de cdigo es un cdigo preparado y adaptado para ser ejecutado,
directa, o indirectamente, en una arquitectura especfica. La adaptacin consiste en
aprovechar al mximo las caractersticas de la mquina para optimizar la ejecucin en
tiempo y en memoria.

Figura 3.1 Diagrama de la generacin del programa objeto a partir del programa fuente

6
- -

2- La fase de generacin de cdigo intermedio

3-Administracin de la memoria:
Uno de los propsitos de la generacin de cdigo final es la de traducir la representacin
simblica en cdigo intermedio de etiquetas y objetos de datos (variables, temporales,
parmetros, etc.) a direcciones reales en el mapa fsico de memoria.

Figura 3.3 Esquema de la administracin de memoria para los registros de segmento

4-Asignacin de Registros:
Las instrucciones que operan con registros son ms cortas y rpidas. Realizar un uso
eficiente de los registros es fundamental para generar un buen cdigo.

Figura 3.5 registros de direccin

5-Registros de segmento

7
- -

6-Seleccin de instrucciones:
La generacin de cdigo intermedio debe tener en cuenta el juego de instrucciones de la
mquina destino. Las traducciones a cdigo objeto deben ser, adems de correctas,
eficientes.

Figura 3.8 Esquema de la transformacin de instrucciones de un cdigo fuente a lenguaje mquina

Ejemplo: Cdigo en lenguaje ensamblador para rotar bits con acarreo a la derecha con la
instruccin rcr

8
- -

Cdigo del programa

Compilacin del programa

Banderas afectadas tras la ejecucin del programa

DESARROLLO

Cdigo de nuestro programa el cual tendr como objetivo imprimir los valores
hexadecimales del 1 al 15

9
- -

Al compilar se obtiene

10
- -

RESULTADOS

11
- -

Actividad 4:

Reporte de las tcnicas de administracin de memoria para el almacenamiento de


dos programas en momento de ejecucin.

Tcnicas de Administracin de Memoria


Introduccin
Es una tcnica que permite utilizar el disco como si fuera memoria RAM. Cuando un
programa es ms grande que el tamao fsico de la RAM, lo que se hace es pasar a disco
las porciones de RAM que no se estn utilizando en un momento determinado, dejando
solo en memoria las partes del programa que se estn ejecutando. Los programas no se
dan cuenta de todo lo que est ocurriendo por debajo, sin embargo como la velocidad de
acceso a disco es miles de veces ms lenta que la de la RAM, a la hora de devolver
porciones del programa a memoria desde el disco, el sistema puede comportarse de
manera ms lenta (sobre todo cuando se cargan muchos procesos de forma simultnea).

La memoria o memoria principal puede ser considerada como una matriz de bytes, cada
uno con una direccin. El administrador de memoria es parte del sistema operativo que
regula el uso o liberacin de la memoria. Una instruccin es una orden que se le da a la
computadora para que ejecute una operacin. Un proceso es una secuencia de
instrucciones que forman parte de un programa en ejecucin.

La memoria es un recurso necesario en todo sistema informtico y por eso debe ser
gestionado con cuidado, esta operacin la ejecuta el administrador de memoria o Memory
Manager. El administrador de memoria est encargado de asignar la memoria que necesita
un proceso, as como liberarla cuando el proceso la haya desocupado. Tambin debe estar
al pendiente de qu secciones de la memoria se estn utilizando y cules no, as como
debe tener control sobre cules procesos estn utilizando la memoria.

Para poder administrar la memoria es necesario poder acceder a ella ya sea para leerla,
guardar datos o simplemente reservarla, los bytes de la memoria pueden accederse por
medio de direcciones, las cuales pueden ser representadas de diferentes maneras. En un
programa fuente se utilizan direcciones simblicas, que ms adelante representan
direcciones concretas en un programa ejecutable.

En una computadora la memoria principal es un recurso vital para su funcionamiento ya


que no solo los programas pueden modificarla, sino que tambin los dispositivos de
entrada y salida pueden tener acceso a ella y modificarla. El procesador de la computadora
es el que debe regular los accesos a memoria y la velocidad de este para accederla y
modificarla (ya sea para escribir o borrar datos) depender de la eficiencia del computador.

12
- -

Hardware bsico

El direccionamiento de memoria se refiere a cualquier intento de acceder a la memoria ya


sea para leerla, escribir en ella o borrar su contenido, por medio de una direccin.

Figura 1: hardware bsico

Los registros del procesador son espacios pequeos de memoria en el procesador que se
utilizan, entre otras cosas, para que las instrucciones del procesador tomen de ah los
datos que necesitan para procesarlos.

Al desarrollar el hardware de una computadora, se debe definir la forma en que se va a


direccionar la memoria. El mximo direccionamiento que puede tolerar una computadora
se define segn la cantidad de bits que posean las direcciones a generar, si se toma se
nmero de bits como exponente de 2 se puede obtener el mximo direccionamiento
posible, lo que quiere decir que aunque el computador disponga de ms memoria, ser
imposible accederla, por ejemplo, si se tienen direcciones de 8 bits, solo se podr acceder
hasta 256 bits de memoria. Cuando se define el hardware, tambin se especifica la menor
unidad de memoria direccionable, es decir se escoge una cantidad mnima de bits a
direccionar, lo que implica que las siguientes posiciones en memoria tendrn ese tamao.

Por otra parte, la memoria principal y los registros del procesador son las nicas secciones
que pueden ser accesadas directamente, e incluso muchas de las instrucciones de la
mquina toman como parmetro el contenido de los registros ya mencionados, pero no hay
instrucciones que acepten direcciones de la memoria en disco, lo que implica que si se
necesitan datos de la memoria en disco, deben copiarse en los registros o en memoria
principal para poder ser utilizados. Es decir que, para poder ejecutar un proceso, es
necesario asegurarse de que este posea un espacio en memoria exclusivo para su uso y el
rango legal de direcciones de memoria disponibles, esto se hace por medio del
almacenamiento de un registro base y un registro lmite. El registro base guarda la primera

13
- -

direccin en memoria que corresponde a ese proceso, mientras que el registro lmite
muestra el rango mximo de memoria que necesita el proceso, por ejemplo, si el registro
base equivale a la posicin 2000 en memoria y el registro lmite tiene un valor de 500, el
proceso ocupa un espacio en memoria desde la direccin 2000 hasta la 2500.

Figura 2: registros

Es posible proteger el espacio en memoria para cada proceso, esto se logra haciendo que
el CPU compare las direcciones generadas en modo usuario con el contenido de los
registros a los que se desea acceder y en cualquier intento de acceder a direcciones que
no le correspondan, generar un error fatal.

Reasignacin de direcciones

La memoria usualmente aloja varios procesos al mismo tiempo y, de hecho, se busca


maximizar el uso del procesador teniendo una reserva de procesos a ejecutar, esta lista se
llama cola de procesos.

14
- -

Figura 3: Reasignacin de direcciones

Como el programador no sabe cules otros procesos van a estar en memoria al mismo
tiempo que el proceso que desea ejecutar, es necesario mover el programa a otra rea de
memoria en caso de ser necesario, es decir, si se necesita el espacio de memoria que est
utilizando ese proceso, el sistema operativo debe ser capaz de mover el proceso, ejecutar
otro y volver a cargar el proceso anterior justo en la instruccin en que haba quedado
antes de que fuera interrumpido.

Habitualmente se selecciona uno de los procesos de la cola de procesos, este se carga en


memoria y luego es ejecutado, cuando este termina, el espacio de memoria en el que fue
cargado, se declara libre para ser utilizado por otro proceso. Para hacer esto, el editor de
montaje o cargador se encarga de asignar las nuevas direcciones del proceso que se est
cargando en memoria y una vez asignadas las nuevas direcciones, poder ejecutar el
proceso.

La reasignacin de instrucciones y datos en memoria puede hacerse en cualquiera de las


siguientes etapas:

Tiempo de compilacin: solamente si se sabe con certeza en dnde va a ser


almacenado el programa cuando este sea compilado, se pueden generar direcciones
absolutas ya que no va a haber ningn inconveniente con el acceso a la memoria.

Tiempo de carga: si no se sabe a dnde se alojar el proceso cuando este sea


compilado, las direcciones deben ser reubicables, de modo que la asignacin de
direcciones se retrasa hasta cuando el proceso necesita ser cargado en memoria.

Tiempo de ejecucin: Si no hubiese problema con retrasar la reasignacin de


direcciones hasta el tiempo de ejecucin, es recomendable hacerlo, pero para esto se
necesita de un hardware especial, sin embargo, la mayora de sistemas operativos de
propsito general utilizan este mtodo.

15
- -

Espacios de direcciones lgico y fsico

Una direccin lgica o direccin virtual es una direccin generada por el CPU, mientras
que una direccin fsica es una direccin de la unidad de memoria. Las direcciones lgicas
que son generadas por un programa son llamadas, como conjunto, espacio de direcciones
lgicas, estas generan tambin el espacio de direcciones fsicas, el cual el conjunto de las
direcciones fsicas homlogas a las direcciones lgicas.

Figura 4: Espacios de direcciones lgico y fsico

Se tienen tambin la unidad de gestin de memoria (MMU o memory-management unit) la


cual es una parte del hardware que hace la equivalencia entre las direcciones virtuales y
fsicas en tiempo de ejecucin.

Tambin se cuenta con el registro de ubicacin, el cual es un sinnimo para el registro


base, el cual suma todas las direcciones generadas por un proceso de usuario cuando se
est cargando el proceso en memoria.

La memoria de una computadora se organiza en por lo menos dos niveles: principal y


secundaria. La memoria principal proporciona un acceso rpido a esta pero el costo es
elevado, tambin es voltil, es decir, su almacenamiento de informacin no es permanente.
Por otra parte, la memoria secundaria, se organiza de una manera similar a la memoria
principal sin embargo es lenta, barata y no voltil, lo que permite almacenar informacin
por mucho tiempo, ya sean programas, datos o ambos.

Si el sistema operativo puede administrar de forma correcta y efectiva las memorias


disponibles, es capaz de proveer las siguientes ventajas:

Los mdulos pueden compilarse y escribirse de forma independiente.

Se puede dar varios grados de proteccin de datos.

16
- -

Los procesos podran compartir mdulos.

Carga dinmica

La carga dinmica consiste en cargar las rutinas hasta que sean invocadas, es decir, no se
cargan hasta que se necesitan y todas las rutinas se mantienen en un disco en un formato
reubicable y tambin se aplaza el clculo de direcciones. Cuando una rutina en un proceso
necesita convocar a otra, primero revisa si ya est cargada, de lo contrario la busca y la
carga en memoria para su uso con el cargador de memoria, esto implica la actualizacin
de las tablas de direcciones del programa para dar evidencia del cambio generado al
cargar la rutina.

Esto proporciona como ventaja que si una rutina no se necesita en tiempo de ejecucin,
nunca ser cargada en memoria, por lo tanto ahorrar memoria y resulta til si se necesita
disponer de mucho cdigo para administrar casos poco frecuentes.

Montaje dinmico y bibliotecas compartidas

Para poder comprender el montaje dinmico es importante definir el montaje


esttico y montaje binario.

El montaje esttico se da cuando las bibliotecas del lenguaje utilizado en el sistema son
tomadas como un mdulo y son integradas en el programa. Por otra parte el montaje
binario se da cuando se pospone hasta el tiempo de ejecucin el montaje del programa.
Sin embargo el montaje dinmicoocurre cuando en el fragmento de cdigo se incluye
un stud, una pieza de cdigo que indica cmo encontrar o agregar la rutina deseada en la
imagen binaria.

Figura 6: montaje dinmico y bibliotecas compartidas.

17
- -

Es decir, el montaje dinmico retrasa el montaje de los mdulos externos hasta que el
mdulo de carga haya terminado de crearse.

Algunos sistemas operativos no permiten el montaje dinmico, sino que solamente el


esttico.

En Windows por ejemplo cuando queda poca RAM, el gestor de memoria virtual mueve
datos de la RAM a un espacio en disco llamado archivo de paginacin. Linux, sin embargo
emplea una particin especfica para el intercambio entre RAM y disco
denominada particin de intercambio (swap)

En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte


para el sistema operativo (monitor residente, ncleo) y otra parte para el programa que se
ejecuta en ese instante. En un sistema multiprogramado, la parte de "usuario" de la
memoria debe subdividirse an ms para hacer sitio a varios procesos. La tarea de
subdivisin la lleva a cabo dinmicamente el sistema operativo y se conoce como gestin
de memoria.

En un sistema multiprogramado resulta vital una gestin efectiva de la memoria. Si slo


hay unos pocos procesos en memoria, entonces la mayor parte del tiempo estarn
esperando a la E/S y el procesador estar desocupado. Por ello, hace falta repartir
eficientemente la memoria para meter tantos procesos como sea posible.

Carga de programas en memoria principal

La tarea central de cualquier sistema de gestin de memoria es traer los programas a


memoria principal para su ejecucin en el procesador. En casi todos los sistemas
multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como
memoria virtual. La memoria virtual est, a su vez, basada en el uso de una de dos
tcnicas bsicas; segmentacin y/o paginacin. Antes de ver ests tcnicas de memoria
virtual, se debe preparar el terreno considerando tcnicas ms simples que no requieren el
uso de memoria virtual. Una de estas tcnicas, la particin, se ha venido usando con
distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos tcnicas,
la paginacin simple y la segmentacin simple, no se usan en solitario. No obstante, el
estudio de la memoria virtual resultar ms sencillo si se consideran en primer lugar estas
dos tcnicas, sin tener en cuenta la memoria virtual.

Desarrollo

Paginacin

Tcnica que consiste en dividir la memoria en zonas iguales llamadas marcos de pgina. A
su vez los procesos (un proceso es un programa en ejecucin) tambin se dividen en
partes del mismo tamao, denominadas pginas. El SO se encarga de asignar los marcos

18
- -

de pgina necesarios a cada proceso y mantiene una estructura llamada tabla de


pginas que indica en que marco est cada pgina y tambin una lista de marcos libres.

La asignacin de los marcos de pgina a las pginas no tiene que ser consecutiva y un
proceso puede estar ubicado en marcos no contiguos.

Uno de los principales inconvenientes de esta tcnica es la Fragmentacin Interna.

Esquema de paginacin de memoria

Nota: El tamao de los marcos de pgina se disea mediante hardware

Segmentacin

A diferencia de la paginacin, en la segmentacin la memoria se divide en zonas de


tamao variable denominadas segmentos. El SO mantiene una tabla de segmentos para
cada proceso indicando la direccin de carga y la longitud de cada segmento. La
asignacin de segmentos tampoco tiene que ser contigua.
Uno de los principales inconvenientes de esta tcnica es la Fragmentacin Externa.

Memoria Virtual paginada o segmentada

Tanto en la paginacin como en la segmentacin todas las pginas o segmentos de un


proceso deben estar en memoria principal para que este se ejecute. Sin embargo esta
tcnica permite que se ejecuten procesos sin necesidad de que todas sus pginas o todos
sus segmentos estn en memoria principal. Las paginas o segmentos se leern cuando se
necesiten. La carga de una pgina o segmento en memoria principal puede requerir
descargar otras pginas o segmentos de memoria al disco.

Fragmentacin

La fragmentacin de la memoria es la memoria que queda desperdiciada al usar los


mtodos de gestin de memoria. La hay de dos tipos: Externa e Interna

19
- -

Fragmentacin Externa

Existe espacio total de memoria para satisfacer un requerimiento, pero no es contigua. La


fragmentacin externa se puede reducir mediante la compactacin para colocar toda la
memoria libre en un solo gran bloque, pero solo es posible si la relocalizacin es dinmica
y en tiempo de ejecucin.

Fragmentacin Interna

El hecho de asignar memoria en bloques de tamao fijo y predefinido se traduce en que la


memoria asignada puede ser ligeramente mayor que la que realmente se necesita, en cuyo
caso se desperdicia cierta cantidad. Se podra evitar permitiendo la asignacin exacta de
memoria que necesite cada proceso de forma dinmica.

Observacin

Una estrategia comn para reducir el impacto de la fragmentacin es separar las zonas
del sistema de archivos que experimenten muchas ms lecturas y escrituras de otras
zonas ms voltiles donde se crean y borran continuamente archivos. Por ejemplo el SO
se compone de carpetas estticas que se modifican con mucha menor frecuencia que los
Perfiles de los usuarios donde se suele estar creando y
destruyendo informacin continuamente. Al separar ambas zonas en particiones
independientes logramos que el desfragmentado trabaje de forma mucho ms eficiente.

20
- -

Actividad 5:

Reporte de la experimentacin/ejecucin de programas con simuladores de


arquitectura de microprocesadores.

Introduccin:

SPIM es un simulador autnomo para programas en lenguaje ensamblador escritos para


los procesadores R2000/R3000, los cuales son procesadores de 32 bits de la corporacin
MIPS. SPIM lee e inmediatamente ejecuta el cdigo en lenguaje ensamblador, proporciona
un depurador simple y un juego simple de servicios del sistema operativo.
SPIM es un MIPS simulador de procesador, diseado para ejecutarse en lenguaje
ensamblador cdigo para esta arquitectura. El programa simula R2000 y R3000
procesadores, y fue escrito por James R. Larus mientras que un profesor de la Universidad
de Wisconsin-Madison. [1] El lenguaje de mquina MIPS a menudo se ensea en cursos
de ensamblaje de nivel universitario, especialmente los que utilizan el libro de texto del
ordenador Organizacin y Diseo: La interfaz de hardware / software por David A.
Patterson y John L. Hennessy (ISBN 1-55860-428-6).

El nombre del simulador es una inversin de las letras "MIPS".

Simuladores SPIM estn disponibles para Windows (PCSpim), Mac OS X y Unix / Linux
basada en (xspim) sistemas operativos. Partir de la versin 8.0 en enero de 2010, el
simulador est licenciado bajo la norma licencia BSD.

En enero de 2011, un QtSpim importante versin 9.0 caractersticas que cuenta con una
nueva interfaz de usuario basada en la multiplataforma marco Qt IU y carreras de
Windows, GNU / Linux y Mac OS X. A partir de esta versin, el proyecto tambin ha sido
trasladado a SourceForge para un mejor mantenimiento. Se proporcionan versiones
precompilados de QtSpim para Linux (32 bits), Windows y Mac OS X, as como PCSpim
para Windows.

21
- -

SPIM soporta casi el conjunto completo de instrucciones del ensamblador-extendido para


el R2000/R3000 (omite algunas comparaciones de punto flotante complejas y detalles del
sistema de paginacin de memoria.).

Es necesario descargar el programa para poder evaluar lo que hemos estudiado a lo largo
del captulo 2. En esta seccin solo revisaremos algunos aspectos del programa SPIM que
nos ayudaran a simular los programas hasta el momento realizados.

Figura 1: Simulador SPIM en el entorno Windows

La primera ventana contiene a los registros, se muestra el valor de todos los


registros de propsito general (de $0 a $31), adems del Contador del Programa
(PC) y de otros registros para el manejo de excepciones (una excepcin es un
evento errneo debido a alguna incongruencia durante la ejecucin de un
programa). Tambin se muestran dos registros HI y LO, estos registros son
dedicados a las multiplicaciones y divisiones. De estos registros comentaremos un
poco ms adelante.

La segunda ventana contiene una parte de memoria en la que se colocar el cdigo


de usuario (el cdigo a evaluar). Por default se encuentra un segmento de cdigo
descrito en el archivo trap.handler, este cdigo corresponde a una especie del
kernel de la mquina. La idea es que los usuarios avanzados puedan hacer su
propio archivo para que hagan un manejo diferente de las excepciones. En el cdigo
que carga el archivo trap.handler se incluye una llamada a la funcin main, de
manera que cualquier programa que se quiera simular deber incluir al
procedimiento principal (main).

22
- -

La tercera ventana contiene una parte de la memoria en la que se colocarn los


datos, se incluye una seccin de propsito general, una parte dedicada a la pila
(stack) y otra que forma parte del Kernel.

La cuarta ventana es la ventana de mensajes, en la que se describen los diferentes


eventos que van ocurriendo durante la simulacin.

Desarrollo:

Un programa que suma 2 nmeros ledos por teclado


En este ejemplo se usar a la consola para obtener dos enteros, luego los enteros se
sumaran y se mostrar el resultado.

El cdigo del programa:

main: addi $v0, $zero, 4 # Servicio 4


la $a0, str1 # se imprime una cadena
syscall # para pedir un nmero

addi $v0, $0, 5 # Servicio 5


syscall # se lee el nmero
add $8, $0, $v0 # se coloca en $8

addi $v0, $zero, 4 # Servicio 4


la $a0, str2 # se imprime una cadena
syscall # para pedir el otro nmero

addi $v0, $0, 5 # servicio 5


syscall # se lee el otro numero
add $9, $0, $v0 # se coloca en $9

addi $v0, $zero, 4 # Servicio 4


la $a0, str3 # para indicar que se
syscall # dar el resultado

add $a0, $8, $9 # Se coloca la suma como argumento

23
- -

addi $v0, $0, 1 # Servicio 1


syscall # se muestra el resultado

addi $v0, $zero, 4 # Servicio 4


la $a0, str4 # muestra una cadena de
syscall # terminacin del programa

jr $31 # fin del main

.data
str1: .asciiz "Dame un numero: "
str2: .asciiz "Dame otro numero: "
str3: .asciiz "La suma de los numeros es : "
str4: .asciiz "\n\nFin del programa, Adios . . ."

Figura 2: entorno del simulador.

24
- -

Figura 3: ejecucion numero 1

Figura 4: ejecucion numero 2

Figura 5: resultados

Conclusin
Observaciones:

El cdigo se puede escribir con cualquier editor de texto (texto sin formato) y
salvarse con cualquier extensin, se sugiere .asm o .s slo por organizacin.

25
- -

El cdigo principal debe incluir a la etiqueta main porque en el kernel del programa
existe un salto hacia esa etiqueta.
Una vez que finalice la ejecucin del programa (la cual puede hacerse paso a paso
o con mltiples pasos), si se continua ejecutando, ocurrir una excepcin, debido a que
el kernel no tiene ms cdigo por ejecutar.

Conclusin

En una aplicacin con autmata programable el usuario actual (programador u operador)


necesita comunicacin con la mquina para programar y depurar el programa, para
acceder a los estados de planta y para forzar secuencias de mando sobre el sistema.

Estas funciones son cubiertas por las unidades de programacin, equipos y entornos
software inteligentes dedicados, con interfaces sencillas para el usuario, y con canales y
protocolos de conexin con el autmata ya resueltos.

Con ellos, el usuario accede a las funciones que necesita (programacin, depuracin,
visualizacin, forzado, etc.) de forma rpida y flexible, segn procedimientos interactivos
que facilitan la aplicacin del autmata a cualquier proceso industrial.

Un primer bloque de equipos lo constituyen las unidades de programacin, diagnstico y


test, destinadas a facilitar la edicin y puesta a punto de programas de autmata.

26
- -

Bibliografas

Metodologa de la Programacin
PROGRAMACION ESTRUCTURADA.

Daz, Emiliano Llano. Anlisis y Diseo de Compiladores. Mxico: Exa ingeniera


SA, 2002.

Ullman, Alfred V. Aho y Jeffrey D. Compiladores Principios, Tcnicas y Herramientas.


Estados Unidos: s.n., 2005.
Duque, Ral Gonzlez. Python para todos

Aho, A. V.; Sethi, R.; Ullman, J. D.:


"Compiladores. Principios, Tcnicas y Herramientas"
Addison-Wesley Iberoamericana. 1990

Wilhelm, R.; Maurer, D.:


"Compiler Design"
Addison-Wesley. 1995

27

También podría gustarte