O GNU Assembler, comumente conhecido como gas ou as, é o assembler desenvolvido pelo GNU Project. É a etapa final padrão do GCC, gerando código de máquina a partir da saída em linguagem assembly do gerador de código. É usado para unir as partes em linguagem assembly do sistema operacional GNU e do kernel Linux, além de vários outros softwares. Faz parte do pacote GNU Binutils.

O executável GAS é nomeado as, sendo o nome padrão para um assembler Unix. É multiplataforma, ou seja, funciona e compila para diversas arquiteturas de computador. GAS é um software livre distribuído sob a GNU General Public License v3.

Contexto A primeira versão do GAS foi lançada em 1986–1987. Foi escrita por Dean Elsner e suportava a arquitetura VAX.

Sintaxe geral O GAS suporta uma sintaxe geral que funciona para todas as arquiteturas suportadas. A sintaxe geral inclui diretivas de montagem e um método para comentários. A sintaxe padrão é a sintaxe AT&T .

Diretivas O GAS usa diretivas de montagem (também conhecidas como pseudo-ops), que são palavras-chave que começam com um ponto e se comportam de forma semelhante às diretivas do pré-processador na linguagem de programação C.Embora a maioria das diretivas de montagem disponíveis sejam válidas independentemente da arquitetura de destino, algumas diretivas são dependentes da máquina.

Desde a versão 2.10, a sintaxe Intel pode ser usada através da diretiva .intel_syntax .

Comentários O GAS suporta dois estilos de comentários.

Multi-linhas

Assim como em C, os comentários multi-linhas começam e terminam com pares de barra-asterisco espelhados:/* comment */Linha única

Os comentários de linha única possuem alguns formatos diferentes, que variam de acordo com a arquitetura para a qual estão sendo montados.

Um jogo da velha (#) — i386, x86-64, i960, 68HC11, 68HC12, VAX, V850, M32R, PowerPC, MIPS, M680x0 e RISC-V; Um ponto e vírgula (;) — Família AMD 29k, ARC, família H8/300, HPPA, PDP-11, picoJava, Motorola e M32C; O símbolo @ — ARM de 32 bits; Uma barra dupla (//) — AArch64; Uma barra vertical (|) — M680x0; Um ponto de exclamação (!) — Renesas SH.

Uso Sendo a última etapa de um conjunto de compiladores popular nomeado GCC, o GNU Assembler é amplamente utilizado na compilação de softwares modernos de código aberto e livre . O GAS é frequentemente usado como assembler em sistemas operacionais Linux em conjunto com outros softwares GNU. Uma versão modificada do GAS também pode ser encontrada no pacote de ferramentas de desenvolvimento do macOS.

Um programa padrão para Linux em AMD64, mostrando, na tela, o texto "Hello, World!":.data msg: .asciz "Hello, World!\n" # .asciz adiciona '\0' ao final da string msg_len = . - msg # Retorna msg_len como o tamanho total de msg

.text .globl _start

_start: mov msg, %rsi # Copia o endereço inicial de msg para rsi mov msg_len, %rdx # Seta a quantidade de bytes à frente do endereço inicial que serão lidos

mov $1, %rax # Chamada de sistema de escrita mov $1, %rdi # Seta File Descriptor como o padrão syscall

mov $60, %rax # Chamada de sistema de saída mov $0, %rdx # Seta o código de erro pra 0 (nenhum) syscall

Ver também

Conjunto de ferramentas GNU Biblioteca de Descritores de Arquivos Binários Comparação de montadores Lista de softwares e ferramentas assembly

Referências

Ligações externas

Gas manual

Categoria:Ferramentas de programação para Unix Categoria:Ferramentas de programação para Linux Categoria:Software do Projeto GNU Categoria:Montadores Categoria:Assemblers