El ensamblador GNU , comúnmente conocido como gas o , es el ensamblador desarrollado por el Proyecto GNU . Es la fase final predeterminada de GCC , que genera código máquina a partir de la salida en lenguaje ensamblador del generador de código . Se utiliza para ensamblar las partes en lenguaje ensamblador del sistema operativo GNU y el núcleo Linux , así como diversos programas. Forma parte del paquete GNU Binutils .
El ejecutable de GAS se denomina , el nombre estándar para un ensamblador de Unix . GAS es multiplataforma y se ejecuta en y se ensambla para diversas arquitecturas informáticas . GAS es software libre publicado bajo la Licencia Pública General GNU v3.
Historia
La primera versión de GAS se publicó entre 1986 y 1987. [ 2 ] Fue escrita por Dean Elsner y era compatible con la arquitectura VAX . [ 2 ]
Sintaxis general
GAS admite una sintaxis general que funciona para todas las arquitecturas compatibles. Esta sintaxis general incluye directivas de ensamblador y un método para añadir comentarios. La sintaxis predeterminada es la sintaxis AT&T .
Directivas
GAS utiliza directivas de ensamblador (también conocidas como pseudooperaciones), que son palabras clave que comienzan con un punto y se comportan de manera similar a las directivas de preprocesador en el lenguaje de programación C. Si bien la mayoría de las directivas de ensamblador disponibles son válidas independientemente de la arquitectura de destino, algunas directivas dependen de la máquina. [ 3 ]
Desde la versión 2.10, se puede utilizar la sintaxis de Intel mediante el uso de la .intel_syntaxdirectiva. [ 4 ] [ 5 ] [ 6 ]
Comentarios
GAS admite dos estilos de comentarios. [ 7 ]
Multilínea
Al igual que en C, los comentarios de varias líneas comienzan y terminan con pares de barras diagonales y asteriscos simétricos:
/* comentario */Línea única
Los comentarios de una sola línea tienen diferentes formatos, que varían según la arquitectura para la que se estén diseñando.
- Símbolo de almohadilla (#) — i386 , x86-64 , i960 , 68HC11 , 68HC12 , VAX , V850 , M32R , PowerPC , MIPS , M680x0 y RISC-V
- Un punto y coma (;) — Familia AMD 29k , ARC , familia H8/300 , HPPA , PDP-11 , picoJava , Motorola y M32C
- El signo arroba (@) — ARM de 32 bits
- Una doble barra (//) — AArch64
- Una barra vertical (|) — M680x0
- Un signo de exclamación (!) — Renesas SH
Uso
Como etapa final de un popular conjunto de compiladores, el GNU Assembler (GAS), se utiliza ampliamente para compilar software libre y de código abierto moderno . GAS se usa frecuentemente como ensamblador en sistemas operativos Linux junto con otro software GNU. Una versión modificada de GAS también se encuentra en el paquete de herramientas de desarrollo de macOS .
Programa de ejemplo
Un programa estándar "¡Hola, mundo!" para Linux en IA-32 :
.global _start.text _start: movl $4 , %eax # 4 (código para la llamada al sistema "write") -> registro EAX movl $1 , %ebx # 1 (descriptor de archivo para stdout) -> EBX (primer argumento de la llamada al sistema) movl $msg , %ecx # dirección de 32 bits de la cadena msg -> ECX (segundo argumento) movl $len , %edx # longitud de la cadena msg -> EDX (tercer argumento) int $0x80 # interrupción con la ubicación 0x80 (128), que invoca el procedimiento de llamada al sistema del kernelmovl $1 , %eax # 1 ("exit") -> EAX movl $0 , %ebx # 0 (con éxito) -> EBX int $0x80 # ver .data anterior msg: .ascii "¡Hola, mundo!\n" # cadena ascii en línea len = . - msg # asignar (dirección actual - dirección de inicio del mensaje) al símbolo "len"Véase también
Referencias
- ↑ "La versión 2.46.1 de GNU Binutils ya está disponible" . 8 de junio de 2026. Consultado el 9 de junio de 2026 .
- ^ " El ensamblador GNU". CiteSeerX 10.1.1.32.4503 .
- ↑ "El ensamblador GNU - Directivas del ensamblador" . Archivado del original el 22 de febrero de 2012. Consultado el 13 de abril de 2008 .
- ↑ "Noticias del ensamblador GNU" .
Se ha implementado una nueva pseudooperación, .intel_syntax, para permitir que gas analice programas de ensamblador i386 con sintaxis Intel.
- ↑ "Sintaxis de AT&T frente a sintaxis de Intel" . Archivado del original el 20 de junio de 2011. Consultado el 28 de julio de 2014 .
- ↑ Ram Narayan (17 de octubre de 2007). "Ensambladores de Linux: una comparación de GAS y NASM" . IBM DeveloperWorks. Archivado del original el 3 de marzo de 2009. Consultado el 28 de julio de 2014 .
- ↑ Red Hat Inc. "Usando como" . Archivado del original el 20 de junio de 2011. Recuperado el 10 de enero de 2013 .
Enlaces externos
- Ensambladores
- Compiladores libres y de código abierto
- Software del Proyecto GNU
- Herramientas de programación Linux
- Herramientas de programación Unix