Comando as do Linux
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.
O 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. O 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:
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:
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. |
Comandos relacionados
ld – Editor de links para arquivos de objetos.