typestar

Lenguajes

Assembly

Mnemónicos legibles para las instrucciones del procesador: registros, banderas y syscalls.

Practica Assembly

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.

Practica Assembly

31 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes