Cómo funcionan las instrucciones
Parte de la sección Fundamentos del Journey de Assembly de Coddy — lección 4 de 45.
Sabes que la CPU ejecuta las instrucciones una por una. Pero, ¿cómo sabe la CPU qué instrucción ejecutar a continuación? ¿Dónde se almacenan las instrucciones? ¿Y qué aspecto tiene realmente una instrucción?
Las instrucciones son números.
Esta es una verdad fundamental sobre las computadoras. Todo es un número. Los datos con los que trabajas (como el número 42) son un número. La dirección donde viven los datos (como 1000) es un número. Y las instrucciones mismas (como mov, add, cmp) también son números.
Cuando escribes código ensamblador como mov rax, 5, el ensamblador convierte este texto legible por humanos en un número que la CPU entiende. Este número se llama código de instrucción.
¿Dónde se almacenan las instrucciones?
Las instrucciones se almacenan en la memoria, al igual que los datos. No hay un lugar especial para las instrucciones. La memoria contiene ambos:
- Datos (números, caracteres, arreglos)
- Instrucciones (el programa en sí)
La CPU no conoce la diferencia. Simplemente lee lo que sea que esté en la dirección de memoria a la que apunta el Contador de Programa (Program Counter). Aprendiste sobre el PC brevemente en la Lección 0.1. Ahora es el momento de entender exactamente cómo funciona.
El Contador de Programa (también llamado Puntero de Instrucción) es un registro especial dentro de la CPU. Su única tarea es contener la dirección de memoria de la siguiente instrucción a ejecutar.
El ciclo Fetch-Execute:
La CPU repite estos tres pasos indefinidamente:
| Paso | Qué sucede |
|---|---|
| 1. FETCH | Leer la instrucción en la dirección del PC |
| 2. EXECUTE | Ejecutar esa instrucción |
| 3. ADVANCE | Mover el PC a la siguiente instrucción |
Ejemplo sencillo:
Si PC = 1000, la CPU:
- Busca la instrucción en la dirección 1000
- La ejecuta
- Mueve el PC a la siguiente dirección (1000 + tamaño de la instrucción)
Luego se repite con el nuevo valor de PC.
Cómo se ve una instrucción:
Cada instrucción tiene dos partes:
| Parte | Qué hace | Ejemplo |
|---|---|---|
| Opcode | Qué HACER | mov, add, cmp |
| Operandos | Sobre QUÉ actuar | rax, 5, [result] |
Algunas instrucciones tienen un operando (como inc rax para sumar 1). Algunas tienen dos (como mov rax, 5). Algunas tienen tres (como add rax, rbx, rcx en algunas arquitecturas).
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