La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Assembly y el Simulador SPIM 66.20 Organización de Computadoras.

Presentaciones similares


Presentación del tema: "Assembly y el Simulador SPIM 66.20 Organización de Computadoras."— Transcripción de la presentación:

1 Assembly y el Simulador SPIM Organización de Computadoras

2 Generación de un Ejecutable

3 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

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

5 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

6 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.

7 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).

8 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.

9 Ejemplos Operación aritmética (adición): 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)

10 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.

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

12 Simulador SPIM Permite ejecutar programas escritos en Assembly para arquitecturas MIPS32. Home page: Ú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.

13 Mensajes del simulador. 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. PCspim

14 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

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

16 Unidades Simuladas

17 Modos de Direccionamiento SPIM soporta los siguientes modos de direccionamiento: jr$ra ld$a0, 4 ld$a0, 4($a1) ld$a0, valor ld$a0, valor + 4 ld$a0, valor + 4($a1) EJEMPLOS 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.

18 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/)http://www.vim.org/ Emacs / Xemacs (http://www.xemacs.org/)http://www.xemacs.org/ Editplus (http://www.editplus.com/)http://www.editplus.com/ UltraEdit (http://www.ultraedit.com/)http://www.ultraedit.com/ MIPSter (http://www.downcastsystems.com/mipster/)http://www.downcastsystems.com/mipster/

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

20 La herramienta EditPlus (cont.)

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

22 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.

23 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.

24 El Simulador SPIM Organización de Computadoras


Descargar ppt "Assembly y el Simulador SPIM 66.20 Organización de Computadoras."

Presentaciones similares


Anuncios Google