Assembly y el Simulador SPIM

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

El modelo de Von Neumann
CSS Rogelio Ferreira Escutia. 2 Hojas de estilo cascada, mayo 2010 Definición La hojas de estilo en cascada (en inglés.
TEMA 1 Introducción a la Programación Concurrente
ING SEC 3 - UCSC Agosto 2009 Laboratorio Lenguaje de Programación ING – Universidad Católica SSMA Concepción Semestre II Tema:
CLASE 4 EL ENSAMBLADOR.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Arquitectura de Computadores I
Arquitectura de Computadores I
ARQUITECTURA DE COMPUTADORES - VON NEUMANN MODEL
M.C. Rafael A. García Rosas.
INTRODUCCIÓN A JAVA.
Práctica Nº1. AOC Michael Soza Contenido Lenguaje Máquina y Assembly. Instalación y manejo del entorno SPIM Operaciones básicas Registros.
INSTTUTO TECNOLOGICO DE APIZACO
Circuitos Digitales II Alineamiento en Memoria y Ejecución de un programa Semana No.8 Semestre Prof. Gustavo Patiño Prof. Eugenio.
Profesor: Ing. Matías Vallerga Ayudante: Lic. Cristian Kenny El Entorno C.
Historia La base del C proviene del BCPL (lógica programable en codigo binario), escrito por Martin Richards, y del B escrito por Ken Thompson en 1970.
SEMANA 9_2.
66.20 Organización de Computadoras
66.20 Organización de Computadoras
CLASE 12.
Circuitos Digitales II
Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre Prof. Gustavo Patiño
Por José Miguel López, Daniel Ballesteros y Darío Mehrgut
Circuitos Digitales II
Arquitectura de Conjunto de Instrucciones (ISA)
Composición Interna de un Procesador
Free Pascal 1. Introducción 2. Instalación 3. Uso 4. Documentación 5. Información Adicional.
Programación I Teoría VI: Recursividad
CLASE 11.
Asignatura: Computadores
Introducción al NASM The Netwide Assembler MIA J. Rafael Rojano C.
Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División.
ISA (Instruction Set Architecture)
Introducción a la programación en C
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.
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
Programación III Clase 07 Funciones.
© Prof. José Mª Foces Morán PCSpim: SPIM sobre Windows Ventana principal de PCSpim Consola: permite interactuar con el programa que está siendo.
(CC) , José M. Foces-Morán.
Estructura de un programa C
Estructura de un programa en C
Administración de Memoria Memoria Virtual
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.),
Asignación de Espacio No Contiguo
Laboratorio de Organización del Computador. Cómo nos podemos comunicar con un computador Add A, B CA0 Ensamblador Hexadecimal Binario.
Programación en MIPS.
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.
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
M.C. Juan Carlos Olivares Rojas
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
introducción al lenguaje
introducción al Lenguaje Ensamblador

Metodología de la programación
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
introducción al Lenguaje Ensamblador
CONJUNTO DE INSTRUCCIONES Maquinas Digitales
Aprende el arte de la ingeniería inversa
MIPS Intermedio.
Fundamentos de Programación Unidad I Conceptos Básicos.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Lenguaje ensamblador Resumen en diapositivas
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

Assembly y el Simulador SPIM 66.20 Organización de Computadoras

Generación de un Ejecutable

Assembly Es un lenguaje de programación de bajo nivel. Es una representación simbólica del código binario de las intrucciones. Utiliza mnemónicos para representar cada instrucción. OPCODE OPERANDOS addi $t1, $t2, 0xfffe 001000 01010 01001 1111 1111 1111 1110

Assembler (ensamblador) Programa encargado de traducir código Assembly en su equivalente binario. Como salida genera un archivo objeto. addi $t1, $t2, 0xfffe PROCESO DE ENSAMBLADO 001000 01010 01001 1111 1111 1111 1110

Assembler (cont.) Label: nombre simbólico para un objeto. Puede aplicarse a una instrucción, a un procedimiento (dir. de 1ra instrucción), a un string, etc. Externo: se puede acceder desde fuera del módulo donde se define (.globl main); Local: solo puede accederse desde el módulo que lo define. Todas las referencias externas deben quedar resueltas para que un programa pueda ejecutarse

Linker (vinculador) Enlaza los archivos objeto que pertenecen a un programa, y genera un programa ejecutable. Resuelve referencias a bibliotecas externas (ojo: printf es realmente una funcion de librería no un syscall). Asigna las posiciones finales de memoria.

Modelo de Memoria La arquitectura MIPS divide la memoria en tres secciones: Segmento de texto. Segmento de datos (estáticos y dinámicos). Pila (stack).

Registros La arquitectura MIPS presenta 32 registros de propósito general, y 32 registros para punto flotante. Debería respetarse una convención para su uso (en general es muy mala idea no hacerlo): $a0-$a3  primeros 4 argumentos a un procedimiento. $v0 y $v1  valor de retorno de un procedimiento. $t0-$t9  almacenamiento temporal. $s0-$s7  almacenamiento de largo plazo. $sp  puntero a la pila. $fp  puntero al stack frame. $ra  dirección de retorno en la llamada a un procedimiento.

Ejemplos Operación aritmética (adición): Pasaje de un parámetro: addu $t0, $t6, 1 ($t0  $t6 + 1) Pasaje de un parámetro: li $a0, 10 ($a0  10) Retorno de un valor: li $v0, 1 ($v0  1)

Llamada a Procedimientos Debe respetarse la convención para el uso de registros. Debe tomarse una porción de la pila (stack frame): Para almacenar los argumentos pasados (1 al 4: registros, 5+: stack frame del caller). Para almacenar registros de largo plazo. Para almacenar las variables locales al procedimiento.

Llamada a Procedimientos (cont.) Ojo: printf no es syscall, aqui se quiso usar print_str del SPIM

Simulador SPIM Permite ejecutar programas escritos en Assembly para arquitecturas MIPS32. Home page: http://www.cs.wisc.edu/~larus/spim.html Última versión: 7.2 Disponible en varios “sabores”: Spim: simulador manejado por línea de comandos. XSpim: para ambientes X-windows (UNIX/Linux) PCspim: para ambientes Microsoft Win32.

PCspim Registros de la CPU y de la unidad de punto flotante. Instrucciones assembly del programa y del sistema. Datos cargados en el espacio de memoria del programa. Mensajes del simulador.

Características No implementa memorias caché. No simula latencias (de memoria o de operaciones aritméticas). Maneja pseudoinstrucciones (instrucciones que provee el ensamblador, y que se implementan a partir de otras más simples). Soporta formatos big y little-endian. BIG-ENDIAN LITTLE-ENDIAN

Llamadas al Sistema SPIM soporta algunos system calls básicos:

Unidades Simuladas

Modos de Direccionamiento SPIM soporta los siguientes modos de direccionamiento: En realidad aquí vemos 3 modos de direccionamiento: register indirect, immediate y displacement. El resto son una “ilusión del assembler”. MIPS implementa solo immediate y displacement con campos de 16 bits. Register indirect se obtiene con displacement=0 y absolute address usando como registro a $zero. EJEMPLOS jr $ra ld $a0, 4 ld $a0, 4($a1) ld $a0, valor ld $a0, valor + 4 ld $a0, valor + 4($a1)

Edición del Código SPIM no provee facilidades para escritura de código assembly. Debe utilizarse un editor de textos: Vi / Vim (http://www.vim.org/) Emacs / Xemacs (http://www.xemacs.org/) Editplus (http://www.editplus.com/) UltraEdit (http://www.ultraedit.com/) MIPSter (http://www.downcastsystems.com/mipster/)

La herramienta EditPlus Puede obtenerse de http://www.editplus.com/. Debe descargarse un archivo de sintaxis para assembly de MIPS32 (http://www.editplus.com/others.html).

La herramienta EditPlus (cont.)

Ejemplo 1: Hola Mundo MIPS! Escribir un programa en assembly de MIPS32 que muestre en consola la leyenda "Hola Mundo!" y termine.

Ejemplo 2: Loops y Arreglos de Valores Escribir un programa en assembly de MIPS32 que encuentre el máximo de la siguiente serie de números: {4, 15, 0, 48, 22, 7} Deberá mostrar en consola el máximo hallado.

Ejemplo 3: Funciones y Punto Flotante Escribir un programa en assembly de MIPS32 que cargue 2 número reales ingresados por consola, los sume, y muestre el resultado (también por consola). La suma de los números debe realizarse llamando a una función.

66.20 Organización de Computadoras El Simulador SPIM 66.20 Organización de Computadoras