Registros vs. Memoria
Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 3 de 45.
Ahora has aprendido sobre dos lugares donde pueden residir los datos dentro de una computadora:
- Registros: pequeñas cajas de almacenamiento dentro de la CPU
- Memoria (RAM): una enorme cuadrícula de posiciones numeradas fuera de la CPU
Pero ¿por qué hay dos lugares? ¿Por qué la CPU no puede trabajar directamente con la memoria?
La respuesta es la velocidad. Los registros son extremadamente rápidos porque están dentro de la CPU. memory es más lenta porque está fuera. La CPU puede acceder a un register en un solo ciclo, pero acceder a memory lleva mucho más tiempo.
Comparación lado a lado:
| Característica | Registros | Memoria (RAM) |
|---|---|---|
| Ubicación | Dentro de la CPU | Fuera de la CPU |
| Velocidad | Extremadamente rápida (1 ciclo) | Más lenta (muchos ciclos) |
| Número de posiciones de almacenamiento | Muy pocas (16-32 en x86-64) | Millones o miles de millones |
| Tamaño de cada posición | 8 bytes (64 bits) | 1 byte |
| Cómo se accede a ellas | Por nombre (rax, rbx, rcx...) | Por dirección (1000, msg, buffer) |
| ¿Volátiles? | Sí (desaparecen cuando se apaga la alimentación) | Sí (desaparece cuando se apaga la alimentación) |
La regla más importante en ensamblador:
La CPU no puede trabajar directamente con datos en memory. Los datos deben cargarse primero en register.
Esto no es opcional. Así es como está diseñado el CPU. Cada suma, cada comparación, cada movimiento de datos debe pasar por un register.
El patrón de tres pasos que usarás constantemente:
| Paso | Qué sucede | Ejemplo |
|---|---|---|
| 1. LOAD | Copia los datos de memory a un register | mov rax, [count] |
| 2. WORK | Haz algo con el register | add rax, 5 |
| 3. STORE | Copia el result de vuelta a memory (si es necesario) | mov [result], rax |
¿Qué sucede si olvidas esta regla?
Si intentas add dos números que están ambos en memory, el ensamblador te dará un error. La CPU simplemente no puede hacerlo. Primero debes cargarlos en register.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1La máquina
¿Qué es la CPU?MemoriaRegistros vs. MemoriaCómo funcionan las instruccionesPatrón de dos archivosLa arquitectura x86-64Practica por tu cuenta: Playground de Assembly