Por qué el ensamblador inline de Odin es el mejor frente a GCC, Clang y Rust

Fuentes: Everyone Says Assembly Is Untyped—Everyone Is Wrong

El lenguaje Odin incorpora un ensamblador inline diseñado desde cero, no añadido como un parche sobre una cadena de texto. A diferencia de las soluciones de GCC, Clang o Rust —basadas en plantillas de texto y restricciones tipo DSL—, el sistema de Odin trata el ensamblador como plantillas asm invocables como procedimientos, con chequeo de tipos completo, diagnósticos semánticos reales (tablas core:rexcode) y una sintaxis unificada entre ISAs coherente con el resto del lenguaje.

El artículo repasa los precedentes históricos. MSVC ofreció un enfoque basado en instrucciones reales con acceso directo a variables por nombre, pero se quedó solo en x86 y no modeló los clobbers. Turbo Pascal introdujo un ensamblador integrado capaz de nombrar variables Pascal (1990), aunque limitado al juego de instrucciones del 80286. Ambos resolvían identificadores, pero ninguno modelaba las instrucciones en sí: tipos de operandos, rangos de inmediatos ni registros modificados.

El autor sostiene que el ensamblador sí está tipado: los registros tienen tamaños, los inmediatos tienen rangos y los operandos tienen restricciones que pueden describirse en un sistema de tipos. La implementación de Odin codifica estas propiedades y las hace visibles tanto al programador como al compilador. La pieza, según el texto, fue construida en aproximadamente siete días.