Registradores vs Memória
Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 3 de 45.
Você agora aprendeu sobre dois lugares onde os dados podem residir dentro de um computador:
- Registradores — minúsculas caixas de armazenamento dentro da CPU
- Memória (RAM) — uma grade gigante de slots numerados fora da CPU
Mas por que existem dois lugares? Por que a CPU não pode simplesmente trabalhar diretamente com a memória?
A resposta é velocidade. Os registradores são extremamente rápidos porque estão dentro da CPU. A memória é mais lenta porque está 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ápido (1 ciclo) | Mais lento (muitos ciclos) |
| Número de slots de armazenamento | Muito poucos (16-32 em x86-64) | Milhões ou bilhões |
| Tamanho de cada slot | 8 bytes (64 bits) | 1 byte |
| Como você os acessa | Pelo nome (rax, rbx, rcx...) | Pelo endereço (1000, msg, buffer) |
| Volátil? | Sim (desaparece quando desligado) | Sim (desaparece quando desligado) |
A regra mais importante em assembly:
A CPU não pode trabalhar diretamente com dados na memória. Os dados devem ser carregados em registradores primeiro.
Isso não é opcional. É assim que a CPU é projetada. Cada adição, cada comparação, cada movimentação de dados deve passar por um registrador.
O padrão de três etapas que você usará constantemente:
| Etapa | O que acontece | Exemplo |
|---|---|---|
| 1. LOAD (CARREGAR) | Copia dados da memória para um registrador | mov rax, [count] |
| 2. WORK (PROCESSAR) | Faz algo com o registrador | add rax, 5 |
| 3. STORE (ARMAZENAR) | Copia 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 assembler lhe dará um erro. A CPU simplesmente não consegue fazer isso. Você deve carregá-los em registradores 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-64