GNU Assembler
| GNU Assembler | |
|---|---|
| Desenvolvedor | Projeto GNU |
| Lançamento inicial | 1986 (40 anos) |
| Escrito em | C |
| Tipo | Assembler |
| Licença | GNU General Public License v3 |
| Website | www |
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
[editar | editar código]A primeira versão do GAS foi lançada em 1986–1987. Foi escrita por Dean Elsner e suportava a arquitetura VAX.
Sintaxe geral
[editar | editar código]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
[editar | editar código]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.[1]
Desde a versão 2.10, a sintaxe Intel pode ser usada através da diretiva .intel_syntax . [2] [3] [4]
Comentários
[editar | editar código]O GAS suporta dois estilos de comentários. [5]
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
[editar | editar código]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
[editar | editar código]- Conjunto de ferramentas GNU
- Biblioteca de Descritores de Arquivos Binários
- Comparação de montadores
- Lista de softwares e ferramentas assembly
Referências
[editar | editar código]- ↑ «The GNU Assembler - Assembler Directives». Consultado em 13 de abril de 2008. Arquivado do original em 22 de fevereiro de 2012
- ↑ «GNU Assembler News»
- ↑ «AT&T Syntax versus Intel Syntax». Consultado em 28 julho 2014. Arquivado do original em 20 junho 2011
- ↑ Ram Narayan (17 de outubro de 2007). «Linux assemblers: A comparison of GAS and NASM». IBM DeveloperWorks. Consultado em 28 julho 2014. Cópia arquivada em 3 março 2009
- ↑ Red Hat Inc. «Using as». Consultado em 10 de janeiro de 2013. Arquivado do original em 20 de junho de 2011
Ligações externas
[editar | editar código]- Sítio oficial
- Gas manual
- : the portable GNU assembler – Seção User commands. Manual do Linux
