fbpx

Comandos Linux – Comando as

Comando as do Linux

Atualizado: 05/04/2019 por Computer Hope

como comando

Nos sistemas operacionais Linux , o comando as inicia o assembler GNU .

Descrição

O programa as é realmente uma família de montadoras . Se você usa (ou já usou) o assembler GNU em uma arquitetura , deverá encontrar um ambiente bastante semelhante ao usá-lo em outra arquitetura. Cada versão tem muito em comum com as outras, incluindo formatos de arquivo de objeto , a maioria das diretivas do assembler (geralmente chamadas de pseudo-ops) e sintaxe do assembler.

como se destina principalmente a montar a saída do compilador GNU C ” gcc ” para uso do vinculador ” ld “. No entanto, tentamos fazer como montar corretamente tudo o que outros montadores da mesma máquina montariam. Quaisquer exceções são documentadas explicitamente. Isso não significa que sempre use a mesma sintaxe que outro assembler para a mesma arquitetura; por exemplo, conhecemos várias versões incompatíveis da sintaxe da linguagem de montagem 680×0.

Cada vez que você executa , ele monta exatamente um programa de origem . O programa de origem é composto de um ou mais arquivos. A entrada padrão também é um arquivo.

Você fornece como uma linha de comando que possui zero ou mais nomes de arquivos de entrada. Os arquivos de entrada são lidos (do nome do arquivo esquerdo para a direita). Um argumento de linha de comando (em qualquer posição) que não tenha significado especial é considerado um nome de arquivo de entrada.

Se você não fornecer nomes de arquivos, ele tentará ler um arquivo de entrada como entrada padrão, que normalmente é o seu terminal . Pode ser necessário digitar ctrl-D para informar, pois não há mais programa para montar.

Use ”  ” se precisar nomear explicitamente o arquivo de entrada padrão em sua linha de comandos.

Se a fonte estiver vazia, produz um arquivo de objeto pequeno e vazio.

as pode escrever avisos e mensagens de erro no arquivo de erro padrão (geralmente o seu terminal). Isso não deve acontecer quando um compilador é executado automaticamente. Os avisos relatam uma suposição feita para que, como poderia continuar montando um programa defeituoso; Os erros relatam um grave problema que interrompe a montagem.

Se você estiver chamando como através do compilador GNU C, poderá usar a opção -Wa para passar argumentos para o assembler. Os argumentos do assembler devem ser separados um do outro (e o -Wa ) por vírgulas. Por exemplo:

  gcc -c -g -O -Wa, -alh, -L file.c

Isso passa duas opções para o montador: -alh (emite uma listagem na saída padrão com alto nível e fonte de montagem) e -L (retém símbolos locais na tabela de símbolos).

Geralmente, você não precisa usar esse mecanismo -Wa , pois muitas opções de linha de comando do compilador são automaticamente passadas para o montador pelo compilador. Você pode chamar o driver do compilador GNU com a opção -v para ver exatamente quais opções ele passa para cada passo de compilação, incluindo o assembler.

Sintaxe

as [-a[cdghlns][=file]] [--alternate] [-D] [--compress-debug-sections] 
   [--nocompress-debug-sections] [--debug-prefix-map old=new] 
   [--defsym sym=val] [-f] [-g] [--gstabs] [--gstabs+] [--gdwarf-2] 
   [--help] [-I dir] [-J] [-K] [-L] [--listing-lhs-width=NUM] 
   [--listing-lhs-width2=NUM] [--listing-rhs-width=NUM] 
   [--listing-cont-lines=NUM] [--keep-locals] [-o objfile] [-R] 
   [--reduce-memory-overheads] [--statistics] [-v] [-version] 
   [--version] [-W] [--warn] [--fatal-warnings] [-w] [-x] [-Z] 
   [@FILE] [--size-check=[error|warning]] [--target-help] 
   [target-options] [--|files ...] 

Sintaxe

AArch64:

[-EB|-EL] [-mabi=ABI]

Alpha:

[-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] 
[-Gsize] [-F] [-32addr]

ARC:

[-marc[5|6|7|8]] [-EB|-EL]

ARM:

[-mcpu=processor[+extension...]] [-march=architecture[+extension...]] 
[-mfpu=floating-point-format] [-mfloat-abi=abi] [-meabi=ver] [-mthumb] 
[-EB|-EL] [-mapcs-32|-mapcs-26|-mapcs-float| -mapcs-reentrant] 
[-mthumb-interwork] [-k]

Blackfin:

[-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]

CRIS:

[--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | 
--emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | 
--march=common_v10_v32]

D10V:

[-O]

D30V:

[-O|-n|-N]

EPIPHANY:

[-mepiphany|-mepiphany16]

H8/300:

[-h-tick-hex]

i386:

[--32|--n32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]

i960:

[-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB| -AKC|-AMC] [-b] [-no-relax]

IA-64:

[-mconstant-gp|-mauto-pic] [-milp32|-milp64|-mlp64|-mp64] [-mle|mbe] 
[-mtune=itanium1|-mtune=itanium2] [-munwind-check=warning|-munwind-check=error] 
[-mhint.b=ok|-mhint.b=warning|-mhint.b=error] [-x|-xexplicit] 
[-xauto] [-xdebug]

IP2K:

[-mip2022|-mip2022ext]

M32C:

[-m32c|-m16c] [-relax] [-h-tick-hex]

M32R:

[--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]

M680X0:

[-l] [-m68000|-m68010|-m68020|...]

M68HC11:

[-m68hc11|-m68hc12|-m68hcs12|-mm9s12x|-mm9s12xg] [-mshort|-mlong] 
[-mshort-double|-mlong-double] [--force-long-branches] [--short-branches] 
[--strict-direct-mode] [--print-insn-syntax] [--print-opcodes] 
[--generate-example]

MCORE:

[-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]

MIPS:

[-nocpp] [-EL] [-EB] [-O[optimizationlevel]] [-g[debuglevel]] [-G num] 
[-KPIC] [-call_shared] [-non_shared] [-xgot [-mvxworks-pic] [-mabi=ABI] 
[-32] [-n32] [-64] [-mfp32] [-mgp32] [-march=CPU] [-mtune=CPU] [-mips1] 
[-mips2] [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2] [-mips64] 
[-mips64r2] [-construct-floats] [-no-construct-floats] [-trap] [-no-break] 
[-break] [-no-trap] [-mips16] [-no-mips16] [-mmicromips] [-mno-micromips] 
[-msmartmips] [-mno-smartmips] [-mips3d] [-no-mips3d] [-mdmx] [-no-mdmx] 
[-mdsp] [-mno-dsp] [-mdspr2] [-mno-dspr2] [-mmt] [-mno-mt] [-mmcu] 
[-mno-mcu] [-mfix7000] [-mno-fix7000] [-mfix-vr4120] [-mno-fix-vr4120] 
[-mfix-vr4130] [-mno-fix-vr4130] [-mdebug] [-no-mdebug] [-mpdr] [-mno-pdr]

MMIX:

[--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] 
[--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] 
[-x] [--linker-allocated-gregs]

PDP11:

[-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] 
[-mcpu] [-mmachine]

picoJava:

[-mb|-me]

PowerPC:

[-a32|-a64] [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|-m403|-m405| 
-m440|-m464|-m476|-m7400|-m7410|-m7450|-m7455|-m750cl|-mppc64| -m620|-me500|
-e500x2|-me500mc|-me500mc64|-me5500|-me6500|-mppc64bridge| -mbooke|-mpower4|
-mpr4|-mpower5|-mpwr5|-mpwr5x|-mpower6|-mpwr6| -mpower7|-mpw7|-ma2|-mcell|
-mspe|-mtitan|-me300|-mcom] [-many] [-maltivec|-mvsx] [-mregnames|
-mno-regnames] [-mrelocatable|-mrelocatable-lib|-K PIC] [-memb] [-mlittle|
-mlittle-endian|-le|-mbig|-mbig-endian|-be] [-msolaris|-mno-solaris] 
[-nops=count]

RX:

[-mlittle-endian|-mbig-endian] [-m32bit-ints|-m16bit-ints] [-m32bit-doubles|
-m64bit-doubles]

s390:

[-m31|-m64] [-mesa|-mzarch] [-march=CPU] [-mregnames|-mno-regnames] 
[-mwarn-areg-zero]

SCORE:

[-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] 
[-march=score7] [-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]

SPARC:

[-Av6|-Av7|-Av8|-Asparclet|-Asparclite -Av8plus|-Av8plusa|-Av9|-Av9a] 
[-xarch=v8plus|-xarch=v8plusa] [-bump] [-32|-64]

TIC54X:

[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] [-merrors-to-file 
<file name>|-me <file name>]

TIC6X:

[-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] 
[-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]

TILE-Gx:

[-m32|-m64][-EB][-EL]

Xtensa:

[--[no-]text-section-literals] [--[no-]absolute-literals] [--[no-]target-align] 
[--[no-]longcalls] [--[no-]transform] [--rename-section oldname=newname]

Z80:

[-z80] [-r800] [-ignore-undocumented-instructions] [-Wnud] 
[-ignore-unportable-instructions] [-Wnup] [-warn-undocumented-instructions] 
[-Wud] [-warn-unportable-instructions] [-Wup] 
[-forbid-undocumented-instructions] [-Fud] [-forbid-unportable-instructions] 
[-Fup]

Opções

@fileeeeeeeeeeLeia as opções de linha de comando do arquivo . As opções lidas são inseridas no lugar da opção original @ file . Se o arquivo não existir ou não puder ser lido, a opção será tratada literalmente e não removida.

As opções no arquivo são separadas por espaço em branco . Um caractere de espaço em branco pode ser incluído em uma opção colocando a opção inteira entre aspas simples ou duplas. Qualquer caractere (incluindo uma barra invertida) pode ser incluído prefixando o caractere a ser incluído em uma barra invertida. O próprio arquivo pode conter opções adicionais de @ arquivo ; essas opções serão processadas recursivamente .

-a [ cdghlmns ]Ative as listagens, de várias maneiras:

-ac : omite condicionais falsos

-ad: omite diretivas de depuração

-ag: inclui informações gerais, como versão e opções passadas

-ah: inclui fonte de alto nível

-al: inclui montagem

-am: inclui expansões de macro

-an: omite o processamento de formulários

-as: inclui símbolos

= file: define o nome do arquivo de listagem como file

Você pode combinar essas opções; por exemplo, use -aln para listagem de montagem sem processamento de formulários. A opção = file , se usada, deve ser a última. Por si só, -a padrão é -ahls .

–alternateComece no modo macro alternativo.
–compress-debug-sectionsCompactar seções de depuração DWARF usando zlib. As seções de depuração são renomeadas para começar com .zdebug e o arquivo de objeto resultante pode não ser compatível com vinculadores e utilitários de arquivo de objeto mais antigos.
–nocompress-debug-sectionsNão compacte as seções de depuração DWARF. Esse é o padrão.
-DIgnorado. Esta opção é aceita para compatibilidade de scripts com chamadas para outros montadores.
–debug-prefix-map old = newAo montar arquivos no diretório antigo , registre as informações de depuração descrevendo-os como novos .
–defsym sym = valorDefina o símbolo sym como valor antes de montar o arquivo de entrada. valor deve ser uma constante inteira. Como em C, um 0x inicial indica um valor hexadecimal e um 0 inicial indica um valor octal. O valor do símbolo pode ser substituído em um arquivo de origem através do uso de uma pseudo-op “.set”.
-f“fast” — pula o espaço em branco e pré-processamento de comentários (suponha que a origem seja a saída do compilador).
-g , –gen-debugGere informações de depuração para cada linha de origem do assembler usando o formato de depuração preferido pelo destino. Atualmente, isso significa STABS, ECOFF ou DWARF2.
–gstabsGere informações de depuração de punhaladas para cada linha de montador. Isso pode ajudar a depurar o código do assembler, se o depurador puder manipulá-lo.
–gstabs +Gere informações de depuração de punhaladas para cada linha de assembler, com extensões GNU que provavelmente apenas o gdb pode manipular e que podem fazer com que outros depuradores travem ou se recusem a ler seu programa. Isso pode ajudar a depurar o código do assembler. Atualmente, a única extensão GNU é o local do diretório de trabalho atual no momento da montagem.
–gdwarf-2Gere informações de depuração DWARF2 para cada linha do assembler. Isso pode ajudar a depurar o código do assembler, se o depurador puder manipulá-lo. Nota — esta opção é suportada apenas por alguns destinos, nem todos eles.
–size-check = erro , –size-check = warningEmita um erro ou aviso para a diretiva ELF .size inválida.
–helpImprima um resumo das opções da linha de comandos e saia.
–target-helpImprima um resumo de todas as opções específicas de destino e saia.
-I dirAdicione o diretório dir à lista de pesquisa de diretivas “.include”.
-JNão avise sobre o excesso assinado.
-KEmita avisos quando as tabelas de diferenças forem alteradas para deslocamentos longos.
-L , –keep-localsMantenha (na tabela de símbolos) símbolos locais. Esses símbolos começam com prefixos de rótulo local específicos do sistema, geralmente .L para sistemas ELF ou L para sistemas a.out tradicionais.
–listing-lhs-width=numberDefina a largura máxima, em palavras, da coluna de dados de saída para uma lista de montadores como número.
–listing-lhs-width2=numberDefina a largura máxima, em palavras, da coluna de dados de saída para linhas de continuação em uma lista de montadores como número.
–listing-rhs-width=numberDefina a largura máxima de uma linha de origem de entrada, conforme exibida em uma listagem, para numerar bytes.
–listing-cont-lines=numberDefina o número máximo de linhas impressas em uma lista para uma única linha de entrada como número + 1.
-o objfileNomeie a saída do arquivo de objeto como objfile.
-RDobre a seção de dados na seção de texto.

Defina o tamanho padrão das tabelas de hash do GAS para um número principal próximo a número. Aumentar esse valor pode reduzir o tempo que o montador leva para executar suas tarefas, às custas de aumentar os requisitos de memória do montador. Da mesma forma, reduzir esse valor pode reduzir os requisitos de memória à custa da velocidade.

–reduce-memory-overheadsEssa opção reduz os requisitos de memória do GAS, à custa de tornar os processos de montagem mais lentos. Atualmente, essa opção é sinônimo de –hash-size = 4051, mas no futuro poderá ter outros efeitos também.
–statisticsImprima o espaço máximo (em bytes) e o tempo total (em segundos) usado pela montagem.
–strip-local-absoluteRemova os símbolos absolutos locais da tabela de símbolos de saída.
-v , -versionImprima a versão como.
–versionImprima a versão como e saia.
-W , –no-warnSuprimir mensagens de aviso.
–fatal-warningsTrate os avisos como erros.
–warnNão suprima mensagens de aviso nem as trate como erros.
-WIgnorado.
-xIgnorado.
-ZGere um arquivo de objeto mesmo após erros.
 | files …Entrada padrão ou arquivos de origem a serem montados.

Opções

As seguintes opções estão disponíveis quando configuradas para o modo de 64 bits da arquitetura ARM (AArch64):

-EBEsta opção especifica que a saída gerada pelo assembler deve ser marcada como codificada para um processador big endian .
-ELEsta opção especifica que a saída gerada pelo assembler deve ser marcada como codificada para um processador little-endian.

Opções Alpha

As seguintes opções estão disponíveis quando configuradas para um processador Alpha :

-m cpuEsta opção especifica o processador de destino. Se for feita uma tentativa de montar uma instrução que não será executada no processador de destino, o assembler poderá expandir a instrução como uma macro ou emitir uma mensagem de erro. Esta opção é equivalente à diretiva “.arch”.

Os seguintes nomes de processador são reconhecidos: 21064, “21064a”, 21066, 21068, 21164, “21164a”, “21164pc”, 21264, “21264a”, “21264b”, “ev4”, “ev5”, “lca45″, ” ev5 “,” ev56 “,” pca56 “,” ev6 “,” ev67 “,” ev68 “. O nome especial “all” pode ser usado para permitir que o montador aceite instruções válidas para qualquer processador Alpha.

Para dar suporte à prática existente no OSF / 1 com relação a “.arch” e à prática existente no MILO (o carregador de inicialização do Linux ARC), os nomes numerados dos processadores (por exemplo, 21064) habilitam as instruções específicas do processador PALcode, enquanto as ” nomes “clássicos” (por exemplo, “ev4”) não.

-mdebug , -no-mdebugHabilita ou desabilita a geração do encapsulamento “.mdebug” para diretivas de punhaladas e descritores de procedimentos. O padrão é ativar automaticamente “.mdebug” quando a primeira diretiva de facadas é vista.
-relaxEssa opção força todas as realocações a serem colocadas no arquivo de objeto, em vez de economizar espaço e resolver algumas realocações no momento da montagem. Observe que esta opção não propaga toda a aritmética de símbolos no arquivo de objeto, porque nem toda a aritmética de símbolos pode ser representada. No entanto, a opção ainda pode ser útil em aplicativos específicos.
-replace , -noreplaceHabilita ou desabilita a otimização de chamadas de procedimento, tanto na assemblagem quanto no tempo do link. Essas opções estão disponíveis apenas para destinos do VMS e ” -replace ” é o padrão. Consulte a seção 1.4.1 do OpenVMS Linker Utility Manual.
-gEsta opção é usada quando o compilador gera informações de depuração. Quando o gcc está usando mips-tfile para gerar informações de depuração para o ECOFF, os rótulos locais devem ser passados ​​para o arquivo de objeto. Caso contrário, esta opção não terá efeito.
-Gsize
Um símbolo comum local maior que tamanho é colocado em “.bss”, enquanto símbolos menores são colocados em “.sbss”.
-F , -32addrEssas opções são ignoradas para compatibilidade com versões anteriores.

Opções de ARC

As seguintes opções estão disponíveis quando configuradas para um processador ARC:

-marc [ 5 | 6 7 8 ]Esta opção seleciona a variante do processador principal.
-EB -ELSelecione a saída big endian ( -EB ) ou little endian ( -EL ).

Opções do BRAÇO

As seguintes opções estão disponíveis quando configuradas para a família de processadores ARM :

-mcpu=processor[+extension…]Especifique qual variante do processador ARM é o destino.
-march=architecture[+extension…]Especifique qual variante da arquitetura do ARM é usada pelo destino.
-mfpu=floating-point-formatSelecione qual arquitetura de ponto flutuante é o destino.
-mfloat-abi=abiSelecione qual ABI de ponto flutuante está em uso.
-mthumbAtive a decodificação de instruções somente em polegar.
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrantSelecione qual procedimento de convenção de chamada está em uso.
-EB -ELSelecione a saída big endian ( -EB ) ou little endian ( -EL ).
-mthumb-interworkEspecifique que o código foi gerado com a interoperabilidade entre o código Thumb e ARM em mente.
-kEspecifique que o código PIC foi gerado.

Opções de Blackfin

As seguintes opções estão disponíveis quando configuradas para a família de processadores Blackfin:

-mcpu = processador [  sirevision ]Esta opção especifica o processador de destino. A sirenision opcional não é usada no assembler. É aqui que o GCC pode transmitir facilmente sua opção ” -mcpu = “. O assembler emitirá uma mensagem de erro se for feita uma tentativa de montar uma instrução que não será executada no processador de destino. Os seguintes nomes de processador são reconhecidos: “bf504”, “bf506”, “bf512”, “bf514”, “bf516”, “bf518”, “bf522”, “bf523”, “bf524”, “bf525”, “bf526” , “bf527”, “bf531”, “bf532”, “bf533”, “bf534”, “bf535” (ainda não implementado), “bf536”, “bf537”, “bf538”, “bf539”, “bf542”, “bf542m”, “bf544”, “bf544m”, “bf547”, “bf547m”, “bf548”, “bf548m”, “bf549”, “bf549m”, “bf561” e “bf592”.
-mfdpicMonte para o FDPIC ABI.
-mno-fdpic , -mnopicDesative -mfdpic .

Opções D10V

A opção a seguir está disponível quando configurada para um processador D10V:

-OOtimize a saída paralelizando instruções.

Opções de D30V

As seguintes opções estão disponíveis quando configuradas para um processador D30V:

-OOtimize a saída paralelizando instruções.
-nAvisar quando os nops são gerados.
-NAvisa quando é gerado um nop após uma instrução de multiplicação de 32 bits.

Opções de Epifania

As seguintes opções estão disponíveis quando configuradas para um processador Epiphany:

-mepiphanyEspecifica que as instruções de 32 e 16 bits são permitidas. Este é o comportamento padrão.
-mepiphany16Restringe as instruções permitidas apenas ao conjunto de 16 bits.

Opções i386

As seguintes opções estão disponíveis quando configuradas para um processador i386 :

–32 –x32 | –64Selecione o tamanho da palavra, 32 bits ou 64 bits. –32 implica na arquitetura Intel i386, enquanto –x32 e –64 implicam na arquitetura AMD x86-64 com tamanho de palavra de 32 ou 64 bits, respectivamente.

Essas opções estão disponíveis apenas com o formato de arquivo de objeto ELF e exigem a inclusão do suporte necessário ao BFD (em uma plataforma de 32 bits, é necessário adicionar –enable-64-bit-bfd para configurar, habilitar o uso de 64 bits e use x86-64 como plataforma de destino).

-nPor padrão, o x86 GAS substitui várias instruções nop usadas para alinhamento nas seções de código por instruções nop de vários bytes, como leal 0 (% esi, 1),% esi. Essa opção desativa a otimização.
–divideNas plataformas derivadas do SVR4, o caractere / é tratado como um caractere de comentário, o que significa que não pode ser usado em expressões. A opção –divide transforma / em um caractere normal. Isso não desativa / no início de uma linha que inicia um comentário, nem afeta o uso de # para iniciar um comentário.
-march=CPU[+EXTENSION…]Esta opção especifica o processador de destino. O assembler emitirá uma mensagem de erro se for feita uma tentativa de montar uma instrução que não será executada no processador de destino. Os seguintes nomes de processador são reconhecidos:

  • ” i8086 “
  • ” i186 “
  • ” i286 “
  • ” i386 “
  • ” i486 “
  • ” i586 “
  • ” i686 “
  • ” pentium “
  • ” pentiumpro “
  • ” pentiumii “
  • ” pentiumiii “
  • ” pentium4 “
  • ” prescott “
  • ” nocona “
  • ” core “
  • ” core2 “
  • ” corei7 “
  • ” l1om “
  • ” k1om “
  • ” k6 “
  • ” k6_2 “
  • ” atleta “
  • ” opteron “
  • ” k8 “
  • ” amdfam10 “
  • ” bdver1 “
  • ” bdver2 “
  • ” bdver3 “
  • ” btver1 “
  • ” btver2 “
  • ” generic32 “
  • ” generic64 “

Além do conjunto de instruções básicas, o assembler pode ser instruído a aceitar vários mnemônicos de extensão. Por exemplo, ” -march = i686 + sse4 + vmx ” estende i686 com sse4 e vmx. Atualmente, as seguintes extensões são suportadas:

  • ” 8087 “
  • ” 287 “
  • ” 387 “
  • ” no87 “
  • ” mmx “
  • ” nommx “
  • ” sse “
  • ” sse2 “
  • ” sse3 “
  • ” ssse3 “
  • ” sse4.1 “
  • ” sse4.2 “
  • ” sse4 “
  • ” nosse “
  • ” avx “
  • ” avx2 “
  • ” adx “
  • ” rdseed “
  • ” prfchw “
  • ” noavx “
  • ” vmx “
  • ” vmfunc “
  • ” smx “
  • ” xsave “
  • ” xsaveopt “
  • ” aes “
  • ” pclmul “
  • ” fsgsbase “
  • ” rdrnd “
  • ” f16c “
  • ” bmi2 “
  • ” fma “
  • ” movbe “
  • ” ept “
  • ” lzcnt “
  • ” hle “
  • ” rtm “
  • ” invpcid “
  • ” clflush “
  • ” lwp “
  • ” fma4 “
  • ” xop “
  • ” syscall “
  • ” rdtscp “
  • ” 3dnow “
  • ” 3dnowa “
  • ” sse4a “
  • ” sse5 “
  • ” svme “
  • ” abm “
  • ” cadeado “

Observe que, em vez de estender um conjunto de instruções básicas, os mnemônicos de extensão que começam com ” não ” revogam a respectiva funcionalidade.

Quando a diretiva ” .arch ” é usada com -march , a diretiva ” .arch ” terá precedência.

-mtune = CPUEsta opção especifica um processador para otimizar. Quando usado em conjunto com a opção -march , apenas instruções do processador especificado pela opção -march serão geradas.

Os valores válidos da CPU são idênticos à lista de processadores de -march = CPU .

-msse2avxEsta opção especifica que o assembler deve codificar instruções SSE com prefixo VEX.
-msse-check = none , -msse-check = aviso , -msse-check = erroEssas opções controlam se o montador deve verificar as instruções do SSE. -msse-check = none fará com que o assembler não verifique as instruções SSE, que é o padrão. -msse-check = warning fará com que o assembler emita um aviso para qualquer instrução SSE. -msse-check = error fará com que o assembler emita um erro para qualquer instrução SSE.
-mavxscalar = 128 , -mavxscalar = 256Essas opções controlam como o montador deve codificar as instruções escalares do AVX. -mavxscalar = 128 codificará instruções AVX escalares com comprimento de vetor de 128 bits, que é o padrão. -mavxscalar = 256 codificará instruções AVX escalares com comprimento de vetor de 256 bits.
-mmnemonic=att-mmnemonic=intelEsta opção especifica instruções mnemônicas para instruções correspondentes. As diretivas ” .att_mnemonic ” e ” .intel_mnemonic ” terão precedência.
-msyntax = att , -msyntax = intelEsta opção especifica a sintaxe da instrução ao processar instruções. As diretivas ” .att_syntax ” e ” .intel_syntax ” terão precedência.
-mnaked-regEsta opção especifica que os registros não exigem um prefixo % . As diretivas ” .att_syntax ” e ” .intel_syntax ” terão precedência.

Intel 80960 Opções

As seguintes opções estão disponíveis quando configuradas para o processador Intel 80960:

-ACA -ACA_A -ACB -ACC -AKA -AKB -AKC -AMCEspecifique qual variante da arquitetura 960 é o destino.
-bAdicione código para coletar estatísticas sobre as ramificações obtidas.
-no-relaxNão altere as instruções de comparação e ramificação para deslocamentos longos; erro, se necessário.

Opções IP2K

As seguintes opções estão disponíveis quando configuradas para a série Ubicom IP2K:

-mip2022extEspecifica que as instruções estendidas IP2022 são permitidas.
-mip2022Restaura o comportamento padrão, que restringe as instruções permitidas apenas às IP2022 básicas.

Opções M32C e M16C

As seguintes opções estão disponíveis quando configuradas para os processadores Renesas M32C e M16C:

-m32cMonte as instruções do M32C.
-m16cMonte as instruções M16C (o padrão).
-relaxAtive o suporte para relaxamentos no tempo do link.
-h-tick-hexSuporta constantes hexadecimais no estilo H’00, além do estilo 0x00.

Opções M32R

As seguintes opções estão disponíveis quando configuradas para a série Renesas M32R (anteriormente Mitsubishi M32R):

–m32rxEspecifique qual processador da família M32R é o destino. O padrão é normalmente o M32R, mas essa opção altera para o M32RX.
–warn-explicit-parallel-conflicts or –WpProduza mensagens de aviso quando construções paralelas questionáveis ​​forem encontradas.
–no-warn-explicit-parallel-conflicts or –WnpNão produza mensagens de aviso quando construções paralelas questionáveis ​​forem encontradas.

68000 Series Opções

As seguintes opções estão disponíveis quando configuradas para o Motorola 68000 series.

-euEncurte as referências a símbolos indefinidos, para uma palavra em vez de duas.
-m68000 | -m68008 -m68010 | -m68020 | -m68030 | -m68040 -m68060 | -m68302 -m68331 -m68332 -m68333 -m68340 -mcpu32 | -m5200Especifique qual processador na família 68000 é o destino. O padrão é normalmente o 68020, mas isso pode ser alterado no momento da configuração.
-m68881 -m68882 -mno-68881 | -mno-68882A máquina de destino possui (ou não) um coprocessador de ponto flutuante. O padrão é assumir um coprocessador para 68020, 68030 e cpu32. Embora o 68000 básico não seja compatível com o 68881, uma combinação dos dois pode ser especificada, pois é possível fazer a emulação das instruções do coprocessador com o processador principal.
-m68851 -mno-68851A máquina de destino possui (ou não) um coprocessador de unidade de gerenciamento de memória. O padrão é assumir uma MMU para 68020 e acima.

Opções PD11

As seguintes opções estão disponíveis quando configuradas para o DEC PDP -11:

-mpic | -mno-picGere código independente da posição (ou dependente da posição). O padrão é -mpic .
-mall , -mall-extensionsAtive todas as extensões do conjunto de instruções. Esse é o padrão.
-mno-extensionsDesative todas as extensões do conjunto de instruções.
-mextension | -mno-extensionHabilite (ou desabilite) uma extensão específica do conjunto de instruções.
-m cpuAtive as extensões do conjunto de instruções suportadas por uma CPU específica e desative todas as outras extensões.
-mmachineHabilite as extensões do conjunto de instruções suportadas por um modelo de máquina específico e desabilite todas as outras extensões.

PicoJava Opções

As seguintes opções estão disponíveis quando configuradas para um processador picoJava:

-mbGere saída no formato “big endian”.
-mlGere saída no formato “little endian”.

Opções 68HC11 e 68HC12

As seguintes opções estão disponíveis quando configuradas para as séries Motorola 68HC11 ou 68HC12.

-m68hc11 -m68hc12 | -m68hcs12 | -mm9s12x | -mm9s12xgEspecifique qual processador é o destino. O padrão é definido pela opção de configuração ao criar o assembler.
–xgate-ramoffsetInstrua o vinculador a deslocar os endereços RAM do espaço de endereço S12X para o espaço de endereço XGATE.
-mshortEspecifique para usar o ABI inteiro de 16 bits.
-mlongEspecifique para usar o ABI inteiro de 32 bits.
-mshort-doubleEspecifique para usar a ABI dupla de 32 bits.
-mlong-doubleEspecifique para usar a ABI dupla de 64 bits.
–force-long-branchesOs ramos relativos são transformados em absolutos. Isso envolve ramificações condicionais, ramificações incondicionais e ramificações em uma sub-rotina.
-S | –short-branchesNão transforme ramificações relativas em absolutas quando o deslocamento estiver fora da faixa.
–strict-direct-modeNão transforme o modo de endereçamento direto no modo de endereçamento estendido quando a instrução não suportar o modo de endereçamento direto.
–print-insn-sintaxImprima a sintaxe da instrução em caso de erro.
–print-opcodesImprima a lista de instruções com sintaxe e saia.
–generate-exampleImprima um exemplo de instrução para cada instrução possível e saia. Esta opção é útil apenas para testes como.

Opções SPARC

As seguintes opções estão disponíveis quando configuradas para a arquitetura SPARC :

-Av6 -Av7 -Av8 | -Asparclet | -Asparclite -Av8plus | -Av8plusa | -Av9 -Av9aSelecione explicitamente uma variante da arquitetura SPARC.

-Av8plus e -Av8plusa selecionam um ambiente de 32 bits. -Av9 e -Av9a selecionam um ambiente de 64 bits.

-Av8plusa e -Av9a ativam o conjunto de instruções SPARC V9 com extensões UltraSPARC.

-xarch = v8plus | -xarch = v8plusaPara compatibilidade com o montador do Solaris v9. Essas opções são equivalentes a -Av8plus e -Av8plusa , respectivamente.
-colisãoAvisar quando o montador mudar para outra arquitetura.

Opções de c54x

As seguintes opções estão disponíveis quando configuradas para a arquitetura ‘c54x.

-mfar-modeAtive o modo de endereçamento estendido. Todos os endereços e realocações assumirão endereçamento estendido (geralmente 23 bits).
-mcpu = CPU_VERSIONDefine a versão da CPU que está sendo compilada.
-merrors-to-file NOME DO ARQUIVORedirecione a saída de erro para um arquivo, para sistemas danificados que não suportam esse comportamento no shell.

Opções MIPS

As seguintes opções estão disponíveis quando configuradas para um processador MIPS .

-G numEsta opção define o maior tamanho de um objeto que pode ser referenciado implicitamente com o registro “gp”. É aceito apenas para destinos que usam o formato ECOFF, como um DECstation executando o Ultrix. O valor padrão é 8.
-EBGere saída no formato “big endian”.
-ELGere saída no formato “little endian”.
-mips1, -mips2, -mips3, -mips4, -mips5, -mips32, -mips32r2, -mips64, -mips64r2Gere código para um nível específico da Arquitetura do Conjunto de Instruções do MIPS. -mips1 é um alias para -march = r3000 , -mips2 é um alias para -march = r6000 , -mips3 é um alias para -march = r4000 e -mips4 é um alias para -march = r8000 . -mips5 , -mips32 , -mips32r2 , -mips64 e -mips64r2 correspondem aos processadores ISA genéricos MIPS V, MIPS32, MIPS32 Release 2, MIPS64 e MIPS64 Release 2 ISA, respectivamente.
-march = CPUGere código para uma CPU MIPS específica.
-mtune = cpuPrograme e ajuste um determinado processador MIPS.
-mfix7000, -mno-fix7000Faça com que nops sejam inseridos se a leitura do registro de destino de uma instrução mfhi ou mflo ocorrer nas duas instruções a seguir.
-mdebug, -no-mdebugFaça com que a saída de depuração no estilo stabs entre em uma seção .mdebug no estilo ECOFF, em vez das seções .stabs ELF padrão.
-mpdr, -mno-pdrControlar a geração de seções “.pdr”.
-mgp32, -mfp32Os tamanhos dos registradores são normalmente deduzidos do ISA e ABI, mas esses sinalizadores forçam um determinado grupo de registradores a serem tratados com 32 bits de largura o tempo todo. -mgp32 controla o tamanho dos registros de uso geral e -mfp32 controla o tamanho dos registros de ponto flutuante.
-mips16, -no-mips16Gere código para o processador MIPS 16. Isso é equivalente a colocar “.set mips16” no início do arquivo de montagem. -no-mips16 desativa esta opção.
-mmicromips, -mno-micromipsGere código para o processador microMIPS. Isso é equivalente a colocar “.set micromips” no início do arquivo de montagem. -mno-micromips desativa esta opção. Isso é equivalente a colocar “.set nomicromips” no início do arquivo de montagem.
-msmartmips, -mno-smartmipsHabilita a extensão SmartMIPS ao conjunto de instruções do MIPS32. Isso é equivalente a colocar “.set smartmips” no início do arquivo de montagem. -mno-smartmips desativa esta opção.
-mips3d, -no-mips3dGere código para a extensão específica do aplicativo MIPS-3D. Isso instrui o montador a aceitar as instruções do MIPS-3D. -no-mips3d desativa esta opção.
-mdmx, -no-mdmxGere código para a extensão específica do aplicativo MDMX. Isso instrui o montador a aceitar instruções MDMX. -no-mdmx desativa esta opção.
-mdsp, -mno-dspGere código para a Extensão Específica do Aplicativo DSP Versão 1. Isso instrui o montador a aceitar as instruções do DSP Versão 1. -mno-dsp desativa esta opção.
-mdspr2, -mno-dspr2Gere código para a extensão específica do aplicativo DSP Release 2. Esta opção implica -mdsp . Isso instrui o montador a aceitar as instruções do DSP Release 2. -mno-dspr2 desativa esta opção.
-mmt, -mno-mtGere código para a extensão específica do aplicativo MT. Isso instrui o montador a aceitar instruções de MT. -mno-mt desativa esta opção.
-mmcu, -mno-mcuGere código para a extensão específica do aplicativo MCU. Isso instrui o montador a aceitar instruções da MCU. -mno-mcu desativa esta opção.
–construct-floats, –no-construct-floatsA opção –no-construct-floats desativa a construção de constantes de ponto flutuante de largura dupla carregando as duas metades do valor nos dois registros de ponto flutuante de largura única que compõem o registro de largura dupla. Por padrão, –construct-floats é selecionado, permitindo a construção dessas constantes de ponto flutuante.
–emulation = nameEssa opção faz com que emule como configurado para algum outro destino, em todos os aspectos, incluindo formato de saída (escolhendo apenas ELF e ECOFF), manipulação de pseudo-opcodes que podem gerar informações de depuração ou armazenar informações da tabela de símbolos e endianness padrão. Os nomes de configuração disponíveis são: mipsecoff, mipself, mipslecoff, mipsbecoff, mipslelf, mipsbelf. Os dois primeiros não alteram a endianness padrão daquela do destino primário para o qual o assembler foi configurado; os outros alteram o padrão para little ou big-endian, conforme indicado pelo b ou l no nome. Usar -EB ou -EL substituirá a seleção de endianness em qualquer caso.

No momento, esta opção é suportada apenas quando o destino principal configurado para é um destino MIPS ELF ou ECOFF. Além disso, o destino primário ou outros especificados com –enable- target = … no momento da configuração devem incluir suporte para o outro formato, se ambos estiverem disponíveis. Por exemplo, a configuração do Irix 5 inclui suporte para ambos.

Eventualmente, esta opção suportará mais configurações, com um controle mais refinado sobre o comportamento do montador e será suportada por mais processadores.

-nocppcomo ignora esta opção. É aceito para compatibilidade com as ferramentas nativas.
–trap, –no-trap, –break, –no-breakControle como lidar com o excesso de multiplicação e a divisão por zero. –trap ou –no-break (que são sinônimos) fazem uma exceção de trap (e funcionam apenas para o nível 2 e superior da arquitetura do conjunto de instruções); –break ou –no-trap (também sinônimos, e o padrão) fazem uma exceção de interrupção.
-nQuando essa opção é usada, o aviso será emitido toda vez que gera uma instrução nop a partir de uma macro.

MCore Opções

As seguintes opções estão disponíveis quando configuradas para um processador MCore.

-jsri2bsr, -nojsri2bsrAtive ou desative a transformação JSRI em BSR. Por padrão, isso está ativado. A opção da linha de comandos -nojsri2bsr pode ser usada para desativá-la.
-sifilter, -nosifilterAtive ou desative o comportamento do filtro de silicone. Por padrão, isso está desativado. O padrão pode ser substituído pela opção da linha de comandos -sifilter .
-relaxarAltere as instruções de salto para deslocamentos longos.
-mcpu = [ 210 | 340 ]Selecione o tipo de CPU no hardware de destino. Isso controla quais instruções podem ser montadas.
-EBMonte para um grande alvo endian.
-ELMonte para um pequeno alvo endian.

Opções do PowerPC

As seguintes opções estão disponíveis quando configuradas para um processador PowerPC .

-a32Gere ELF32 ou XCOFF32.
-a64Gere ELF64 ou XCOFF64.
-K PICDefina EF_PPC_RELOCATABLE_LIB nos sinalizadores ELF.
-mpwrx | -mpwr2Gere código para POWER / 2 (RIOS2).
-mpwrGerar código para POWER (RIOS1)
-m601Gere código para o PowerPC 601.
-mppc, -mppc32, -m603, -m604Gere código para o PowerPC 603/604.
-m403, -m405Generate code for PowerPC 403/405.
-m440Generate code for PowerPC 440. BookE and some 405 instructions.
-m464Generate code for PowerPC 464.
-m476Generate code for PowerPC 476.
-m7400, -m7410, -m7450, -m7455Generate code for PowerPC 7400/7410/7450/7455.
-m750clGenerate code for PowerPC 750CL.
-mppc64, -m620Generate code for PowerPC 620/625/630.
-me500, -me500x2Generate code for Motorola e500 core complex.
-me500mcGenerate code for Freescale e500mc core complex.
-me500mc64Generate code for Freescale e500mc64 core complex.
-me5500Generate code for Freescale e5500 core complex.
-me6500Generate code for Freescale e6500 core complex.
-mspeGenerate code for Motorola SPE instructions.
-mtitanGenerate code for AppliedMicro Titan core complex.
-mppc64bridgeGenerate code for PowerPC 64, including bridge insns.
-mbookeGenerate code for 32-bit BookE.
-ma2Generate code for A2 architecture.
-me300Generate code for PowerPC e300 family.
-maltivecGenerate code for processors with AltiVec instructions.
-mvsxGenerate code for processors with Vector-Scalar (VSX) instructions.
-mpower4, -mpwr4Generate code for Power4 architecture.
-mpower5, -mpwr5, -mpwr5xGenerate code for Power5 architecture.
-mpower6, -mpwr6Generate code for Power6 architecture.
-mpower7, -mpwr7Generate code for Power7 architecture.
-mcellGenerate code for Cell Broadband Engine architecture.
-mcomGenerate code Power/PowerPC common instructions.
-manyGenerate code for any architecture (PWR/PWRX/PPC).
-mregnamesAllow symbolic names for registers.
-mno-regnamesDo not allow symbolic names for registers.
-mrelocatableSupport for GCC’s -mrelocatable option.
-mrelocatable-libSupport for GCC’s -mrelocatable-lib option.
-membSet PPC_EMB bit in ELF flags.
-mlittle, -mlittle-endian, -leGenerate code for a little endian machine.
-mbig, -mbig-endian, -beGenerate code for a big endian machine.
-msolarisGenerate code for Solaris .
-mno-solarisDo not generate code for Solaris.
-nops=countIf an alignment directive inserts more than count nops, put a branch at the beginning to skip execution of the nops.

s390 Options

The following options are available when as is configured for the s390 processor family.

-m31, -m64Select the word size, either 31/32 bits or 64 bits.
-mesa, -mzarchSelect the architecture mode, either the Enterprise System Architecture (esa) or the z/Architecture mode (zarch).
-march= processorSpecify which s390 processor variant is the target, g6, g6, z900, z990, z9-109, z9-ec, or z10.
-mregnames, -mno-regnamesAllow or disallow symbolic names for registers.
-mwarn-areg-zeroWarn whenever the operand for a base or index register has been specified but evaluates to zero.

TMS320C6000 Options

The following options are available when as is configured for a TMS320C6000 processor.

-march= archEnable (only) instructions from architecture arch. By default, all instructions are permitted.

The following values of arch are accepted: “c62x”, “c64x”, “c64x+”, “c67x”, “c67x+”, “c674x”.

-mdsbt, -mno-dsbtThe -mdsbt option causes the assembler to generate the “Tag_ABI_DSBT” attribute with a value of 1, indicating that the code is using DSBT addressing. The -mno-dsbt option, the default, causes the tag to have a value of 0, indicating that the code does not use DSBT addressing. The linker will emit a warning if objects of different type (DSBT and non-DSBT) are linked together.
-mpid=no, -mpid=near, -mpid=farThe -mpid= option causes the assembler to generate the “Tag_ABI_PID” attribute with a value indicating the form of data addressing used by the code. -mpid=no , the default, indicates position-dependent data addressing, -mpid=near indicates position-independent addressing with GOT accesses using near DP addressing, and -mpid=far indicates position-independent addressing with GOT accesses using far DP addressing. The linker will emit a warning if objects built with different settings of this option are linked together.
-mpic, -mno-picThe -mpic option causes the assembler to generate the “Tag_ABI_PIC” attribute with a value of 1, indicating that the code is using position-independent code addressing, The ” -mno-pic ” option, the default, causes the tag to have a value of 0, indicating position-dependent code addressing. The linker will emit a warning if objects of different type (position-dependent and position-independent) are linked together.
-mbig-endian, -mlittle-endianGenerate code for the specified endianness. The default is little-endian.

TILE-Gx Options

The following options are available when as is configured for a TILE-Gx processor:

-m32 | -m64Select the word size, either 32 bits or 64 bits.
-EB | -ELSelect the endianness, either big-endian ( -EB ) or little-endian ( -EL ).

Xtensa Options

The following options are available when as is configured for an Xtensa processor:

–text-section-literals | –no-text-section-literalsControl the treatment of literal pools. The default is –no-text-section-literals , which places literals in separate sections in the output file. This allows the literal pool to be placed in a data RAM /ROM. With –text-section-literals , the literals are interspersed in the text section to keep them as close as possible to their references. This may be necessary for large assembly files, where the literals would otherwise be out of range of the “L32R” instructions in the text section. These options only affect literals referenced via PC-relative “L32R” instructions; literals for absolute mode “L32R” instructions are handled separately.
–absolute-literals | –no-absolute-literalsIndicate to the assembler whether “L32R” instructions use absolute or PC-relative addressing. If the processor includes the absolute addressing option, the default is to use absolute “L32R” relocations. Otherwise, only the PC-relative “L32R” relocations can be used.
–target-align | –no-target-alignEnable or disable automatic alignment to reduce branch penalties at some expense in code size. This optimization is enabled by default. Note that the assembler will always align instructions like “LOOP” that have fixed alignment requirements.
–longcalls | –no-longcallsEnable or disable transformation of call instructions to allow calls across a greater range of addresses. This option should be used when call targets can potentially be out of range. It may degrade both code size and performance, but the linker can generally optimize away the unnecessary overhead when a call ends up within range. The default is –no-longcalls .
–transform | –no-transformEnable or disable all assembler transformations of Xtensa instructions, including both relaxation and optimization. The default is –transform ; –no-transform should only be used in the rare cases when the instructions must be exactly as specified in the assembly source. Using –no-transform causes out of range instruction operands to be errors.
–rename-section oldname= newnameRename the oldname section to newname. This option can be used multiple times to rename multiple sections.

Z80 Options

The following options are available when as is configured for a Z80 family processor:

-z80Assemble for Z80 processor.
-r800Assemble for R800 processor.
-ignore-undocumented-instructions, -WnudAssemble undocumented Z80 instructions that also work on R800 without warning.
-ignore-unportable-instructions, -WnupAssemble all undocumented Z80 instructions without warning.
-warn-undocumented-instructions, -WudIssue a warning for undocumented Z80 instructions that also work on R800.
-warn-unportable-instructions, -WupIssue a warning for undocumented Z80 instructions that do not work on R800.
-forbid-undocumented-instructions, -FudTrate todas as instruções não documentadas como erros.
-forbid-unportable-instructions, -FupTrate instruções não documentadas do Z80 que não funcionam no R800 como erros.

ld – Editor de links para arquivos de objetos.

13 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.