* Instruction Pointer (IP) / Program Counter (PC): Este registro interno de CPU contiene la dirección de la siguiente instrucción que se ejecutará. La CPU obtiene instrucciones de la memoria utilizando esta dirección. La IP/PC está * incrementada * Después de cada instrucción, generando efectivamente la dirección para la instrucción posterior (secuencialmente).
* Direcciones calculadas: La CPU calcula las direcciones de memoria según las instrucciones. Esto a menudo involucra:
* Dirección directa: La instrucción contiene explícitamente la dirección de memoria.
* Dirección indirecta: La instrucción contiene la dirección de una ubicación de memoria * que contiene * la dirección de los datos.
* Registre direccionamiento indirecto: La dirección se mantiene en un registro de CPU.
* base + direccionamiento de desplazamiento: Se agrega una dirección base (tal vez desde un registro) a un valor de desplazamiento especificado en la instrucción. Esto es común para acceder a elementos en matrices.
Estos cálculos son realizados por la unidad lógica aritmética (ALU) de la CPU (ALU), pero no implican * Generación * de direcciones de forma libre. Las direcciones se derivan de valores ya presentes en registros o memoria.
* DMA (acceso directo a la memoria): Estos chips especializados pueden generar direcciones de memoria independientemente de la CPU para transferir datos directamente entre la memoria y los periféricos (por ejemplo, un disco duro o tarjeta de red). Si bien esto genera direcciones, está fuera del control directo de la CPU.
En resumen, la CPU no genera * direcciones * de manera creativa. Recupera direcciones de instrucciones, registros internos o las recibe de otros componentes de hardware. Su papel es * usar * esas direcciones para acceder a la memoria.