Programación en MIPS.

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

PROGRAMACIÓN EN C.
ING SEC 3 - UCSC Agosto 2009 Laboratorio Lenguaje de Programación ING – Universidad Católica SSMA Concepción Semestre II Tema:
Arquitectura de Computadores I
Práctica Nº1. AOC Michael Soza Contenido Lenguaje Máquina y Assembly. Instalación y manejo del entorno SPIM Operaciones básicas Registros.
Temas Operaciones básicas Instalando el compilador
Assembly y el Simulador SPIM
66.20 Organización de Computadoras
66.20 Organización de Computadoras
Funcionamiento, programación
Introducción al Lenguaje C (ANSI)
Arquitectura de Conjunto de Instrucciones (ISA)
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Composición Interna de un Procesador
POO Java Módulo 3 Elementos de programas Identificadores
Tipos de Datos Básicos 1.
ISA (Instruction Set Architecture)
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Lenguaje C.
Práctica 7 AOC. Gestión de la pila Una pila es una estructura de datos caracterizada por que el último dato que se almacena es el primero que se obtiene.
LENGUAJE “C” Programación.
MIPS Intermedio.
Datapath para las instrucciones de brinco
© Prof. José Mª Foces Morán PCSpim: SPIM sobre Windows Ventana principal de PCSpim Consola: permite interactuar con el programa que está siendo.
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
(CC) , José M. Foces-Morán.
Informática Ingeniería en Electrónica y Automática Industrial
Traduciendo y ejecutando programas. Universidad de SonoraArquitectura de Computadoras2 El camino de un programa en C.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
Asignación de Espacio No Contiguo
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Laboratorio de Organización del Computador. Cómo nos podemos comunicar con un computador Add A, B CA0 Ensamblador Hexadecimal Binario.
PBN © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS.
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
INTEGRANTES LINA JIMÉNEZ LOZANO ROSA ELENA REINA CARLOS VILLADIEGO MARIANO SEPULVEDA.
Elementos básicos del lenguaje
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Unidad II Introducción a la programación en C++

APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
Datapath para las instrucciones de carga y almacenamiento (load/store)
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
introducción al lenguaje
Elementos básicos del lenguaje
Memoria virtual.

Programación Procedural y Recursiva en C++
La vida sería mucho más sencilla si pudiéramos echar un vistazo al código fuente. Anónimo.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Lenguaje de programación c
Arquitectura de Computadores I
EL TIPO DE DATO LOGICO y constantes.
MEMORIA DINÁMICA.
MIPS Intermedio.
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
LÓGICA DE PROGRAMACIÓN UNIDAD III. INTRODUCCIÓN AL LENGUAJE C.
Lenguaje ensamblador Resumen en diapositivas
GENERALIDADES DEL NIVEL ISA DE LA MAQUINA VIRTUAL JAVA (JVM) Generalidades del nivel ISA.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Transcripción de la presentación:

Programación en MIPS

Programación en MIPS 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. Universidad de Sonora Arquitectura de Computadoras

Programación en MIPS Dos sistemas para Windows: MARS. Desarrollado en Missouri State University. http://courses.missouristate.edu/KenVollmar/MARS/ SPIM. Desarrollado en la Universidad de Wisconsin. http://www.cs.wisc.edu/~larus/spim.html Ambos sistemas ofrecen: Interface gráfica de usuario. Ensamblador extendido con seudo-instrucciones. Simulador de una arquitectura MIPS. Universidad de Sonora Arquitectura de Computadoras

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). Universidad de Sonora Arquitectura de Computadoras

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). Universidad de Sonora Arquitectura de Computadoras

Segmento de texto El segmento de texto, a partir de la dirección 40000016, 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. Universidad de Sonora Arquitectura de Computadoras

Segmento de datos El segmento de datos (data segment), a partir de la dirección 1000000016, 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. Universidad de Sonora Arquitectura de Computadoras

Segmento de pila El segmento de pila (stack segment), a partir de la dirección 7FFFFFFC16, es donde se guardan los stack frames. Universidad de Sonora Arquitectura de Computadoras

Uso de la memoria 7FFFFFFC16 Segmento de pila Datos dinámicos Reservado Datos estáticos Datos dinámicos Segmento de texto Segmento de datos Segmento de pila 40000016 1000000016 7FFFFFFC16 Universidad de Sonora Arquitectura de Computadoras

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 1000800016 y usando constantes de 16 bits con signo, el programa puede accesar los primeros 64KB del segmento de datos (direcciones 1000000016 a 1001000016). Por ejemplo, la instrucción: lw $v0, 0x8000($gp) Carga la palabra que comienza en 1000000016. Universidad de Sonora Arquitectura de Computadoras

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. Universidad de Sonora Arquitectura de Computadoras

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 Universidad de Sonora Arquitectura de Computadoras

Llamadas al sistema Universidad de Sonora Arquitectura de Computadoras Servicio Código Argumentos Resultado print_int 1 $a0 = integer print_float 2 $f12 = float print_double 3 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 num. de caracteres escritos (en $a0) close 16 $a0 = handle exit2 17 $a0 = result Universidad de Sonora Arquitectura de Computadoras

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 Universidad de Sonora Arquitectura de Computadoras

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 \“ Universidad de Sonora Arquitectura de Computadoras

Directivas del ensamblador .align n – Alinea el dato a 2n 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 b1…bn – Almacena los valores en bytes consecutivos de memoria. Universidad de Sonora Arquitectura de Computadoras

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 d1,…, dn – 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 f1,…, fn – Almacena los valores reales de precisión sencilla en localidades consecutivas de memoria. Universidad de Sonora Arquitectura de Computadoras

Directivas del ensamblador .globl sym – Declara que sym es global y puede ser accesado desde otros archivos. .half h1,…, hn – 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. Universidad de Sonora Arquitectura de Computadoras

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 w1,…, wn – Almacena los datos de 32 bits en palabras consecutivas de memoria. Universidad de Sonora Arquitectura de Computadoras