Ensamblador en línea, también llamado lenguaje ensamblador en línea o ensamblador en línea, es un bloque de código en lenguaje ensamblador que se inserta directamente en funciones y código fuente para otro lenguaje. Esto permite a un programador insertar un bloque de lenguaje ensamblador puro en un programa en el que el resto del programa utiliza un lenguaje no ensamblador. La capacidad es compatible con algunos lenguajes, como C, C ++ y Pascal, pero es una característica del compilador específico utilizado y no es necesariamente parte del estándar del lenguaje. En muchos casos, el ensamblaje en línea se usa para acceder a funciones especiales en la unidad central de procesamiento (CPU), para optimizar el código o para realizar operaciones de muy bajo nivel, como blitting de memoria. Aunque un cierto compilador o lenguaje de programación puede tener soporte para crear ejecutables multiplataforma, el uso de ensamblado en línea normalmente restringe el programa a sistemas que pueden emplear las instrucciones de ensamblaje específicas o tener una arquitectura coincidente.
Hay varias formas en las que un lenguaje o un compilador permite incluir un ensamblado en línea en un archivo de código fuente estándar. Uno de los métodos más fáciles es simplemente definir el inicio de un bloque de ensamblaje, después de lo cual todos los comandos se interpretan como ensamblaje directo. Algunos compiladores y entornos de desarrollo integrados (IDE) permiten que el código en línea utilice variables definidas en el programa o la función sin cargarlas explícitamente en los registros primero.
Otra forma en que se define el ensamblado en línea dentro de un archivo de origen es mediante el uso de una función dedicada exclusivamente al lenguaje ensamblador. En este caso, el código en línea generalmente no se puede combinar con un código que no es ensamblador, como un bucle de control o una declaración de retorno. Cuando se implementa de esta manera, la función en línea también generalmente necesita insertar y extraer variables explícitamente dentro y fuera de la pila para usar variables locales o pasar valores fuera de la función.
Uno de los usos más comunes del código ensamblador en línea es la optimización precisa para pequeños segmentos de un programa. Dependiendo de cómo se integre el código en línea, esto puede significar el uso de comandos de lenguaje más legibles por humanos envueltos alrededor de código en línea que realiza directamente alguna acción de manera muy rápida y eficiente. Además, si se conoce el sistema de destino, el código puede usar registros y comandos específicos del hardware que pueden hacer que el programa se ejecute mucho más rápido.
El ensamblaje en línea se puede usar para acceder a partes del sistema operativo, CPU o incluso puertos de hardware directamente cuando otros métodos pueden fallar o causar un error del sistema. Esto se puede utilizar para cambiar rápidamente los fotogramas en una tarjeta gráfica o para enviar señales directamente a una interrupción o puerto de hardware en particular. Sin embargo, uno de los peligros de usar el código ensamblador de esta manera es que los pequeños errores pueden ser difíciles de encontrar o hacer que el programa se bloquee inesperadamente en ciertos sistemas.