66.20 Organización de Computadoras Lenguaje Assembler 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
Linker (vinculador) Enlaza los archivos objeto que pertenecen a un programa, y genera un programa ejecutable. Resuelve referencias a bibliotecas externas. 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. Debe respetarse una convención para su uso: $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. Para almacenar registros de largo plazo. Para almacenar las variables locales al procedimiento.
Llamada a Procedimientos (cont.)