Que es el contador de programa
El contador de programa (PC, Program Counter), también llamado instrucción puntero (Instruction Pointer, IP) en algunas arquitecturas, es un registro de la CPU que indica la dirección de memoria de la siguiente instrucción que debe ejecutarse.
🔹 Cómo funciona:
- Cuando el procesador ejecuta una instrucción, el contador de programa apunta a esa instrucción en memoria.
- Al terminar de ejecutarla, el PC se incrementa para apuntar a la siguiente instrucción.
- Si la instrucción es un salto (branch, jump, call, return, etc.), el PC no se incrementa de forma secuencial, sino que se actualiza con la dirección indicada en el salto.
🔹 Ejemplo conceptual:
Imagina que tienes un programa con estas instrucciones en memoria:
0x1000: cargar A
0x1004: sumar B
0x1008: guardar C
0x100C: saltar a 0x2000
- Al inicio, el PC vale
0x1000.
- Se ejecuta "cargar A", y el PC pasa a
0x1004.
- Se ejecuta "sumar B", y el PC pasa a
0x1008.
- Se ejecuta "guardar C", y el PC pasa a
0x100C.
- Como la instrucción es un salto, el PC cambia a
0x2000 (no sigue secuencialmente).
🔹 En los hilos y procesos
- Cada hilo tiene su propio contador de programa, porque cada hilo puede estar ejecutando instrucciones distintas del mismo programa al mismo tiempo.
- En cambio, en un proceso con un solo hilo, hay un único PC que avanza por las instrucciones del programa.
🔹Cómo se ejecuta cada instrucción
- El ciclo básico del procesador es:
- Fetch (captura) → el PC indica la dirección de la próxima instrucción, la CPU la lee de memoria.
- Decode (decodificación) → la CPU interpreta los bits para saber qué operación hacer.
- Execute (ejecución) → la CPU ejecuta la operación (sumar, mover datos, saltar, etc.).
- Update PC → el PC se actualiza para apuntar a la siguiente instrucción (o a otra dirección si hubo un salto).
🔹 Sobre el “espacio de memoria de cada instrucción”