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

@fileeeeeeeeee Leia 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 .

–alternate Comece no modo macro alternativo.
–compress-debug-sections Compactar 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-sections Não compacte as seções de depuração DWARF. Esse é o padrão.
-D Ignorado. Esta opção é aceita para compatibilidade de scripts com chamadas para outros montadores.
–debug-prefix-map old = new Ao montar arquivos no diretório antigo , registre as informações de depuração descrevendo-os como novos .
–defsym sym = valor Defina 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-debug Gere 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.
–gstabs Gere 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-2 Gere 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 = warning Emita um erro ou aviso para a diretiva ELF .size inválida.
–help Imprima um resumo das opções da linha de comandos e saia.
–target-help Imprima um resumo de todas as opções específicas de destino e saia.
-I dir Adicione o diretório dir à lista de pesquisa de diretivas “.include”.
-J Não avise sobre o excesso assinado.
-K Emita avisos quando as tabelas de diferenças forem alteradas para deslocamentos longos.
-L , –keep-locals Mantenha (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=number Defina a largura máxima, em palavras, da coluna de dados de saída para uma lista de montadores como número.
–listing-lhs-width2=number Defina 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=number Defina a largura máxima de uma linha de origem de entrada, conforme exibida em uma listagem, para numerar bytes.
–listing-cont-lines=number Defina o número máximo de linhas impressas em uma lista para uma única linha de entrada como número + 1.
-o objfile Nomeie a saída do arquivo de objeto como objfile.
-R Dobre 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-overheads Essa 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.
–statistics Imprima o espaço máximo (em bytes) e o tempo total (em segundos) usado pela montagem.
–strip-local-absolute Remova os símbolos absolutos locais da tabela de símbolos de saída.
-v , -version Imprima a versão como.
–version Imprima a versão como e saia.
-W , –no-warn Suprimir mensagens de aviso.
–fatal-warnings Trate os avisos como erros.
–warn Não suprima mensagens de aviso nem as trate como erros.
-W Ignorado.
-x Ignorado.
-Z Gere 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):

-EB Esta opção especifica que a saída gerada pelo assembler deve ser marcada como codificada para um processador big endian .
-EL Esta 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 cpu Esta 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-mdebug Habilita 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.
-relax Essa 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 , -noreplace Habilita 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.
-g Esta 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 , -32addr Essas 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 -EL Selecione 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-format Selecione qual arquitetura de ponto flutuante é o destino.
-mfloat-abi=abi Selecione qual ABI de ponto flutuante está em uso.
-mthumb Ative a decodificação de instruções somente em polegar.
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant Selecione qual procedimento de convenção de chamada está em uso.
-EB -EL Selecione a saída big endian ( -EB ) ou little endian ( -EL ).
-mthumb-interwork Especifique que o código foi gerado com a interoperabilidade entre o código Thumb e ARM em mente.
-k Especifique 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”.
-mfdpic Monte para o FDPIC ABI.
-mno-fdpic , -mnopic Desative -mfdpic .

Opções D10V

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

-O Otimize a saída paralelizando instruções.

Opções de D30V

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

-O Otimize a saída paralelizando instruções.
-n Avisar quando os nops são gerados.
-N Avisa 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:

-mepiphany Especifica que as instruções de 32 e 16 bits são permitidas. Este é o comportamento padrão.
-mepiphany16 Restringe 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 | –64 Selecione 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).

-n Por 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.
–divide Nas 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 = CPU Esta 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 .

-msse2avx Esta opção especifica que o assembler deve codificar instruções SSE com prefixo VEX.
-msse-check = none , -msse-check = aviso , -msse-check = erro Essas 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 = 256 Essas 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=intel Esta 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 = intel Esta opção especifica a sintaxe da instrução ao processar instruções. As diretivas ” .att_syntax ” e ” .intel_syntax ” terão precedência.
-mnaked-reg Esta 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 -AMC Especifique qual variante da arquitetura 960 é o destino.
-b Adicione código para coletar estatísticas sobre as ramificações obtidas.
-no-relax Nã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:

-mip2022ext Especifica que as instruções estendidas IP2022 são permitidas.
-mip2022 Restaura 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:

-m32c Monte as instruções do M32C.
-m16c Monte as instruções M16C (o padrão).
-relax Ative o suporte para relaxamentos no tempo do link.
-h-tick-hex Suporta 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):

–m32rx Especifique 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 –Wp Produza mensagens de aviso quando construções paralelas questionáveis ​​forem encontradas.
–no-warn-explicit-parallel-conflicts or –Wnp Nã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.

-eu Encurte 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 | -m5200 Especifique 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-68882 A 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-68851 A 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-pic Gere código independente da posição (ou dependente da posição). O padrão é -mpic .
-mall , -mall-extensions Ative todas as extensões do conjunto de instruções. Esse é o padrão.
-mno-extensions Desative todas as extensões do conjunto de instruções.
-mextension | -mno-extension Habilite (ou desabilite) uma extensão específica do conjunto de instruções.
-m cpu Ative as extensões do conjunto de instruções suportadas por uma CPU específica e desative todas as outras extensões.
-mmachine Habilite 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:

-mb Gere saída no formato “big endian”.
-ml Gere 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 | -mm9s12xg Especifique qual processador é o destino. O padrão é definido pela opção de configuração ao criar o assembler.
–xgate-ramoffset Instrua o vinculador a deslocar os endereços RAM do espaço de endereço S12X para o espaço de endereço XGATE.
-mshort Especifique para usar o ABI inteiro de 16 bits.
-mlong Especifique para usar o ABI inteiro de 32 bits.
-mshort-double Especifique para usar a ABI dupla de 32 bits.
-mlong-double Especifique para usar a ABI dupla de 64 bits.
–force-long-branches Os ramos relativos são transformados em absolutos. Isso envolve ramificações condicionais, ramificações incondicionais e ramificações em uma sub-rotina.
-S | –short-branches Não transforme ramificações relativas em absolutas quando o deslocamento estiver fora da faixa.
–strict-direct-mode Nã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-sintax Imprima a sintaxe da instrução em caso de erro.
–print-opcodes Imprima a lista de instruções com sintaxe e saia.
–generate-example Imprima 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 -Av9a Selecione 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 = v8plusa Para compatibilidade com o montador do Solaris v9. Essas opções são equivalentes a -Av8plus e -Av8plusa , respectivamente.
-colisão Avisar 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-mode Ative o modo de endereçamento estendido. Todos os endereços e realocações assumirão endereçamento estendido (geralmente 23 bits).
-mcpu = CPU_VERSION Define a versão da CPU que está sendo compilada.
-merrors-to-file NOME DO ARQUIVO Redirecione 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 num Esta 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.
-EB Gere saída no formato “big endian”.
-EL Gere saída no formato “little endian”.
-mips1, -mips2, -mips3, -mips4, -mips5, -mips32, -mips32r2, -mips64, -mips64r2 Gere 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 = CPU Gere código para uma CPU MIPS específica.
-mtune = cpu Programe e ajuste um determinado processador MIPS.
-mfix7000, -mno-fix7000 Faç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-mdebug Faç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-pdr Controlar a geração de seções “.pdr”.
-mgp32, -mfp32 Os 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-mips16 Gere 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-micromips Gere 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-smartmips Habilita 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-mips3d Gere 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-mdmx Gere 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-dsp Gere 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-dspr2 Gere 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-mt Gere 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-mcu Gere 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-floats A 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 = name Essa 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.

-nocpp como ignora esta opção. É aceito para compatibilidade com as ferramentas nativas.
–trap, –no-trap, –break, –no-break Controle 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.
-n Quando 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, -nojsri2bsr Ative 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, -nosifilter Ative 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 .
-relaxar Altere 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.
-EB Monte para um grande alvo endian.
-EL Monte para um pequeno alvo endian.

Opções do PowerPC

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

-a32 Gere ELF32 ou XCOFF32.
-a64 Gere ELF64 ou XCOFF64.
-K PIC Defina EF_PPC_RELOCATABLE_LIB nos sinalizadores ELF.
-mpwrx | -mpwr2 Gere código para POWER / 2 (RIOS2).
-mpwr Gerar código para POWER (RIOS1)
-m601 Gere código para o PowerPC 601.
-mppc, -mppc32, -m603, -m604 Gere código para o PowerPC 603/604.
-m403, -m405 Generate code for PowerPC 403/405.
-m440 Generate code for PowerPC 440. BookE and some 405 instructions.
-m464 Generate code for PowerPC 464.
-m476 Generate code for PowerPC 476.
-m7400, -m7410, -m7450, -m7455 Generate code for PowerPC 7400/7410/7450/7455.
-m750cl Generate code for PowerPC 750CL.
-mppc64, -m620 Generate code for PowerPC 620/625/630.
-me500, -me500x2 Generate code for Motorola e500 core complex.
-me500mc Generate code for Freescale e500mc core complex.
-me500mc64 Generate code for Freescale e500mc64 core complex.
-me5500 Generate code for Freescale e5500 core complex.
-me6500 Generate code for Freescale e6500 core complex.
-mspe Generate code for Motorola SPE instructions.
-mtitan Generate code for AppliedMicro Titan core complex.
-mppc64bridge Generate code for PowerPC 64, including bridge insns.
-mbooke Generate code for 32-bit BookE.
-ma2 Generate code for A2 architecture.
-me300 Generate code for PowerPC e300 family.
-maltivec Generate code for processors with AltiVec instructions.
-mvsx Generate code for processors with Vector-Scalar (VSX) instructions.
-mpower4, -mpwr4 Generate code for Power4 architecture.
-mpower5, -mpwr5, -mpwr5x Generate code for Power5 architecture.
-mpower6, -mpwr6 Generate code for Power6 architecture.
-mpower7, -mpwr7 Generate code for Power7 architecture.
-mcell Generate code for Cell Broadband Engine architecture.
-mcom Generate code Power/PowerPC common instructions.
-many Generate code for any architecture (PWR/PWRX/PPC).
-mregnames Allow symbolic names for registers.
-mno-regnames Do not allow symbolic names for registers.
-mrelocatable Support for GCC’s -mrelocatable option.
-mrelocatable-lib Support for GCC’s -mrelocatable-lib option.
-memb Set PPC_EMB bit in ELF flags.
-mlittle, -mlittle-endian, -le Generate code for a little endian machine.
-mbig, -mbig-endian, -be Generate code for a big endian machine.
-msolaris Generate code for Solaris .
-mno-solaris Do not generate code for Solaris.
-nops=count If 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, -m64 Select the word size, either 31/32 bits or 64 bits.
-mesa, -mzarch Select the architecture mode, either the Enterprise System Architecture (esa) or the z/Architecture mode (zarch).
-march= processor Specify which s390 processor variant is the target, g6, g6, z900, z990, z9-109, z9-ec, or z10.
-mregnames, -mno-regnames Allow or disallow symbolic names for registers.
-mwarn-areg-zero Warn 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= arch Enable (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-dsbt The -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=far The -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-pic The -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-endian Generate 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 | -m64 Select the word size, either 32 bits or 64 bits.
-EB | -EL Select 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-literals Control 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-literals Indicate 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-align Enable 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-longcalls Enable 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-transform Enable 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= newname Rename 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:

-z80 Assemble for Z80 processor.
-r800 Assemble for R800 processor.
-ignore-undocumented-instructions, -Wnud Assemble undocumented Z80 instructions that also work on R800 without warning.
-ignore-unportable-instructions, -Wnup Assemble all undocumented Z80 instructions without warning.
-warn-undocumented-instructions, -Wud Issue a warning for undocumented Z80 instructions that also work on R800.
-warn-unportable-instructions, -Wup Issue a warning for undocumented Z80 instructions that do not work on R800.
-forbid-undocumented-instructions, -Fud Trate todas as instruções não documentadas como erros.
-forbid-unportable-instructions, -Fup Trate instruções não documentadas do Z80 que não funcionam no R800 como erros.

ld – Editor de links para arquivos de objetos.

Categorias
Compartilhe esse post

Posts populares

Linux Force Security Cursos de linux e segurança da informação

Seu futuro na tecnologia começa agora! Não deixe essa chance escapar.