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 los datos pueden residir dentro de una computadora:
- Registros — pequeñas cajas de almacenamiento dentro de la CPU
- Memoria (RAM) — una cuadrícula gigante de ranuras numeradas fuera de la CPU
¿Pero por qué hay dos lugares? ¿Por qué la CPU no puede simplemente trabajar directamente con la memoria?
La respuesta es la velocidad. Los registros son extremadamente rápidos porque están dentro de la CPU. La memoria es más lenta porque está fuera. La CPU puede acceder a un registro en un solo ciclo, pero acceder a la memoria 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ápido (1 ciclo) | Más lento (muchos ciclos) |
| Número de ranuras de almacenamiento | Muy pocas (16-32 en x86-64) | Millones o miles de millones |
| Tamaño de cada ranura | 8 bytes (64 bits) | 1 byte |
| Cómo se accede a ellos | Por nombre (rax, rbx, rcx...) | Por dirección (1000, msg, buffer) |
| ¿Volátil? | Sí (desaparece al apagar) | Sí (desaparece al apagar) |
La regla más importante en ensamblador:
La CPU no puede trabajar directamente con datos en la memoria. Los datos deben cargarse primero en los registros.
Esto no es opcional. Es la forma en que la CPU está diseñada. Cada suma, cada comparación, cada movimiento de datos debe pasar por un registro.
El patrón de tres pasos que usarás constantemente:
| Paso | Qué sucede | Ejemplo |
|---|---|---|
| 1. LOAD (CARGA) | Copiar datos de la memoria a un registro | mov rax, [count] |
| 2. WORK (TRABAJO) | Hacer algo con el registro | add rax, 5 |
| 3. STORE (ALMACENAMIENTO) | Copiar el resultado de vuelta a la memoria (si es necesario) | mov [result], rax |
¿Qué sucede si olvidas esta regla?
Si intentas sumar dos números que están ambos en memoria, el ensamblador te dará un error. La CPU simplemente no puede hacerlo. Debes cargarlos en los registros primero.
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-64