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'?
- Carga inmediata una constante en un registro (correct)
- Suma dos registros
- Copia un registro a otro
- Realiza un brinco en el código
¿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?
- addi
- sub
- move (correct)
- add
¿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?
- Código de instrucción para operaciones de salto
- Código de todas las instrucciones R (correct)
- Código de instrucción para operaciones de carga
- Número del registro destino
¿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?
¿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?
En el formato I, ¿qué tipo de operando se incluye?
En el formato I, ¿qué tipo de operando se incluye?
¿Qué se entiende por lenguaje de máquina?
¿Qué se entiende por lenguaje de máquina?
¿Qué instrucción se traduce como '000000fffffgggggddddd00000100000'?
¿Qué instrucción se traduce como '000000fffffgggggddddd00000100000'?
¿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?
¿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?
¿Cómo se indica el segmento de datos en un programa MIPS?
¿Cómo se indica el segmento de datos en un programa MIPS?
¿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?
¿Cuál es el propósito de la instrucción sw?
¿Cuál es el propósito de la instrucción sw?
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?
¿Dónde se almacenan los stack frames en un sistema MIPS?
¿Dónde se almacenan los stack frames en un sistema MIPS?
¿Cuál es el tamaño de una palabra (word) en MIPS?
¿Cuál es el tamaño de una palabra (word) en MIPS?
¿Cómo se declara un string en el código MIPS?
¿Cómo se declara un string en el código MIPS?
¿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?
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?
¿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?
¿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?
¿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?
¿Qué tipo de instrucciones son las pseudo-instrucciones en MIPS?
¿Qué tipo de instrucciones son las pseudo-instrucciones en MIPS?
¿Qué instrucción se utiliza para finalizar un programa en MIPS?
¿Qué instrucción se utiliza para finalizar un programa en MIPS?
¿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?
¿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?
¿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?
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?
¿Qué hace la operación andi $r0, $r1, C?
¿Qué hace la operación andi $r0, $r1, C?
¿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?
¿Cuál es la principal característica de los registros en MIPS?
¿Cuál es la principal característica de los registros en MIPS?
¿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?
¿Qué instrucciones se consideran aritméticas en MIPS?
¿Qué instrucciones se consideran aritméticas en MIPS?
¿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?
¿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?
¿Cuántos registros enteros hay en la arquitectura MIPS?
¿Cuántos registros enteros hay en la arquitectura MIPS?
¿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?
¿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?
¿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?
¿Qué es un registro en el contexto de MIPS?
¿Qué es un registro en el contexto de MIPS?
¿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?
¿Cómo se declara una variable entera en MIPS?
¿Cómo se declara una variable entera en MIPS?
¿Cuál de las siguientes instrucciones actualiza la variable f en memoria?
¿Cuál de las siguientes instrucciones actualiza la variable f en memoria?
¿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?
¿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?
¿Cuál de las siguientes afirmaciones es correcta sobre las instrucciones MIPS?
¿Cuál de las siguientes afirmaciones es correcta sobre las instrucciones MIPS?
¿Qué representación tiene la declaración 'x:.word 17'?
¿Qué representación tiene la declaración 'x:.word 17'?
¿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'?
Flashcards
¿Qué es MIPS?
¿Qué es 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.
Principio de regularidad en MIPS
Principio de regularidad en MIPS
Todas las instrucciones en MIPS ocupan 4 bytes (32 bits).
Principio de simplicidad en MIPS
Principio de simplicidad en MIPS
Las instrucciones de MIPS son sencillas. Solo hay 3 formatos de instrucción.
Tipos de instrucciones en MIPS
Tipos de instrucciones en MIPS
Signup and view all the flashcards
¿Qué son los registros?
¿Qué son los registros?
Signup and view all the flashcards
Tipos de registros en MIPS
Tipos de registros en MIPS
Signup and view all the flashcards
¿Qué es la memoria en MIPS?
¿Qué es la memoria en MIPS?
Signup and view all the flashcards
Alineación de memoria en MIPS
Alineación de memoria en MIPS
Signup and view all the flashcards
mflo
mflo
Signup and view all the flashcards
mfhi
mfhi
Signup and view all the flashcards
lw
lw
Signup and view all the flashcards
sw
sw
Signup and view all the flashcards
Segmento de texto
Segmento de texto
Signup and view all the flashcards
Segmento de datos
Segmento de datos
Signup and view all the flashcards
Segmento de pila
Segmento de pila
Signup and view all the flashcards
Stack frame
Stack frame
Signup and view all the flashcards
Directiva .word
Directiva .word
Signup and view all the flashcards
Etiqueta (variable)
Etiqueta (variable)
Signup and view all the flashcards
Valor inicial
Valor inicial
Signup and view all the flashcards
Cargar una variable en un registro
Cargar una variable en un registro
Signup and view all the flashcards
Instrucciones la y lw
Instrucciones la y lw
Signup and view all the flashcards
Guardar un registro en una variable
Guardar un registro en una variable
Signup and view all the flashcards
Instrucciones sw
Instrucciones sw
Signup and view all the flashcards
Seudo-instrucción
Seudo-instrucción
Signup and view all the flashcards
li (load immediate)
li (load immediate)
Signup and view all the flashcards
Lenguaje de máquina
Lenguaje de máquina
Signup and view all the flashcards
Ensamblador
Ensamblador
Signup and view all the flashcards
¿Qué es el formato R?
¿Qué es el formato R?
Signup and view all the flashcards
¿Qué es el formato I?
¿Qué es el formato I?
Signup and view all the flashcards
¿Qué es el formato J?
¿Qué es el formato J?
Signup and view all the flashcards
Operaciones lógicas en MIPS
Operaciones lógicas en MIPS
Signup and view all the flashcards
Corrimiento a la izquierda (sll)
Corrimiento a la izquierda (sll)
Signup and view all the flashcards
Corrimiento a la derecha (srl)
Corrimiento a la derecha (srl)
Signup and view all the flashcards
AND lógico en MIPS
AND lógico en MIPS
Signup and view all the flashcards
OR lógico en MIPS
OR lógico en MIPS
Signup and view all the flashcards
XOR lógico en MIPS
XOR lógico en MIPS
Signup and view all the flashcards
NOR lógico en MIPS
NOR lógico en MIPS
Signup and view all the flashcards
Extracción de datos en MIPS
Extracción de datos en MIPS
Signup and view all the flashcards
String en MIPS
String en MIPS
Signup and view all the flashcards
Impresión de string en MIPS
Impresión de string en MIPS
Signup and view all the flashcards
Llamadas al sistema en MIPS
Llamadas al sistema en MIPS
Signup and view all the flashcards
Segmento de datos en MIPS
Segmento de datos en MIPS
Signup and view all the flashcards
Segmento de texto en MIPS
Segmento de texto en MIPS
Signup and view all the flashcards
Seudo-instrucciones en MIPS
Seudo-instrucciones en MIPS
Signup and view all the flashcards
Instrucción 'lw' en MIPS
Instrucción 'lw' en MIPS
Signup and view all the flashcards
Instrucción 'sw' en MIPS
Instrucción 'sw' en MIPS
Signup and view all the flashcards
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.