El ordenador
El ISA (Instruction Set Architecture) es el conjunto de instrucciones que un microprocesador entiende y puede ejecutar. Es como el idioma nativo del procesador: todos los programas, sin importar en qué lenguaje de alto nivel se escriban (C, Java, Python…), terminan convirtiéndose en estas instrucciones básicas.
6.1 ¿Qué es una instrucción?
Una instrucción es una orden muy simple que el procesador ejecuta en pocos ciclos de reloj. Ejemplos:
- Sumar dos números.
- Mover un dato de la memoria a un registro.
- Saltar a otra parte del programa.
Una instrucción se compone de:
- Opcode (Operation Code): qué operación hacer (ej. ADD, MOV).
- Operandos: sobre qué datos hacer la operación (ej. registros, memoria, constantes).
6.2 Modos de direccionamiento
Los modos de direccionamiento indican cómo se localizan los datos que usa una instrucción.
Algunos ejemplos:
-
Inmediato: el dato está dentro de la propia instrucción.
MOV A, 5 ; Mueve el valor 5 al registro A -
Directo: la instrucción indica la dirección de memoria.
MOV A, [1000h] ; Copia el contenido de la dirección 1000h al registro A -
Indirecto: el dato está en la dirección que contiene un registro.
MOV A, [BX] ; Copia el contenido de la dirección apuntada por BX -
Indexado: se usa un registro base + un desplazamiento.
MOV A, [BX+4] ; Copia el contenido de la dirección BX+4 -
Relativo: se usa para saltos condicionales, sumando un desplazamiento a la dirección actual del programa.
👉 Gracias a estos modos, el procesador puede trabajar con datos inmediatos, posiciones fijas o direcciones dinámicas.
6.3 Tipos de instrucciones
En cualquier ISA se pueden agrupar en varias categorías:
-
De transferencia de datos
- Mover datos entre registros o entre memoria y registros.
- Ejemplo:
MOV A, B
-
Aritméticas y lógicas
-
Operaciones matemáticas o de lógica booleana.
-
Ejemplos:
ADD A, B→ A = A + BSUB A, B→ A = A - BAND A, B→ A = A AND B
-
-
De control de flujo
-
Permiten alterar el orden secuencial del programa.
-
Ejemplos:
JMP etiqueta→ salto incondicional.JZ etiqueta→ salto si el resultado fue cero.
-
-
De entrada/salida
- Interactúan con dispositivos externos.
- Ejemplo en x86:
IN AL, 60h(lee del puerto 60h).
-
Especiales / de sistema
- Manejo de interrupciones, configuración, gestión de memoria.
6.4 Ejemplos de ISAs modernas
- x86 / x64 (Intel, AMD): Muy completo y complejo (CISC). Compatible con décadas de software.
- ARM (RISC): Instrucciones simples, optimizadas para bajo consumo y móviles.
- RISC-V: ISA abierta y modular, cualquiera puede extenderla o adaptarla.
- MIPS, SPARC, PowerPC: Ejemplos históricos de arquitecturas RISC que influyeron en el diseño moderno.
6.5 Ejemplo práctico
Código en ensamblador x86 para sumar dos números:
1MOV AX, 5 ; Carga el valor 5 en el registro AX 2MOV BX, 3 ; Carga el valor 3 en el registro BX 3ADD AX, BX ; Suma AX + BX y guarda el resultado en AX 4; Resultado: AX = 8
En C, esto sería simplemente:
1int ax = 5; 2int bx = 3; 3ax = ax + bx; // ax = 8
👉 El compilador traduce el C a instrucciones ISA.
✅ Resumen clave del punto 6:
- El ISA define el conjunto de instrucciones que entiende un procesador.
- Las instrucciones se dividen en transferencia, aritméticas/lógicas, control, E/S y especiales.
- Los modos de direccionamiento permiten flexibilidad en el manejo de datos.
- Cada arquitectura (x86, ARM, RISC-V) tiene su propio ISA.
- Loading...