Registros

Registros

Registros: las manos del procesador

Primero, ¿qué es un bit? Un bit es un único 0 o 1, la unidad más pequeña de información que un ordenador puede almacenar. Junta 32 de ellos y tienes un número de 32 bits, que puede contar desde 0 hasta unos 4 mil millones. Cada registro y cada ranura de memoria en RISC-V contiene un número de 32 bits.

Un registro es una pequeña ranura de almacenamiento dentro del procesador que contiene un número de 32 bits. RISC-V proporciona 32 registros. Como residen en el núcleo del procesador, los registros son mucho más rápidos de usar que la memoria principal, por órdenes de magnitud. Unos pocos de ellos cubrirán la mayor parte de lo que escribas: t0 a t2 (valores temporales), a0 a a2 (argumentos y resultados), zero (siempre 0), sp (puntero de pila) y ra (dirección de retorno).

ℹ
La pestaña Simulator muestra cada registro a medida que su valor cambia mientras se ejecuta el programa. Observar esa vista es la forma más rápida de hacerse una idea de cómo se comportan los registros.
Tu primer programa: imprimir 42
# Imprime el número 42, luego cierra.
# a7 elige el servicio y a0 lleva el valor.
li a7, 1 # servicio 1 = imprimir entero
li a0, 42 # el valor a imprimir
ecall # hazlo
li a7, 10 # servicio 10 = salida
ecall

significa load immediate (cargar inmediato), y coloca una constante en un registro. selecciona el servicio 1, que imprime un entero. coloca el número que se va a imprimir en a0. pasa el control al sistema, que imprime el valor en a0. Luego selecciona el servicio de salida, y termina el programa. Pulsa Run, luego cambia 42 y ejecuta el programa de nuevo.

Ejecución del programa
0x400000li a7, 1
0x400004li a0, 42
0x400008ecall
0x40000cli a7, 10
0x400010ecall
a71
a0—
salida—
pc0x400000

Establecer a7 en 1 hace que la siguiente ecall imprima un número.

La figura siguiente sigue las cinco líneas anteriores a medida que el simulador las ejecuta. Cada línea lleva la dirección que ocupa una vez cargado el programa, y las direcciones están separadas por cuatro bytes porque cada instrucción de RISC-V tiene cuatro bytes de ancho. La caja etiquetada pc, abreviatura de program counter (contador de programa), contiene la dirección de la línea resaltada actualmente. Ese número es todo lo que el procesador sabe sobre su posición en el programa: obtiene la instrucción en la dirección del contador de programa, la ejecuta, y luego suma cuatro al contador de programa para llegar a la siguiente instrucción. Un registro recibe su valor cuando se ejecuta el de su línea, y la salida aparece solo cuando se ejecuta el primer .

Material sugerido

Unidad 0: Assembly RISC-V
Gho, E. Unidad 0: RISC-V ASM [video]. Cátedra de Arquitectura de Computadoras, Universidad Nacional de La Matanza. YouTube.Prof. Edgardo Gho