Programación en MIPS



Documentos relacionados
Documentación del simulador SPIM.

Estructura de Computadores

Guía Laboratorio Número 1

Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32.

Ilustrar el mecanismo de llamadas al sistema para solicitar servicios al sistema operativo.

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

Academia técnica de computación A.T.C.

1 ELEMENTOS BASICOS DEL LENGUAJE

Requerimientos principales de un sistema operativo

Práctica 5: Programación Estructurada

Introducción al lenguaje de programación java

Sistemas de ficheros en Servidores de Información multimedia

MÓDULO 1: Sistemas de Cómputo

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Clase 4: Un poco más de Python

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio

Preliminares. Tipos de variables y Expresiones

Organización Básica de un Computador y Lenguaje de Máquina

MANUAL DE USUARIO DE SKYDRIVE

Fundamentos de Programción (I)

TALLER DE CONOCIMIENTOS APRENDICES JORGE LEONARDO MAZA CARLOS DAVID ZAMBRANO JOSE G. RODRIGUEZ PROFESOR RONALD MARTELO

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Programación: QBASIC

Unidad 1: Conceptos generales de Sistemas Operativos.

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

Introducción al tipo de dato ARRAY

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

Computación III. Objetivo de aprendizaje del tema

Fundamentos de la Programación

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Lenguaje de Programación: Go

Capitulo V Administración de memoria

Entrada y salida de datos en C y C++

Soporte lógico de computadoras

Modulo 1 El lenguaje Java

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS

Examen de Arquitectura de Computadores

Tipos primitivos y clases de interés

Dirección IP - Características

PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES

Java. Mtro. Manuel Suárez Gutiérrez

FACULTAD DE INGENIERÍA

Tema 2. Software. Informática (1º Ingeniería Civil)

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE DE MEDELLÍN. FACULTAD NACIONAL DE MINAS Escuela de Sistemas

PART II: Moviendo al jugador

Objetivo de aprendizaje del tema

Entorno de Ejecución del Procesador Intel Pentium

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Variables y tipos de datos

Tema 16. Impresoras. Administración de Sistemas Operativos. Mª Pilar González Férez

Un kilobyte (KB) son 1024 bytes, un Megabyte (MB) son 1024 KB, un Gigabyte son 1024 Mb

Instructivo de Microsoft Excel 2003

2. Estructura de un programa en Java

Prof. Dr. Paul Bustamante

Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015.

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Prof. Dr. Paul Bustamante

Tema 1 Fundamentos de Computación

Práctica 2: Simón dice

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

Práctica: Creación de un programa C# sencillo

Manual del Profesor Campus Virtual UNIVO

Organización de Computadoras

MACROS Y FORMULARIOS

PARKING ZONE v1.8 MANUAL DEL USUARIO

USO DEL COMANDO. Fdisk. Autor :. Alejandro Curquejo. Recopilación :. Agustí Guiu i Ribera. Versión :.. 1.0

Capítulo 3 Usando GUIDE. 3.1 Acerca de GUIDE

LENGUAJE. Tema 1 - Introducción

Apéndice A. Manual de usuario. Guía rápida

Ejemplo de lectura por teclado de un número entero: int n; System.out.print("Introduzca un número entero: "); n = sc.nextint();

Práctica 0. Emulador XENON de la computadora CESIUS

Sistemas de Computación I/O. 2º Semestre, 2008 José Miguel Rubio L.

Servicio de resolución de nombres (DNS)

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

TUTORIAL DE INSTALACIÓN PARA VIRTUALBOX

Tema 2: La clase string

1. Manejo de memoria estática 2. Manejo de memoria dinámica

El lenguaje de Programación C. Fernando J. Pereda

APLICAR MANTENIMIENTO PREVENTIVO AL SOFTWARE

Capítulo 4 Gestión de memoria

CAPÍTULO 2 INTERFASE VISUAL BASIC 6.0

Informática I para Bachillerato

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide:

SISTEMA CABILDO MANUAL DE INSTALACIÓN CLIENTE ERP CABILDO LA SOLUCIÓN TECNOLÓGICA MÁS COMPLETA E INTEGRAL PARA GOBIERNOS LOCALES

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Índice de contenido 1.Introducción Propósito Vista preliminar Requisitos técnicos de instalación Software Red...

PROCEDIMIENTO DE ENLACE TCPIP

Introducción a la Programación en Java. Page 1

Introducción al NASM. Convenciones de colores

FACULTAD DE INGENIERÍA, U.B.A. Seminario de Sistemas Embebidos TRABAJO PRÁCTICO 0

Fundamentos de Computación para Científicos

Transcripción:

Programación en MIPS

Programación en MIPS Camino típico: 1. Ensamblador de MIPS. Traduce instrucciones de lenguaje ensamblador a lenguaje de máquina. 2. Probar el código en un simulador de MIPS. 3. Correr el código objeto en un sistema MIPS real. Universidad de Sonora Arquitectura de Computadoras 2

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 3

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 4

Uso de la memoria Por convención, los sistemas basados en MIPS dividen la memoria en 3 segmentos: 1. Segmento de texto (text segment). 2. Segmento de datos (data segment). 3. Segmento de pila (stack segment). Universidad de Sonora Arquitectura de Computadoras 5

Segmento de texto 1. 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. Universidad de Sonora Arquitectura de Computadoras 6

Segmento de datos 2. 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: a) Datos estáticos. Contiene variables de tamaño fijo y que necesitan ser accesados durante todo el programa. Por ejemplo, variables globales. b) 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 7

Segmento de pila 3. El segmento de pila (stacksegment), a partir de la dirección 7FFFFFFC 16, es donde se guardan los stack frames. Universidad de Sonora Arquitectura de Computadoras 8

Uso de la memoria 7FFFFFFC 16 Segmento de pila 10000000 16 400000 16 Datos dinámicos Datos estáticos Reservado Segmento de datos Segmento de texto Universidad de Sonora Arquitectura de Computadoras 9

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

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 11

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 12

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

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 main: lw $t0, item # Debe ser global Universidad de Sonora Arquitectura de Computadoras 14

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 15

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

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

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

Directivas del ensamblador.space n Reserva nbytes 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. Universidad de Sonora Arquitectura de Computadoras 19