Conviene haber comprendido RISC-V e interfaz de instrucciones.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar Load/store con Saltos y ciclos y resolver un caso nuevo.
Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.
Las secciones 1–4 se pueden estudiar en papel. Desde RISC-V conviene preparar el simulador Ripes.
Abrir la guía de herramientas →Diagnóstico rápido: ¿cómo se relacionan Load/store y Saltos y ciclos? +
No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.
Aprende el tema paso a paso
Escribirás pequeños programas RISC-V para conectar variables, decisiones y funciones de alto nivel con registros, memoria y saltos reales.
- RISC-V es load/store: la ALU opera con registros
- Las ramas cambian el contador de programa
- La pila conserva contexto y la E/S mapeada parece memoria
RISC-V es load/store: la ALU opera con registros
Las instrucciones aritméticas no reciben directamente un dato de memoria. Primero se carga con lw, se calcula en registros y luego se guarda con sw. Una dirección se forma sumando un desplazamiento a un registro base.
lw carga una palabra de 32 bits; sw la almacena.
La dirección debe respetar tamaño y alineación.
lb, lbu, lh y lhu difieren en tamaño y extensión de signo.
¿Por qué no existe una instrucción base equivalente a “sumar 1 directamente en memoria”?
Mostrar respuesta +
Porque la ISA separa acceso a memoria y cálculo. Esa regularidad simplifica el camino de datos y hace explícito el movimiento.
Las ramas cambian el contador de programa
beq, bne, blt y otras ramas comparan registros y eligen entre continuar o saltar. Un if y un ciclo se construyen con etiquetas, una condición y saltos; conviene diseñar primero la invariancia del ciclo.
La caída natural ejecuta la siguiente instrucción.
Una etiqueta representa una dirección resuelta al ensamblar.
Comparaciones con y sin signo no son intercambiables.
¿Qué error lógico tiene el ejemplo si pretende sumar los valores 1…n?
Mostrar respuesta +
Incrementa el acumulador en 1, no en t0. Debe usar add t1, t1, t0 y revisar el orden de incremento y comparación.
La pila conserva contexto y la E/S mapeada parece memoria
jal guarda el retorno y salta; jalr permite volver. Una función reserva espacio en la pila y conserva los registros exigidos por la convención. En E/S mapeada, ciertas direcciones representan dispositivos, no RAM común.
La pila crece ajustando sp y debe restaurarse antes de retornar.
Los registros s deben conservarse; los t pueden ser sobrescritos.
Ripes permite observar registros, memoria y dispositivos paso a paso.
¿Por qué leer repetidamente un registro de dispositivo puede dar resultados distintos?
Mostrar respuesta +
Porque su valor representa estado externo que cambia. La dirección se accede como memoria, pero su semántica pertenece al dispositivo.
Tu recorrido en tres ideas
- RISC-V es load/store: la ALU opera con registros
- Las ramas cambian el contador de programa
- La pila conserva contexto y la E/S mapeada parece memoria
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Modificar sp sin restaurarlo o perder ra en una función que llama a otra.
Mezclar dirección, contenido y desplazamiento al usar load/store.
Ahora hazlo sin guía
Escribe en RISC-V una función que sume un arreglo, respete la convención de llamadas y pueda observarse paso a paso en Ripes.
Mostrar pauta de corrección +
- Dirección y tamaño avanzan correctamente.
- El ciclo cubre vacío, uno y varios elementos.
- La pila, registros conservados y retorno respetan la convención.
