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 pode trabalhar diretamente com a 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 dela. 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 você os acessa | 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:
A CPU não pode trabalhar diretamente com dados na memória. Os dados devem ser carregados primeiro nos registradores.
Isso não é opcional. É assim que a CPU foi projetada. Toda adição, toda comparação, todo movimento de dados deve passar por um register.
O padrão de três etapas que você usará constantemente:
| Etapa | O que acontece | Exemplo |
|---|---|---|
| 1. LOAD | Copiar dados da memory para um register | mov rax, [count] |
| 2. WORK | Fazer algo com o register | add rax, 5 |
| 3. STORE | Copiar o result de volta para a memory (se necessário) | mov [result], rax |
O que acontece se você esquecer esta regra?
Se você tentar add dois números que estão ambos em memory, o assembler exibirá um erro. A CPU simplesmente não consegue fazer isso. Você deve carregá-los em register 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