© 1997-2006 Prof. José Mª Foces Morán PCSpim: SPIM sobre Windows Ventana principal de PCSpim Consola: permite interactuar con el programa que está siendo.

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña 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:
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
Repaso para la construcción del intérprete 2012
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.
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Assembly y el Simulador SPIM
66.20 Organización de Computadoras
66.20 Organización de Computadoras
Circuitos Digitales II
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Teoría de lenguajes y compiladores
Arquitectura de Conjunto de Instrucciones (ISA)
Una breve introducción
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
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.
Tema 3 Entrada y Salida.
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.
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
Introducción al lenguaje ensamblador
Unidad 2: Organización del CPU
PRINCIPIOS DE PROGRAMACION ESTRUCTURADA
(CC) , José M. Foces-Morán.
Instrucciones: FORMATO DE INSTRUCCIONES
Estructura de un programa C
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Informática Ingeniería en Electrónica y Automática Industrial
Programa Vespertino de Automatización Equipos y Sistemas de Control Digital Lenguaje C Profesor: Felipe Páez Mejías D e p a r t a m e n t o d e I n g e.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
ICC243 Sistemas Operativos P03: Introducción: Conceptos Prof. Jonathan Makuc.
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.
Lenguaje de Programación cap. 1 Estructura del Computador.
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.
Tema 1: DATOS Y REGISTROS
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Elementos básicos del lenguaje
Datapath para las instrucciones de carga y almacenamiento (load/store)
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.
introducción al lenguaje
introducción al Lenguaje Ensamblador
Elementos básicos del lenguaje
La vida sería mucho más sencilla si pudiéramos echar un vistazo al código fuente. Anónimo.
Términos algoritmo diseñar algoritmo implementar algoritmo
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.
PRINCIPIOS DE PROGRAMACIÓN

introducción al Lenguaje Ensamblador
Maquinas Digitales UNIDADES DE CONTROL.
Lenguaje de programación c
EL TIPO DE DATO LOGICO y constantes.
ARQUITECTURA DE COMPUTADORES
José Alvarado – Cristian Anzola
MIPS Intermedio.
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
El microprocesador y su arquitectura
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Arquitectura de PCs Arquitectura básica del PC. Introducción El PC es el resultado de una especificación técnica de IBM El hardware se organiza de forma.
Lenguaje ensamblador Resumen en diapositivas
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

© Prof. José Mª Foces Morán PCSpim: SPIM sobre Windows Ventana principal de PCSpim Consola: permite interactuar con el programa que está siendo simulado. DATA SEGMENT: Ver el segmento de datos del programa simulado. MESSAGES: Progreso de la simulación. REGISTERS: Ver los registros arquitecturados de MIPS en tiempo real TEXT SEGMENT:Ver instrucciones en su formato binario y ensamblador

© Prof. José Mª Foces Morán SPIM: Arquitectura Arquitectura de 32 bits.  Los registros son de 32 bits de ancho  Las direcciones de memoria  Las instrucciones tienen 32 bits de ancho. Arquitectura Load/Store:  Las operaciones con la memoria están limitadas a cargas y almacenamientos.  No hay ninguna instrucción de incremento de memoria.  No hay modos indirectos.  Las instrucciones emplean tres direcciones: destino, fuente1, fuente2 add t0, t1, t2  Tiene 32 registros Uno de ellos, llamado $zero, contiene un cero, siempre.  Little-endian: extremista inferior.  Esta versión de Spim, la cual, corre sobre Windows para Intel-32, es little-endian, igual que la plataforma Intel-32.  Sobre UNIX o LINUX para SPARC, por ejemplo, es big- endian.

© Prof. José Mª Foces Morán SPIM: MIPS assembly language. Lenguaje ensamblaje de MIPS(assembly).  Ofrece un nivel de abstracción superior al de la arquitectura.  Los programas se van escribiendo instrucción-a- instrucción, igual que en el caso anterior.  Constituye una forma más "simbólica" de escribir un programa.  Una sentencia de lenguaje de ensamblaje tiene:  Etiqueta - nombres simbólicos: Permite nombrar tanto instrucciones como datos simples y arrays.  Campo de instrucción:  Nemónico de la operación (P.ej.: add ).  Operandos : Pueden ser etiquetas o números.  Bandera de indirecto.  Campo de comentarios: ;

© Prof. José Mª Foces Morán SPIM: Registros. MIPS posee 32 registros de propósito general: $0 a $32. El lenguaje de ensamblaje de MIPS (y también SPIM) les asocia un nombre simbólico representativo de los convenios que se aplican al uso de cada registro. REGISTROS de SPIM/MIPS.  El nombre indica el propósito del registro:  $v0-$v1, el valor de retorno de una función.  $a0-$a3, los argumentos 1-4  $t0-$t9, registros temporales  $s0-$s7, registros temporales con garantía de que se salvan entre llamadas a subrutinas.  $gp, puntero al area global  $sp, puntero de pila  $fp, puntero de marco de pila  $ra, dirección de retorno  $k0-$k1, reservados para el kernel del SO. INSTRUCCIONES QUE MANEJAN REGISTROS.  Copiar el contenido de rs a rd move rd, rs  Obtener la suma de rs1 y rs2 y poner el resultado en rd addu rd, rs1, rs2  Obtener la resta rs1- rs2, sin signo y poner resultado en rd: subu rd, rs1, rs2

© Prof. José Mª Foces Morán SPIM: Segmentos. Los programas que simula SPIM son programas escritos en ensamblador de MIPS y su estructura contiene al menos tres segmentos: datos, código y pila. SEGMENTOS  Dentro de un fichero ejecutable los datos y los programas están separados en tres áreas :  SEGMENTO DE CODIGO: Contiene las instrucciones del programa Es de sólo lectura El directivo empleado para delimitar el segmento de código en el texto fuente es:.text  SEGMENTO DE DATOS: Contiene datos estáticos Lectura y escritura El directivo empleado para delimitar el segmento de datos en el texto fuente es:.data  SEGMENTO DE PILA: Guarda información sobre los procedimientos/subrutinas en ejecución. Guarda la dirección de retorno de proc/subrutina. Guarda las variables locales de una proc/subrutina.

© Prof. José Mª Foces Morán SPIM: Reserva de espacio de memoria para constantes y variables.  Cadenas terminadas en ‘\0’. El directivo es.asciiz.El ejemplo siguiente crea una cadena llamada auto-terminada en ‘\0’ llamada mi_mensaje mi_mensaje.asciiz “Hola mundo!\n”  bytes, fp-simple precisión, fp-doble, words:  El directivo.byte reserva espacio para datos de 8 bits. El ejemplo siguiente crea una lista de bytes cuya dirección base es mis_datos_de_8bits inicializados con los valores 45 decimal, 50 hexadecimal, etc. mis_datos_de_8bits.byte 45, 0x50, 0x10, 0 .word reserva espacio para datos de 32 bits. El ejemplo siguiente crea una lista de bytes cuya dirección base es mis_datos_de_32bits inicilaizados con los valores siguientes separados por comas. mis_datos_de_32bits.word 0x , 0xFF00FF00El .float reserva espacio para datos de punto flotante de 32 bits(simple precisión). mis_datos_de_fp32.float 3.14E0, 1.0, -1.0 .double reserva espacio para datos de punto flotante de 64 bits (doble precisión). mis_datos_de_fp32.double E-600, 1.0, -1.0

© Prof. José Mª Foces Morán SPIM: Llamadas del sistema El simulador Spim incluye algunas llamadas del sistema compatibles con UNIX para imprimir datos en la ventana Console, leer datos desde Console, salir del programa, etc.

© Prof. José Mª Foces Morán SPIM: Un programa de ejemplo. # Universidad de Leon, Dept. IEE, 1998 # Estructura y Tecnolog¡a de Computadores # Maquinas Electronicas # Jose M. Foces Moran..data # Aqui comienza el segmento de datos prompt1:.asciiz "Entre un entero: " # Cadena del mensaje 1.align 2 # Alinear el dato siguiente en # frontera de palabra. prompt2:.asciiz "\nEntre otro entero: " # Cadena del mensaje 2.align 2 resultado:.asciiz "\nLa suma es: " # Cadena del mensaje de resultado.text # Comienzo del segmento de codigo.globl main # La etiqueta main ha de ser global (se verá # desde cualquier fichero del proyecto). main: # Creamos main, el punto de entrada a nuestro # programa desde el kernel de Spim. Esto es un # convenio que hay que respetar. li $v0, 4 # la $a0, prompt1 # Imprimir mensaje 1 en la consola syscall # li $v0, 5 # syscall # Leer el primer entero desde la consola move $s0, $v0 # Salvar el primer entero en $s0 li $v0, 4 # la $a0, prompt2 # Imprimir mensaje 2 en consola syscall # li $v0, 5 # syscall # Leer el segundo entero move $s1, $v0 # Salvar el entero en $s1 add $s2, $s0, $s1 # hacer $s0 + $s1 --> $s2 li $v0, 4 la $a0, resultado syscall # Imprimir mensaje del resultado en consola li $v0,1 # Llevar el resultado a $a0 move $a0, $s2 # Imprimir $a0 en consola syscall