Ir para o conteúdo

GNU Assembler

Origem: Wikipédia, a enciclopédia livre.
GNU Assembler
DesenvolvedorProjeto GNU
Lançamento inicial1986 (40 anos)
Escrito emC
TipoAssembler
LicençaGNU General Public License v3
Websitewww.gnu.org/software/binutils/

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.

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.

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]

Referências

[editar | editar código]
  1. ↑ «The GNU Assembler - Assembler Directives». Consultado em 13 de abril de 2008. Arquivado do original em 22 de fevereiro de 2012
  2. ↑ «GNU Assembler News»
  3. ↑ «AT&T Syntax versus Intel Syntax». Consultado em 28 julho 2014. Arquivado do original em 20 junho 2011
  4. ↑ 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
  5. ↑ 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]
O Wikilivro X86 Assembly tem uma página intitulada GAS Syntax