Registradores vs Memória
Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 3 de 45.
Agora você aprendeu sobre dois lugares onde os dados podem ficar dentro de um computador:
- Registradores: pequenas caixas de armazenamento dentro da CPU
- Memória (RAM): uma enorme grade de posições numeradas fora da CPU
Mas por que existem dois lugares? Por que a CPU não mantém tudo na memória?
A resposta é velocidade. Os registradores são extremamente rápidos porque ficam dentro da CPU. A memória é mais lenta porque fica fora. A CPU pode acessar um registrador em um único ciclo, mas acessar a memória leva muito mais tempo.
Comparação lado a lado:
| Recurso | Registradores | Memória (RAM) |
|---|---|---|
| Localização | Dentro da CPU | Fora da CPU |
| Velocidade | Extremamente rápida (1 ciclo) | Mais lenta (muitos ciclos) |
| Número de espaços de armazenamento | Muito poucos (16-32 em x86-64) | Milhões ou bilhões |
| Tamanho de cada espaço | 8 bytes (64 bits) | 1 byte |
| Como acessá-los | Por nome (rax, rbx, rcx...) | Por endereço (1000, msg, buffer) |
| Volátil? | Sim (desaparece quando a energia é desligada) | Sim (desaparece quando a energia é desligada) |
A regra mais importante em assembly:
Uma instrução pode usar no máximo um operando de memória. Para combinar dois valores que estão na memória, carregue primeiro um deles em um registrador.
Os registradores também são onde você mantém os valores com os quais trabalha, porque cada acesso à memória é lento.
O padrão de três etapas que você usará constantemente:
| Etapa | O que acontece | Exemplo |
|---|---|---|
| 1. LOAD | Copie dados da memória para um registrador | mov rax, [count] |
| 2. WORK | Faça algo com o registrador | add rax, 5 |
| 3. STORE | Copie o resultado de volta para a memória (se necessário) | mov [result], rax |
O que acontece se você esquecer esta regra?
Se você tentar somar dois números que estão ambos na memória, o montador apresentará um erro. A CPU não consegue fazer isso. Você precisa carregar um deles em um registrador primeiro.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1A Máquina
O que é CPUMemóriaRegistradores vs MemóriaComo as instruções funcionamPadrão de Dois ArquivosA Arquitetura x86-64Pratique por conta própria: Playground de Assembly