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 66.20 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. 001000 01010 010011111 1111 1111 1110 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. 001000 01010 010011111 1111 1111 1110 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: http://www.cs.wisc.edu/~larus/spim.html 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.

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 http://www.editplus.com/.http://www.editplus.com/ 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 66.20 Organización de Computadoras


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

Presentaciones similares


Anuncios Google