Arquitectura · Sección 6

Programar en ensamblador RISC-V

Aritmética, memoria, decisiones, ciclos, procedimientos, pila y entrada/salida para comprender cómo se ejecuta un programa.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido RISC-V e interfaz de instrucciones.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Load/store con Saltos y ciclos y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

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.

Ruta guiada · 3 lecciones

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.

Al terminar podrás
  • 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
01
Cálculo y 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.

01

lw carga una palabra de 32 bits; sw la almacena.

02

La dirección debe respetar tamaño y alineación.

03

lb, lbu, lh y lhu difieren en tamaño y extensión de signo.

Comprueba lo aprendido · 01

¿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.

02
Decidir y repetir

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.

01

La caída natural ejecuta la siguiente instrucción.

02

Una etiqueta representa una dirección resuelta al ensamblar.

03

Comparaciones con y sin signo no son intercambiables.

Comprueba lo aprendido · 02

¿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.

03
Funciones y dispositivos

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.

01

La pila crece ajustando sp y debe restaurarse antes de retornar.

02

Los registros s deben conservarse; los t pueden ser sobrescritos.

03

Ripes permite observar registros, memoria y dispositivos paso a paso.

Comprueba lo aprendido · 03

¿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.

Resumen de la sección

Tu recorrido en tres ideas

  1. RISC-V es load/store: la ALU opera con registros
  2. Las ramas cambian el contador de programa
  3. La pila conserva contexto y la E/S mapeada parece memoria
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Modificar sp sin restaurarlo o perder ra en una función que llama a otra.

ERROR 02

Mezclar dirección, contenido y desplazamiento al usar load/store.

DESAFÍO INTEGRADOR

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
Una respuesta sólida:
  • 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.