Lección 8: Código máquina y ensamblador
Vimos que el CPU ejecuta instrucciones a través del ciclo fetch-decode-execute, pero ¿qué hay exactamente dentro de esas instrucciones? En la base de todo está el código máquina (Machine Code) — una secuencia de 0 y 1 donde cada instrucción se compone de un código de operación (Opcode, qué operación
El código máquina son instrucciones de 0 y 1 que ejecuta el CPU. El ensamblador son esas mismas instrucciones exactas, pero escritas con nombres cortos que las personas pueden leer — como 'ADD' en lugar de una fila de ceros y unos.
- Código máquina
- Instrucciones binarias (secuencias de 0 y 1) que el CPU ejecuta directamente, sin ninguna traducción adicional.
- Opcode
- La parte de una instrucción que determina qué operación realizar (sumar, copiar, saltar). Su nombre es abreviatura de Operation Code.
- Operando (Operand)
- La parte de una instrucción que indica sobre qué actuar: un registro, un valor numérico o una dirección de memoria.
- Conjunto de instrucciones (Instruction Set Architecture, ISA)
- El contrato que define todas las instrucciones que un CPU puede ejecutar y la forma en que se codifican; ejemplos reales son x86 y ARM.
- Ensamblador (Assembly)
- Una representación legible para humanos del código máquina, uno a uno: cada línea de ensamblador corresponde a una instrucción de máquina.
- Mnemónico (Mnemonic)
- El nombre corto de una operación en ensamblador, como MOV, ADD o JMP, que reemplaza al código de operación binario.
- Registro (Register)
- Una celda de almacenamiento diminuta y muy rápida dentro del propio CPU, donde se guardan los valores sobre los que operan las instrucciones.
- Codificación de instrucciones
- El patrón binario exacto en el que se convierte un mnemónico junto con sus operandos para que el CPU pueda ejecutarlo.
- RISC frente a CISC
- Dos enfoques de diseño de ISA: RISC con pocas instrucciones simples (como ARM), CISC con muchas instrucciones complejas (como x86).
- Salto y bifurcación (Jump / Branch)
- Una instrucción que cambia qué instrucción se ejecutará a continuación — a veces de forma condicional — implementando así bucles y condicionales en código máquina.