SlideShare una empresa de Scribd logo
MARS (MIPS Assembler and Rutine Simulator )
Programación en MIPS MIPS( Microprocessor without Interlocked Pipeline Stages ) MARS es un entorno de desarrollo integrado (IDE) ligero para programar en lenguaje ensamblador MIPS, destinados a la educación. Camino típico: Ensamblador de MIPS. Traduce instrucciones de lenguaje ensamblador a lenguaje de máquina. Probar el código en un simulador de MIPS. Correr el código objeto en un sistema MIPS real.
Programación en MIPS Sistemas para Windows: MARS. Desarrollado en Missouri State University.  http://courses.missouristate.edu/KenVollmar/MARS/ El sistema ofrece: Interface gráfica de usuario. Ensamblador extendido con seudo-instrucciones. Simulador de una arquitectura MIPS.
HISTORIA MARS 1.0 fue lanzado en enero de 2005 y difundido durante una presentación de afiches en SIGCSE 2005.  MARS 2.0 fue lanzado en septiembre de 2005. Se incorporaron modificaciones de importancia tanto a la interfaz gráfica como al ensamblador, registros de punto flotante y las instrucciones más relevantes.  MARS 3.0 fue lanzado en agosto de 2006, su importancia radica en una gran expansión del conjunto de instrucciones MIPS-32. En enero 2010, fue lanzada la versión 3.8. Tiene como novedad dos nuevas herramientas aportadas por Ingo Kofler de la Universidad de Klagenfurt en Austria.
MARS MARS tiene algunas ventajas: Configurable. Herramientas. Por ejemplo para visualizar los accesos a memoria y un simulador de un caché de datos. No requiere instalación (privilegios de administrador). MARS tiene algunas desventajas: Al depender de la máquina virtual de Java algunos estudiantes tienen problemas de instalación en su respectivo Sistema Operativo. La aplicación está disponible sólo en inglés.
Uso de la memoria Por convención, los sistemas basados en MIPS dividen la memoria en 3 segmentos: Segmento de texto ( text segment ). Segmento de datos ( data segment ). Segmento de pila ( stack segment ).
Segmento de texto El segmento de texto, a partir de la dirección 400000 16 , es donde se guarda el código del programa. En los programas, el segmento de texto se marca por medio de la instrucción  .text .
Segmento de datos El segmento de datos ( data segment ), a partir de la dirección 10000000 16 , es donde se guardan los datos. Se indica por medio de la instrucción  .data . A su vez, el segmento de datos consta de dos partes: Datos estáticos. Contiene variables de tamaño fijo y que necesitan ser accesados durante todo el programa. Por ejemplo, variables globales. Datos dinámicos. Contiene variables que se crean durante el programa. Por ejemplo, espacio asignado con malloc en C, u objetos creados en Java.
Segmento de pila El segmento de pila ( stack segment ), a partir de la dirección  7FFFFFFC 16 ,  es donde se guardan los stack frames.
Uso de la memoria Reservado Datos estáticos Datos dinámicos Segmento de texto Segmento de datos Segmento de pila 400000 16 10000000 16 7FFFFFFC 16
Acceso a la memoria Por convención, los sistemas MIPS dedican el registro $gp como apuntador a los datos estáticos. Asignándole a $gp la dirección 10008000 16  y usando constantes de 16 bits con signo, el programa puede accesar los primeros 64KB del segmento de datos (direcciones 10000000 16  a 10010000 16 ). Por ejemplo, la instrucción: lw $v0, 0x8000($gp) Carga la palabra que comienza en 10000000 16 .
Llamadas a sistema SPIM y MARS ofrecen servicios tipo sistema operativo a través de la instrucción  syscall . Los servicios permiten leer del teclado, escribir a la consola y manejar archivos del sistema. Para pedir un servicio, el programa carga el número de servicio en $v0 y los argumentos en $a0-$a3. Los servicios que regresan un valor lo hacen en $v0.
Hola mundo en MIPS .data str: .asciiz  “ Hola mundo” .text main: li $v0, 4  # llamada al sistema para print_str la $a0, str  # dirección del string a imprimir syscall  # imprime el string li $v0, 10  # llamada al sistema para terminar syscall  # termina
Llamadas al sistema Servicio Código Argumentos Resultado print _int 1 $a0 = integer print_float 2 $f12 = float print_double 3 $f12 = float print_string 4 $a0 = string read _int 5 integer (en $v0) read_float 6 float (en $v0) read_double 7 double (en $v0) read_string 8 $a0 = buffer, $a1 =  tamaño sbrk 9 $a0 = cantidad direcci ón  (en $v0) exit 10 print_char 11 $a0 = char read_char 12 char (en $v0) open 13 $a0 = nombre del archivo (string), $a1 = banderas, $a2 = modo handle (en $a0) read 14 $a0 = handle, $a1 = buffer, $a2 = tama ño num. de caracteres leídos (en $a0) write 15 $a0 = handle, $a1 = buffer, $a2 = tama ño num. de caracteres escritos (en $a0) close 16 $a0 = handle exit2 17 $a0 = result
Lenguaje ensamblador Comentarios con gato (#) o punto y coma (;). Los identificadores pueden tener letras, números, puntos (.) y guiones bajos (_). No pueden comenzar con número. Los opcodes son palabras reservadas. Las etiquetas terminan con dos puntos (:). .data item:  .word 1 .text .globl main # Debe ser global main: lw $t0, item
Lenguaje ensamblador Los números están en base 10 por default. La base 16 se indica con 0x. Los strings se encierran con comillas dobles (“”). Caracteres especiales en strings como en C Nueva línea \n Tabulador \t Comilla  \“
Directivas del ensamblador .align n – Alinea el dato a 2 n  bytes. Con n=0 se suspende la alineación hasta el siguiente .data. .ascii str – Almacena un string en memoria, pero no lo termina en nulo. .asciiz str - Almacena un string en memoria y lo termina en nulo. .byte b 1 …b n  – Almacena los valores en bytes consecutivos de memoria.
Directivas del ensamblador .data [dir] – Define el comienzo del segmento de datos. Si el argumento opcional  dir  está presente, el segmento comienza en esa dirección. .double d 1 ,…, d n  – Almacena los valores reales de doble precisión en localidades consecutivas de memoria. .extern sym size – Declara que el dato almacenado en  sym  tiene tamaño  size  y es global. El dato está guardado en el segmento de datos. .float f 1 ,…, f n  – Almacena los valores reales de precisión sencilla en localidades consecutivas de memoria.
Directivas del ensamblador .globl sym – Declara que  sym  es global y puede ser accesado desde otros archivos. .half h 1 ,…, h n  – Almacena los datos de 16 bits en medias palabras consecutivas de memoria. .kdata [dir] – Define el comienzo del segmento de datos del kernel. Si el argumento opcional  dir  está presente, el segmento comienza en esa dirección. .ktext [dir] – Define el comienzo del segmento de código del kernel. Si el argumento opcional  dir  está presente, el segmento comienza en esa dirección.
Directivas del ensamblador .space n – Reserva  n  bytes de espacio en el segmento actual. En SPIM debe ser el segmento de datos. .text [dir] – Define el comienzo del segmento de código. Si el argumento opcional  dir  está presente, el segmento comienza en esa dirección. .word w 1 ,…, w n  – Almacena los datos de 32 bits en palabras consecutivas de memoria.

Más contenido relacionado

PPTX
bab 9 Entity Relationship Diagram reference
PPTX
Gestor de Base de Datos
DOCX
Operaciones de Números Binarios
PPT
sistem perangkat-lunak-software-untuk komputer
PPT
Theological Foundations part 5
PPTX
Presentación Bono Crucero Lincenvos
PDF
Primer simul 2013 con nota 3 ro a
PPTX
El salvador project
bab 9 Entity Relationship Diagram reference
Gestor de Base de Datos
Operaciones de Números Binarios
sistem perangkat-lunak-software-untuk komputer
Theological Foundations part 5
Presentación Bono Crucero Lincenvos
Primer simul 2013 con nota 3 ro a
El salvador project

Destacado (20)

DOCX
Rhino Steel
DOCX
Tabla comparativa unidad1 benita
PPT
File Coba
PPT
Duurzaamheidskring grafische drukkerijen
PPTX
hida ala gobernacion
PPT
Navidad Mrc
PPTX
Presentación1
PPT
Personalitat Power Point
DOCX
Expopyme copia
PPTX
Ganador noticias de prensa
PPTX
Semiconductores
DOCX
Perfiles del ingeniero de sistemas
PPTX
Rinmy_Student_Research_Presentation
PPT
ECONOMIC TIMES
PPTX
Los riesgos del internet
PDF
Dogie DaysParade Form 2015
PPTX
Powerpoint blog
PDF
Miami(3)
PPTX
งานคอม ม.3/2
Rhino Steel
Tabla comparativa unidad1 benita
File Coba
Duurzaamheidskring grafische drukkerijen
hida ala gobernacion
Navidad Mrc
Presentación1
Personalitat Power Point
Expopyme copia
Ganador noticias de prensa
Semiconductores
Perfiles del ingeniero de sistemas
Rinmy_Student_Research_Presentation
ECONOMIC TIMES
Los riesgos del internet
Dogie DaysParade Form 2015
Powerpoint blog
Miami(3)
งานคอม ม.3/2
Publicidad

Similar a Mars (20)

PPTX
Data segment
PPT
Lenguaje Ensamblador
PPT
Codificacion
PDF
estructura_de_un_programa_en_lenguaje_ensamblador
PDF
07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
PPTX
Comenzando a programar
PPTX
Assembler
PPT
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
PPS
El Microprocesador Y Su Arquitectura
PDF
Unidad I.pdf
DOCX
Registros
PDF
Microcomputadoras al detalle
PPTX
Lenguaje ensamblador
PDF
Arquirectura y programacion de un microprocesador x86
PDF
Lenguaje ensamblador basico
PPTX
Lenguaje ensamblador
DOCX
Registros ensayo
PDF
Tutorial ensamblador
PPTX
El Procesador o CPU
Data segment
Lenguaje Ensamblador
Codificacion
estructura_de_un_programa_en_lenguaje_ensamblador
07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
Comenzando a programar
Assembler
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
El Microprocesador Y Su Arquitectura
Unidad I.pdf
Registros
Microcomputadoras al detalle
Lenguaje ensamblador
Arquirectura y programacion de un microprocesador x86
Lenguaje ensamblador basico
Lenguaje ensamblador
Registros ensayo
Tutorial ensamblador
El Procesador o CPU
Publicidad

Último (20)

PDF
ciencias-1.pdf libro cuarto basico niños
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Metodologías Activas con herramientas IAG
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
ciencias-1.pdf libro cuarto basico niños
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Tarea De El Colegio Coding For Kids 1 y 2
2 GRADO UNIDAD 5 - 2025.docx para primaria
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Punto Critico - Brian Tracy Ccesa007.pdf
Metodologías Activas con herramientas IAG
Tomo 1 de biologia gratis ultra plusenmas
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Cosacos y hombres del Este en el Heer.ppt
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf

Mars

  • 1. MARS (MIPS Assembler and Rutine Simulator )
  • 2. Programación en MIPS MIPS( Microprocessor without Interlocked Pipeline Stages ) MARS es un entorno de desarrollo integrado (IDE) ligero para programar en lenguaje ensamblador MIPS, destinados a la educación. Camino típico: Ensamblador de MIPS. Traduce instrucciones de lenguaje ensamblador a lenguaje de máquina. Probar el código en un simulador de MIPS. Correr el código objeto en un sistema MIPS real.
  • 3. Programación en MIPS Sistemas para Windows: MARS. Desarrollado en Missouri State University. http://courses.missouristate.edu/KenVollmar/MARS/ El sistema ofrece: Interface gráfica de usuario. Ensamblador extendido con seudo-instrucciones. Simulador de una arquitectura MIPS.
  • 4. HISTORIA MARS 1.0 fue lanzado en enero de 2005 y difundido durante una presentación de afiches en SIGCSE 2005. MARS 2.0 fue lanzado en septiembre de 2005. Se incorporaron modificaciones de importancia tanto a la interfaz gráfica como al ensamblador, registros de punto flotante y las instrucciones más relevantes. MARS 3.0 fue lanzado en agosto de 2006, su importancia radica en una gran expansión del conjunto de instrucciones MIPS-32. En enero 2010, fue lanzada la versión 3.8. Tiene como novedad dos nuevas herramientas aportadas por Ingo Kofler de la Universidad de Klagenfurt en Austria.
  • 5. MARS MARS tiene algunas ventajas: Configurable. Herramientas. Por ejemplo para visualizar los accesos a memoria y un simulador de un caché de datos. No requiere instalación (privilegios de administrador). MARS tiene algunas desventajas: Al depender de la máquina virtual de Java algunos estudiantes tienen problemas de instalación en su respectivo Sistema Operativo. La aplicación está disponible sólo en inglés.
  • 6. Uso de la memoria Por convención, los sistemas basados en MIPS dividen la memoria en 3 segmentos: Segmento de texto ( text segment ). Segmento de datos ( data segment ). Segmento de pila ( stack segment ).
  • 7. Segmento de texto El segmento de texto, a partir de la dirección 400000 16 , es donde se guarda el código del programa. En los programas, el segmento de texto se marca por medio de la instrucción .text .
  • 8. Segmento de datos El segmento de datos ( data segment ), a partir de la dirección 10000000 16 , es donde se guardan los datos. Se indica por medio de la instrucción .data . A su vez, el segmento de datos consta de dos partes: Datos estáticos. Contiene variables de tamaño fijo y que necesitan ser accesados durante todo el programa. Por ejemplo, variables globales. Datos dinámicos. Contiene variables que se crean durante el programa. Por ejemplo, espacio asignado con malloc en C, u objetos creados en Java.
  • 9. Segmento de pila El segmento de pila ( stack segment ), a partir de la dirección 7FFFFFFC 16 , es donde se guardan los stack frames.
  • 10. Uso de la memoria Reservado Datos estáticos Datos dinámicos Segmento de texto Segmento de datos Segmento de pila 400000 16 10000000 16 7FFFFFFC 16
  • 11. Acceso a la memoria Por convención, los sistemas MIPS dedican el registro $gp como apuntador a los datos estáticos. Asignándole a $gp la dirección 10008000 16 y usando constantes de 16 bits con signo, el programa puede accesar los primeros 64KB del segmento de datos (direcciones 10000000 16 a 10010000 16 ). Por ejemplo, la instrucción: lw $v0, 0x8000($gp) Carga la palabra que comienza en 10000000 16 .
  • 12. Llamadas a sistema SPIM y MARS ofrecen servicios tipo sistema operativo a través de la instrucción syscall . Los servicios permiten leer del teclado, escribir a la consola y manejar archivos del sistema. Para pedir un servicio, el programa carga el número de servicio en $v0 y los argumentos en $a0-$a3. Los servicios que regresan un valor lo hacen en $v0.
  • 13. Hola mundo en MIPS .data str: .asciiz “ Hola mundo” .text main: li $v0, 4 # llamada al sistema para print_str la $a0, str # dirección del string a imprimir syscall # imprime el string li $v0, 10 # llamada al sistema para terminar syscall # termina
  • 14. Llamadas al sistema Servicio Código Argumentos Resultado print _int 1 $a0 = integer print_float 2 $f12 = float print_double 3 $f12 = float print_string 4 $a0 = string read _int 5 integer (en $v0) read_float 6 float (en $v0) read_double 7 double (en $v0) read_string 8 $a0 = buffer, $a1 = tamaño sbrk 9 $a0 = cantidad direcci ón (en $v0) exit 10 print_char 11 $a0 = char read_char 12 char (en $v0) open 13 $a0 = nombre del archivo (string), $a1 = banderas, $a2 = modo handle (en $a0) read 14 $a0 = handle, $a1 = buffer, $a2 = tama ño num. de caracteres leídos (en $a0) write 15 $a0 = handle, $a1 = buffer, $a2 = tama ño num. de caracteres escritos (en $a0) close 16 $a0 = handle exit2 17 $a0 = result
  • 15. Lenguaje ensamblador Comentarios con gato (#) o punto y coma (;). Los identificadores pueden tener letras, números, puntos (.) y guiones bajos (_). No pueden comenzar con número. Los opcodes son palabras reservadas. Las etiquetas terminan con dos puntos (:). .data item: .word 1 .text .globl main # Debe ser global main: lw $t0, item
  • 16. Lenguaje ensamblador Los números están en base 10 por default. La base 16 se indica con 0x. Los strings se encierran con comillas dobles (“”). Caracteres especiales en strings como en C Nueva línea \n Tabulador \t Comilla \“
  • 17. Directivas del ensamblador .align n – Alinea el dato a 2 n bytes. Con n=0 se suspende la alineación hasta el siguiente .data. .ascii str – Almacena un string en memoria, pero no lo termina en nulo. .asciiz str - Almacena un string en memoria y lo termina en nulo. .byte b 1 …b n – Almacena los valores en bytes consecutivos de memoria.
  • 18. Directivas del ensamblador .data [dir] – Define el comienzo del segmento de datos. Si el argumento opcional dir está presente, el segmento comienza en esa dirección. .double d 1 ,…, d n – Almacena los valores reales de doble precisión en localidades consecutivas de memoria. .extern sym size – Declara que el dato almacenado en sym tiene tamaño size y es global. El dato está guardado en el segmento de datos. .float f 1 ,…, f n – Almacena los valores reales de precisión sencilla en localidades consecutivas de memoria.
  • 19. Directivas del ensamblador .globl sym – Declara que sym es global y puede ser accesado desde otros archivos. .half h 1 ,…, h n – Almacena los datos de 16 bits en medias palabras consecutivas de memoria. .kdata [dir] – Define el comienzo del segmento de datos del kernel. Si el argumento opcional dir está presente, el segmento comienza en esa dirección. .ktext [dir] – Define el comienzo del segmento de código del kernel. Si el argumento opcional dir está presente, el segmento comienza en esa dirección.
  • 20. Directivas del ensamblador .space n – Reserva n bytes de espacio en el segmento actual. En SPIM debe ser el segmento de datos. .text [dir] – Define el comienzo del segmento de código. Si el argumento opcional dir está presente, el segmento comienza en esa dirección. .word w 1 ,…, w n – Almacena los datos de 32 bits en palabras consecutivas de memoria.