Assembly
Mnemónicos legibles para las instrucciones del procesador: registros, banderas y syscalls.
31 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 1949
- Creado por
- Kathleen Booth wrote the first assembly notation; NASM by Simon Tatham and Julian Hall
- Tipado
- Una instrucción por línea; la columna de mnemónicos marca el ritmo
- Los fragmentos siguen
- NASM 3 (x86-64)
- Extensiones de archivo
- .asm, .s
Para qué sirve
El ensamblador es la última capa legible antes del procesador: mnemónicos que mapean uno a uno a instrucciones de máquina, registros en vez de variables, banderas de condición en vez de booleanos, y el sistema operativo alcanzado por número vía syscalls. Ya nadie construye aplicaciones en él; toda persona que depura crashes, lee la salida del compilador, escribe bucles internos críticos, estudia malware o juega CTFs termina leyéndolo — y leerlo con fluidez exige haber escrito algo.
Este corpus habla NASM para x86-64 Linux, el dialecto de la mayoría de los tutoriales modernos: orden de operandos Intel, operandos de memoria entre corchetes, y la convención de llamada System V debajo. El conjunto de trabajo es chico — mov, el cuarteto aritmético, cmp con la familia de saltos, push/pop, call/ret, lea y un puñado de syscalls — pero compone en todo: las tablas de salto del compilador, los marcos de pila del runtime y los bucles de strings de libc reaparecen aquí en su tamaño original.
Sus casas profesionales son los compiladores y JITs (leer su salida es el pan diario del trabajo de rendimiento), los sistemas operativos y el firmware, la ingeniería inversa y la investigación de seguridad, y los nichos embebidos donde los ciclos y bytes todavía se cuentan a mano. El Compiler Explorer de Godbolt volvió mainstream la alfabetización casual en ensamblador; este es el vocabulario que muestra.
De dónde viene
La notación de ensamblador es tan vieja como las máquinas de programa almacenado: Kathleen Booth escribió ensamblador para la ARC2 en Birkbeck en 1947-49, y las 'initial orders' de la EDSAC de David Wheeler ensamblaban programas simbólicos en 1949. Por dos décadas *fue* la programación, hasta que Fortran y sus sucesores volvieron respetables a los compiladores — y aun así la gente de sistemas conservó la fluidez.
El linaje x86 empieza con el 8086 de Intel en 1978; cada generación se apiló compatible sobre la anterior, pasando por los 32 bits del 386 hasta el x86-64 de AMD en 2003, el dialecto de este corpus. Del lado de herramientas, MASM y el TASM de Borland reinaron la era DOS hasta que NASM (1996, Simon Tatham y Julian Hall) le dio a las plataformas libres un ensamblador portable de sintaxis Intel; GNU as cargó la sintaxis AT&T que gcc emite.
Los compiladores optimizadores terminaron con el ensamblador como lenguaje de aplicaciones hace décadas, pero la población lectora sigue creciendo: cada sesión de depurador toca fondo en el desensamblado, el trabajo de seguridad vive ahí, y Compiler Explorer volvió reflejo el '¿a qué compila esto?'. La ABI de syscalls que usa este corpus — números en rax, argumentos en rdi/rsi/rdx — es el piso estable de Linux mismo.
Cómo se siente teclearlo
El ensamblador se escribe en columnas: un mnemónico corto, un tab de aire, luego operandos con comas — mov, add, cmp cayendo una y otra vez hasta ser puro reflejo. Los registros son el vocabulario (rax, rdi, rcx en rotación infinita), los corchetes marcan memoria, y la columna de comentarios con punto y coma es la mitad del tipeo. Las líneas son cortas pero densas en puntuación, y el conteo de tokens por línea es el más bajo de este corpus, así que la métrica de ritmo corre baja — cada línea es chica, pero cada carácter carga peso.
31 pasos en 1 tours, desde lo básico hasta programas completos.
Documentación oficial
- El manual de NASM
- Los manuales de software Intel 64 e IA-32
- La ABI System V AMD64
- La tabla de syscalls de Linux (x86-64)
- Compiler Explorer