Podcast
Questions and Answers
¿Cuál es la función de la seudo-instrucción 'li'?
¿Cuál es la función de la seudo-instrucción 'li'?
¿Qué instrucción de lenguaje ensamblador se utiliza para copiar el contenido de un registro a otro?
¿Qué instrucción de lenguaje ensamblador se utiliza para copiar el contenido de un registro a otro?
¿Qué representa '000000' en el formato de instrucción del lenguaje máquina?
¿Qué representa '000000' en el formato de instrucción del lenguaje máquina?
¿Cuál de los siguientes NO es un formato de instrucción en MIPS?
¿Cuál de los siguientes NO es un formato de instrucción en MIPS?
Signup and view all the answers
¿Qué componente del código máquina 'add $t0, $s1, $s2' corresponde al número del registro $t0?
¿Qué componente del código máquina 'add $t0, $s1, $s2' corresponde al número del registro $t0?
Signup and view all the answers
En el formato I, ¿qué tipo de operando se incluye?
En el formato I, ¿qué tipo de operando se incluye?
Signup and view all the answers
¿Qué se entiende por lenguaje de máquina?
¿Qué se entiende por lenguaje de máquina?
Signup and view all the answers
¿Qué instrucción se traduce como '000000fffffgggggddddd00000100000'?
¿Qué instrucción se traduce como '000000fffffgggggddddd00000100000'?
Signup and view all the answers
¿Cuál es la instrucción que mueve el valor de LO a un registro?
¿Cuál es la instrucción que mueve el valor de LO a un registro?
Signup and view all the answers
¿Qué instrucción se utiliza para cargar una palabra de la memoria a un registro?
¿Qué instrucción se utiliza para cargar una palabra de la memoria a un registro?
Signup and view all the answers
¿Cómo se indica el segmento de datos en un programa MIPS?
¿Cómo se indica el segmento de datos en un programa MIPS?
Signup and view all the answers
¿Qué tipo de datos se almacenan en el segmento de datos dinámicos?
¿Qué tipo de datos se almacenan en el segmento de datos dinámicos?
Signup and view all the answers
¿Cuál es el propósito de la instrucción sw?
¿Cuál es el propósito de la instrucción sw?
Signup and view all the answers
El segmento de texto comienza a partir de qué dirección en un sistema MIPS?
El segmento de texto comienza a partir de qué dirección en un sistema MIPS?
Signup and view all the answers
¿Dónde se almacenan los stack frames en un sistema MIPS?
¿Dónde se almacenan los stack frames en un sistema MIPS?
Signup and view all the answers
¿Cuál es el tamaño de una palabra (word) en MIPS?
¿Cuál es el tamaño de una palabra (word) en MIPS?
Signup and view all the answers
¿Cómo se declara un string en el código MIPS?
¿Cómo se declara un string en el código MIPS?
Signup and view all the answers
¿Cuál es la función principal de la instrucción syscall en MIPS?
¿Cuál es la función principal de la instrucción syscall en MIPS?
Signup and view all the answers
En el ejemplo dado, ¿qué valor se le asigna a la variable z?
En el ejemplo dado, ¿qué valor se le asigna a la variable z?
Signup and view all the answers
¿Qué instrucción se utiliza para imprimir un string en la consola en MIPS?
¿Qué instrucción se utiliza para imprimir un string en la consola en MIPS?
Signup and view all the answers
¿Cuál es la función de los registros $x0 y $v0 en un syscall?
¿Cuál es la función de los registros $x0 y $v0 en un syscall?
Signup and view all the answers
¿Cuál es el primer paso para hacer una llamada al sistema en MIPS?
¿Cuál es el primer paso para hacer una llamada al sistema en MIPS?
Signup and view all the answers
¿Qué tipo de instrucciones son las pseudo-instrucciones en MIPS?
¿Qué tipo de instrucciones son las pseudo-instrucciones en MIPS?
Signup and view all the answers
¿Qué instrucción se utiliza para finalizar un programa en MIPS?
¿Qué instrucción se utiliza para finalizar un programa en MIPS?
Signup and view all the answers
¿Cuál es el resultado de aplicar la operación sll $t2, $s0, 4?
¿Cuál es el resultado de aplicar la operación sll $t2, $s0, 4?
Signup and view all the answers
¿Cuál es la función principal de la operación nor en lógica?
¿Cuál es la función principal de la operación nor en lógica?
Signup and view all the answers
¿Qué operación lógica se utiliza para extraer información de un número binario usando una máscara?
¿Qué operación lógica se utiliza para extraer información de un número binario usando una máscara?
Signup and view all the answers
Al realizar un corrimiento a la derecha con srlv $r0, $r1, $r2, ¿qué resultado se obtiene?
Al realizar un corrimiento a la derecha con srlv $r0, $r1, $r2, ¿qué resultado se obtiene?
Signup and view all the answers
¿Qué hace la operación andi $r0, $r1, C?
¿Qué hace la operación andi $r0, $r1, C?
Signup and view all the answers
¿Cómo se utiliza el corrimiento a la izquierda para multiplicar un número?
¿Cómo se utiliza el corrimiento a la izquierda para multiplicar un número?
Signup and view all the answers
¿Cuál es la principal característica de los registros en MIPS?
¿Cuál es la principal característica de los registros en MIPS?
Signup and view all the answers
¿Cuál es el resultado de aplicar la máscara 00111100 a la cadena binaria 11100101 con un AND?
¿Cuál es el resultado de aplicar la máscara 00111100 a la cadena binaria 11100101 con un AND?
Signup and view all the answers
¿Qué instrucciones se consideran aritméticas en MIPS?
¿Qué instrucciones se consideran aritméticas en MIPS?
Signup and view all the answers
¿Para qué se utiliza el resultado de un corrimiento a la derecha en operaciones lógicas?
¿Para qué se utiliza el resultado de un corrimiento a la derecha en operaciones lógicas?
Signup and view all the answers
¿Cuál de las siguientes afirmaciones sobre la memoria en MIPS es incorrecta?
¿Cuál de las siguientes afirmaciones sobre la memoria en MIPS es incorrecta?
Signup and view all the answers
¿Cuántos registros enteros hay en la arquitectura MIPS?
¿Cuántos registros enteros hay en la arquitectura MIPS?
Signup and view all the answers
¿Qué tipo de operaciones realizan las instrucciones de transferencia de datos en MIPS?
¿Qué tipo de operaciones realizan las instrucciones de transferencia de datos en MIPS?
Signup and view all the answers
¿Cuál de las siguientes afirmaciones sobre la configuración de MIPS es correcta?
¿Cuál de las siguientes afirmaciones sobre la configuración de MIPS es correcta?
Signup and view all the answers
¿Qué tipo de instrucciones se ocupan para realizar operaciones lógicas en MIPS?
¿Qué tipo de instrucciones se ocupan para realizar operaciones lógicas en MIPS?
Signup and view all the answers
¿Qué es un registro en el contexto de MIPS?
¿Qué es un registro en el contexto de MIPS?
Signup and view all the answers
¿Qué instrucción carga el valor de la variable g en el registro $s1?
¿Qué instrucción carga el valor de la variable g en el registro $s1?
Signup and view all the answers
¿Cómo se declara una variable entera en MIPS?
¿Cómo se declara una variable entera en MIPS?
Signup and view all the answers
¿Cuál de las siguientes instrucciones actualiza la variable f en memoria?
¿Cuál de las siguientes instrucciones actualiza la variable f en memoria?
Signup and view all the answers
¿Qué tipo de datos se manejan en este curso según el contenido?
¿Qué tipo de datos se manejan en este curso según el contenido?
Signup and view all the answers
¿Qué instrucción se utiliza para obtener la dirección de la variable x?
¿Qué instrucción se utiliza para obtener la dirección de la variable x?
Signup and view all the answers
¿Cuál de las siguientes afirmaciones es correcta sobre las instrucciones MIPS?
¿Cuál de las siguientes afirmaciones es correcta sobre las instrucciones MIPS?
Signup and view all the answers
¿Qué representación tiene la declaración 'x:.word 17'?
¿Qué representación tiene la declaración 'x:.word 17'?
Signup and view all the answers
¿Cuál es el resultado de la instrucción 'add $t0, $s1, $s2'?
¿Cuál es el resultado de la instrucción 'add $t0, $s1, $s2'?
Signup and view all the answers
Study Notes
Lenguaje Ensamblador MIPS
- MIPS (Microprocesador sin etapas de tubería entrelazadas) es una familia de microprocesadores RISC desarrollada por MIPS Technologies desde 1981 y por Imagination Technologies desde 2012.
Características de MIPS
- Principio de regularidad: Todas las instrucciones ocupan 4 bytes (32 bits).
- Principio de simplicidad: Instrucciones sencillas. Solo hay 3 formatos de instrucción.
Usos de MIPS
- En consolas de videojuegos (Nintendo y Sony).
- En sistemas embebidos (routers Cisco, dispositivos Windows CE, gateways, entre otros).
Clases de Instrucciones
- Aritméticas: Suma, resta, multiplicación, división.
- Transferencia de datos: Carga (load) de memoria a registro, almacena (store) de registro a memoria.
- Lógicas: AND, OR, desplazamiento (shift).
- Brincos condicionales.
- Brincos incondicionales.
- Hay instrucciones para números reales y enteros.
Operandos
- Registros.
- Memoria.
Registros
- Un registro es una memoria integrada en la CPU.
- Poseen poca capacidad (4 bytes o 32 bits en MIPS), pero de acceso rápido.
- Hay 32 registros enteros ($s0-$s7, $t0-$t9, $a0-$a3, $v0-$v1, $zero, $gp, $fp, $sp, $ra, $at).
- Hay 32 registros flotantes ($f0-$f31).
- Se utilizan para guardar valores temporales y resultados de operaciones aritméticas.
Memoria
- Se usa para guardar variables.
- MIPS usa byte addressing.
- La memoria es un arreglo de bytes.
- La dirección de una palabra es la dirección del byte más alto.
- Las palabras son de 4 bytes (32 bits).
- Los registros son de 4 bytes (32 bits).
- La memoria está alineada. Las palabras deben comenzar en direcciones que son múltiplo de 4.
- MIPS se puede configurar por hardware como big-endian o little-endian.
- Se usan 32 bits para direccionar la memoria.
- La memoria tiene:
- 2³² bytes con direcciones desde 0 hasta 2³² – 1.
- 2³⁰ palabras con direcciones desde 0 hasta 2³² – 4.
Registros vs Memoria
- La mayoría de las CPUs modernas mueven las variables de la memoria principal a los registros, operan sobre ellos y regresan el resultado a la memoria.
- Esto se conoce como arquitectura load/store.
- MIPS emplea la arquitectura load/store.
Instrucciones Aritméticas
- add: suma de registros.
- addu: suma de registros sin signo.
- addi: suma inmediata.
- addiu: suma inmediata sin signo.
- sub, subu: restas.
- div, divu: divisiones.
- mult, multu: multiplicaciones.
Instrucciones MIPS Aritméticas
- La suma y la resta tienen 3 operandos.
- El orden de los operandos es fija (primero el destino, luego las fuentes).
Instrucciones Aritméticas (Ejemplos)
- add $r0, $r1, $r2 # $r0 ← $r1 + $r2
- addi $r0, $r1, C # $r0 ← $r1 + C
- addu $r0, $r1, $r2# $r0 ← $r1 + $r2
- addiu $r0, $r1, $r2# $r0 ← $r1 + C
Instrucciones Aritméticas (Overflow)
- Si al sumar se produce overflow, add y addi lo indican.
- addu y addiu lo ignoran.
Instrucciones Aritméticas (otras)
- Las restas sub, subu funcionan de la misma manera.
- Las divisiones y multiplicaciones tienen dos argumentos.
- Dejan el resultado en dos registros especiales: LO y HI.
- Hay instrucciones para copiar datos de LO y HI a los registros normales.
Instrucciones Aritméticas (mult, div)
- mult $r0, $r1 # $r0 × $r1
- div $r0, $r1 # $r0 / $r1
Transferencia de datos
- mflo: mueve el valor de LO a un registro.
- mfhi: mueve el valor de HI a un registro.
- lw: mueve (carga) una palabra (4 bytes) de memoria a un registro.
- sw: mueve (almacena) el valor de un registro (4 bytes) a memoria.
Usos de la memoria
- Por convención, los sistemas basados en MIPS dividen la memoria en tres segmentos:
- Segmento de texto (text segment)
- Segmento de datos (data segment)
- Segmento de pila (stack segment)
- El segmento de texto, a partir de la dirección 0x400000, es donde se guarda el código del programa.
- A su vez, el segmento de datos consta de dos partes:
- Datos estáticos: Contiene variables de tamaño fijo que se necesitan durante todo el programa.
- Datos dinámicos: Contiene variables que se crean durante el programa.
- El segmento de pila (stack segment), a partir de la dirección 0x7FFFFFFC, es donde se guardan los stack frames.
Seudo-instrucciones
- Son instrucciones que un programa ensamblador reconoce pero que no existen en la definición del ISA.
- El ensamblador mapea cada seudo-instrucción a dos o más instrucciones reales.
- Se usan para comodidad de los programadores. Algunos ejemplos: li, move.
Lenguaje Máquina
- El lenguaje de máquina es un lenguaje binario.
- El hardware solo entiende bits.
- El ensamblador traduce cada instrucción de lenguaje ensamblador a lenguaje de máquina.
- Por ejemplo, la instrucción add $t0, $s1, $s2 se traduce en binario a 000000100011001001001000001000002 → 0232482016.
Formatos de Instrucciones
- En MIPS, hay tres formatos de instrucción: R, I y J.
Operaciones Lógicas
- Shift (desplazamiento) a la izquierda (sll, sllv), a la derecha (srl, srlv).
- AND, ANDI, OR, ORI, XOR, XORI, NOR, NORI.
Instrucciones de Control
- Brincos condicionales (beq, bne, slt - comparar para brincar).
- Brincos incondicionales (j, jr, jal).
Ciclo While
- Traducción mecánica de ciclos while, do-while y for a MIPS.
Arreglos de Enteros
- Se declaran en el segmento de datos usando la directiva .word.
- Para acceder a los elementos del arreglo, se utiliza un índice y el offset correspondiente.
Llamadas a Funciones
- En MIPS, los argumentos se pasan en registros como $a0, $a1, $a2, $a3.
- Los valores de regreso se devuelven en los registros $v0, $v1.
Stack Frame
- El llamador tiene la obligación de guardar ciertos registros
- El stack frame involucra la gestión de memoria para argumentos y la preservacion de registros.
- El stack frame se guarda en la sección de la pila. Salvar los registros, reservar espacio para el nuevo frame y ajustar el stack pointer.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Pon a prueba tus conocimientos sobre el lenguaje ensamblador MIPS con este cuestionario. Aquí encontrarás preguntas sobre instrucciones, formatos y componentes del código máquina. Ideal para estudiantes de informática y electrónica.