Registros

Registros

Registros: as mãos do processador

Primeiro, o que é um bit? Um bit é um único 0 ou 1, a menor unidade de informação que um computador pode armazenar. Junte 32 deles e você tem um número de 32 bits, que pode contar de 0 até cerca de 4 bilhões. Cada registrador e cada slot de memória no RISC-V contém um número de 32 bits.

Um registrador é um pequeno slot de armazenamento dentro do processador que contém um número de 32 bits. O RISC-V fornece 32 registradores. Como eles ficam no núcleo do processador, os registradores são muito mais rápidos de usar do que a memória principal, por ordens de magnitude. Alguns deles cobrirão a maior parte do que você escreve: t0 a t2 (valores temporários), a0 a a2 (argumentos e resultados), zero (sempre 0), sp (ponteiro de pilha) e ra (endereço de retorno).

ℹ
A aba Simulador mostra cada registrador conforme seu valor muda enquanto o programa é executado. Observar essa visão é a maneira mais rápida de ter uma noção de como os registradores se comportam.
Seu primeiro programa: print 42
# Imprima o número 42, então saia.
# a7 escolhe o serviço e a0 carrega o valor.
li a7, 1 # serviço 1 = imprimir inteiro
li a0, 42 # o valor a imprimir
ecall # faça isso
li a7, 10 # serviço 10 = sair
ecall

significa load immediate (carregar imediato), e coloca uma constante em um registrador. seleciona o serviço 1, que imprime um inteiro. coloca o número a imprimir em a0. passa o controle para o sistema, que imprime o valor em a0. Em seguida, seleciona o serviço de saída, e encerra o programa. Pressione Run, depois altere 42 e execute o programa novamente.

Execução do programa
0x400000li a7, 1
0x400004li a0, 42
0x400008ecall
0x40000cli a7, 10
0x400010ecall
a71
a0—
saída—
pc0x400000

Definir a7 como 1 faz com que a próxima ecall imprima um número.

A figura abaixo acompanha as cinco linhas acima conforme o simulador as executa. Cada linha carrega o endereço que ocupa depois que o programa é carregado, e os endereços estão separados por quatro bytes porque cada instrução RISC-V tem quatro bytes de largura. A caixa rotulada pc, abreviação de program counter (contador de programa), contém o endereço da linha atualmente destacada. Esse número é tudo o que o processador sabe sobre sua posição no programa: ele busca a instrução no endereço indicado no contador de programa, executa-a e então adiciona quatro ao contador de programa para chegar à próxima instrução. Um registrador recebe seu valor quando o em sua linha é executado, e a saída aparece apenas quando o primeiro é executado.