as - manual de referência, opções, exemplos de comandos


NOME

as AS - o montador GNU portátil.

SINOPSE

as [-a[cdghlns][=file]] [--alternate] [--compress-debug-sections] [--nocompress-debug-sections] [-D] [--dump-config] [--debug-prefix-map old=new] [--defsym sym=val] [--elf-stt-common=[no|yes]] [--emulation=name] [-f] [-g] [--gstabs] [--gstabs+] [--gdwarf-<N>] [--gdwarf-sections] [--gdwarf-cie-version=VERSION] [--generate-missing-build-notes=[no|yes]] [--gsframe] [--hash-size=N] [--help] [--target-help] [-I dir] [-J] [-K] [--keep-locals] [-L] [--listing-lhs-width=NUM] [--listing-lhs-width2=NUM] [--listing-rhs-width=NUM] [--listing-cont-lines=NUM] [--multibyte-handling=[allow|warn|warn-sym-only]] [--no-pad-sections] [-o objfile] [-R] [--sectname-subst] [--size-check=[error|warning]] [--statistics] [-v] [-version] [--version] [-W] [--warn] [--fatal-warnings] [-w] [-x] [-Z] [@FILE] [target-options] [--|files ...]

ALVO

Opções de destino AArch64:

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

Opções Alvo Alfa:

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

Opções de ARC de destino:

[-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]

Opções de ARM de destino:

[-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]

Opções de alvo Blackfin:

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

Opções de BPF de destino:

[-EL] [-EB]

Opções alvo do CRIS:

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

Opções C-SKY de destino:

[-march=arch] [-mcpu=cpu] [-EL] [-mlittle-endian] [-EB] [-mbig-endian] [-fpic] [-pic] [-mljump] [-mno-ljump] [-force2bsr] [-mforce2bsr] [-no-force2bsr] [-mno-force2bsr] [-jsri2bsr] [-mjsri2bsr] [-no-jsri2bsr ] [-mno-jsri2bsr] [-mnolrw ] [-mno-lrw] [-melrw] [-mno-elrw] [-mlaf ] [-mliterals-after-func] [-mno-laf] [-mno-literals-after-func] [-mlabr] [-mliterals-after-br] [-mno-labr] [-mnoliterals-after-br] [-mistack] [-mno-istack] [-mhard-float] [-mmp] [-mcp] [-mcache] [-msecurity] [-mtrust] [-mdsp] [-medsp] [-mvdsp]

Opções D10V de destino:

[-O]

Opções de alvo D30V:

[-O|-n|-N]

Opções alvo do EPIFHANY:

[-mepiphany|-mepiphany16]

Opções Target H8/300:

[-h-tick-hex]

Opções de destino i386:

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

Opções de destino 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]

Opções IP2K de destino:

[-mip2022|-mip2022ext]

Opções de alvo M32C:

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

Opções de alvo M32R:

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

Opções de alvo M680X0:

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

Opções de alvo 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]

Opções MCORE de destino:

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

Opções Meta Meta:

[-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] 

Opções de alvo MICROBLAZE:

Opções de MIPS de destino:

[-nocpp] [-EL] [-EB] [-O[optimization level]] [-g[debug level]] [-G num] [-KPIC] [-call_shared] [-non_shared] [-xgot [-mvxworks-pic] [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32] [-mfp64] [-mgp64] [-mfpxx] [-modd-spreg] [-mno-odd-spreg] [-march=CPU] [-mtune=CPU] [-mips1] [-mips2] [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2] [-mips32r3] [-mips32r5] [-mips32r6] [-mips64] [-mips64r2] [-mips64r3] [-mips64r5] [-mips64r6] [-construct-floats] [-no-construct-floats] [-mignore-branch-isa] [-mno-ignore-branch-isa] [-mnan=encoding] [-trap] [-no-break] [-break] [-no-trap] [-mips16] [-no-mips16] [-mmips16e2] [-mno-mips16e2] [-mmicromips] [-mno-micromips] [-msmartmips] [-mno-smartmips] [-mips3d] [-no-mips3d] [-mdmx] [-no-mdmx] [-mdsp] [-mno-dsp] [-mdspr2] [-mno-dspr2] [-mdspr3] [-mno-dspr3] [-mmsa] [-mno-msa] [-mxpa] [-mno-xpa] [-mmt] [-mno-mt] [-mmcu] [-mno-mcu] [-mcrc] [-mno-crc] [-mginv] [-mno-ginv] [-mloongson-mmi] [-mno-loongson-mmi] [-mloongson-cam] [-mno-loongson-cam] [-mloongson-ext] [-mno-loongson-ext] [-mloongson-ext2] [-mno-loongson-ext2] [-minsn32] [-mno-insn32] [-mfix7000] [-mno-fix7000] [-mfix-rm7000] [-mno-fix-rm7000] [-mfix-vr4120] [-mno-fix-vr4120] [-mfix-vr4130] [-mno-fix-vr4130] [-mfix-r5900] [-mno-fix-r5900] [-mdebug] [-no-mdebug] [-mpdr] [-mno-pdr]

Opções MMIX de destino:

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

Opções alvo do Nios II:

[-relax-all] [-relax-section] [-no-relax] [-EB] [-EL]

Opções de destino do NDS32:

[-EL] [-EB] [-O] [-Os] [-mcpu=cpu] [-misa=isa] [-mabi=abi] [-mall-ext] [-m[no-]16-bit] [-m[no-]perf-ext] [-m[no-]perf2-ext] [-m[no-]string-ext] [-m[no-]dsp-ext] [-m[no-]mac] [-m[no-]div] [-m[no-]audio-isa-ext] [-m[no-]fpu-sp-ext] [-m[no-]fpu-dp-ext] [-m[no-]fpu-fma] [-mfpu-freg=FREG] [-mreduced-regs] [-mfull-regs] [-m[no-]dx-regs] [-mpic] [-mno-relax] [-mb2bb]

Opções de destino PDP11:

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

Opções alvo do picoJava:

[-mb|-me]

Opções de PowerPC de destino:

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

Opções de PRU de destino:

[-link-relax] [-mnolink-relax] [-mno-warn-regname-label]

Opções RISC-V de destino:

[-fpic|-fPIC|-fno-pic] [-march=ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]

Opções de destino RL78:

[-mg10] [-m32bit-doubles|-m64bit-doubles]

Opções de RX de destino:

[-mlittle-endian|-mbig-endian] [-m32bit-doubles|-m64bit-doubles] [-muse-conventional-section-names] [-msmall-data-limit] [-mpid] [-mrelax] [-mint-register=number] [-mgcc-abi|-mrx-abi]

Opções do Target s390:

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

Opções de PONTUAÇÃO alvo:

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

Opções de SPARC de destino:

[-Av6|-Av7|-Av8|-Aleon|-Asparclet|-Asparclite -Av8plus|-Av8plusa|-Av8plusb|-Av8plusc|-Av8plusd -Av8plusv|-Av8plusm|-Av9|-Av9a|-Av9b|-Av9c -Av9d|-Av9e|-Av9v|-Av9m|-Asparc|-Asparcvis -Asparcvis2|-Asparcfmaf|-Asparcima|-Asparcvis3 -Asparcvisr|-Asparc5] [-xarch=v8plus|-xarch=v8plusa]|-xarch=v8plusb|-xarch=v8plusc -xarch=v8plusd|-xarch=v8plusv|-xarch=v8plusm|-xarch=v9 -xarch=v9a|-xarch=v9b|-xarch=v9c|-xarch=v9d|-xarch=v9e -xarch=v9v|-xarch=v9m|-xarch=sparc|-xarch=sparcvis -xarch=sparcvis2|-xarch=sparcfmaf|-xarch=sparcima -xarch=sparcvis3|-xarch=sparcvisr|-xarch=sparc5 -bump] [-32|-64] [--enforce-aligned-data][--dcti-couples-detect]

Opções de destino TIC54X:

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

Opções de destino TIC6X:

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

Opções TILE-Gx de destino:

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

Opções de destino do Visium:

[-mtune=arch]

Opções do Target Xtensa:

[--[no-]text-section-literals] [--[no-]auto-litpools] [--[no-]absolute-literals] [--[no-]target-align] [--[no-]longcalls] [--[no-]transform] [--rename-section oldname=newname] [--[no-]trampolines] [--abi-windowed|--abi-call0]

Opções do Target Z80:

[-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]

DESCRIÇÃO

GNU as é realmente uma família de montadores. Se você usa (ou já usou) o montador GNU em uma arquitetura, deve 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 de montador (geralmente chamadas de pseudo-ops) e sintaxe de montador.

as destina-se principalmente a montar a saída do compilador GNU C gcc para uso pelo vinculador ld. No entanto, tentamos fazer com que as monte corretamente tudo o que outros montadores da mesma máquina montariam. Quaisquer exceções são documentadas explicitamente. Isso não significa que pois sempre usa a mesma sintaxe de outro montador para a mesma arquitetura; por exemplo, sabemos de várias versões incompatíveis da sintaxe da linguagem assembly 680x0.

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

Você dá as uma linha de comando que tem zero ou mais nomes de arquivo de entrada. Os arquivos de entrada são lidos (do nome do arquivo da esquerda para a direita). Um argumento de linha de comando (em qualquer posição) que não tenha nenhum significado especial é considerado um nome de arquivo de entrada.

Se você não der nenhum nome de arquivo ao as, ele tentará ler um arquivo de entrada da entrada padrão as, que normalmente é o seu terminal. Você pode ter que digitar ctl-D para dizer já que não há mais programa para montar.

Use -- se precisar nomear explicitamente o arquivo de entrada padrão em sua linha de comando.

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

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

Se você estiver invocando as por meio do compilador GNU C, poderá usar a opção -Wa para passar argumentos para o montador. Os argumentos do montador devem ser separados entre si (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 para a saída padrão com fonte de alto nível e assembly) e -L (retém os símbolos locais na tabela de símbolos ).

Normalmente você não precisa usar este mecanismo -Wa, já que muitas opções de linha de comando do compilador são passadas automaticamente 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 passagem de compilação, incluindo o montador.)

OPÇÕES

  1. Leia as opções de linha de comando do arquivo. As opções lidas são inseridas no lugar da opção @arquivo original. Se 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ços em branco. Um caractere de espaço em branco pode ser incluído em uma opção envolvendo 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 com uma barra invertida. O próprio arquivo pode conter opções @arquivo adicionais; tais opções serão processadas recursivamente.

-a[cdghlmns]

Ative as listagens de várias maneiras:

-ac

omitir condicionais falsas

-ad

omitir diretivas de depuração

-ag

incluir informações gerais, como versão e opções passadas

-ah

incluir fonte de alto nível

-al

incluir montagem

-am

incluir expansões macro

-an

omitir processamento de formulários

-as

incluir símbolos

=file

definir o nome do arquivo de listagem

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

--alternate

Comece no modo macro alternativo.

--compress-debug-sections

Compacte as seções de depuração DWARF usando zlib com SHF_COMPRESSED do ELF ABI. O arquivo de objeto resultante pode não ser compatível com vinculadores mais antigos e utilitários de arquivo de objeto. Observe que se a compactação tornar uma determinada seção maior, ela não é compactada.

--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd

Essas opções controlam como as seções de depuração DWARF são compactadas. --compress-debug-sections=none é equivalente a --nocompress-debug-sections. --compress-debug-sections=zlib e --compress-debug-sections=zlib-gabi são equivalentes a --compress-debug-sections. --compress-debug-sections=zlib-gnu comprime seções de depuração DWARF usando o formato obsoleto zlib-gnu. As seções de depuração foram renomeadas para começar com .zdebug. --compress-debug-sections=zstd comprime seções de depuração DWARF usando zstd. Observação - se a compactação realmente tornar uma seção maior, ela não será compactada nem renomeada.

--nocompress-debug-sections

Não comprima as seções de depuração DWARF. Geralmente, esse é o padrão para todos os destinos, exceto x86/x86_64, mas uma opção de configuração de tempo pode ser usada para substituir isso.

-D

Ative a denugging em back-ends específicos de destino, se houver suporte. Caso contrário ignorado. Mesmo se ignorada, esta opção é aceita para compatibilidade de script 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 em novo.

--defsym sym=value

Defina o símbolo sym como value 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 dentro de um arquivo de origem por meio do uso de uma pseudoopção .set.

--dump-config

Exibe como o montador está configurado e sai.

--elf-stt-common=no
--elf-stt-common=yes

Essas opções controlam se o montador ELF deve gerar símbolos comuns com o tipo STT_COMMON. O padrão pode ser controlado por uma opção de configuração --enable-elf-stt-common.

--emulation=name

Se o montador estiver configurado para oferecer suporte a várias configurações de destino diferentes, essa opção poderá ser usada para selecionar o formulário desejado.

-f

rápido---ignore os espaços em branco e o pré-processamento de comentários (suponha que a fonte seja a saída do compilador).

-g
--gen-debug

Gere informações de depuração para cada linha de origem do montador usando qualquer formato de depuração preferido pelo destino. Atualmente, isso significa STABS, ECOFF ou DWARF2. Quando o formato de depuração é DWARF, as seções .debug_info e .debug_line são emitidas apenas quando o arquivo de montagem não gera uma.

--gstabs

Gere informações de depuração de stabs para cada linha do montador. Isso pode ajudar a depurar o código do montador, se o depurador puder lidar com isso.

--gstabs+

Gera informações de depuração de stabs para cada linha do montador, com extensões GNU que provavelmente apenas o gdb pode manipular e que podem fazer outros depuradores travarem ou se recusarem a ler seu programa. Isso pode ajudar a depurar o código do montador. Atualmente, a única extensão GNU é a localização do diretório de trabalho atual no momento da montagem.

--gdwarf-2

Gere informações de depuração DWARF2 para cada linha do montador. Isso pode ajudar a depurar o código do montador, se o depurador puder lidar com isso. Nota---esta opção é suportada apenas por alguns alvos, não por todos eles.

--gdwarf-3

Esta opção é a mesma que a opção --gdwarf-2, exceto que permite a possibilidade de geração de informações extras de depuração conforme a versão 3 da especificação DWARF. Nota - habilitar esta opção não garante a geração de nenhuma informação extra, a escolha para fazer isso é por destino.

--gdwarf-4

Esta opção é a mesma que a opção --gdwarf-2, exceto que ela permite a possibilidade de geração de informações extras de depuração de acordo com a versão 4 da especificação DWARF. Observação - habilitar esta opção não garante a geração de nenhuma informação extra, a escolha para fazer isso é por destino.

--gdwarf-5

Esta opção é a mesma que a opção --gdwarf-2, exceto que ela permite a possibilidade de geração de informações extras de depuração de acordo com a versão 5 da especificação DWARF. Observação - habilitar esta opção não garante a geração de nenhuma informação extra, a escolha para fazer isso é por destino.

--gdwarf-sections

Em vez de criar uma seção .debug_line, crie uma série de seções .debug_line.foo onde foo é o nome da seção de código correspondente. Por exemplo, uma seção de código chamada .text.func terá sua informação de número de linha anã colocada em uma seção chamada .debug_line.text.func. Se a seção de código for chamada apenas .text, a seção da linha de depuração ainda será chamada apenas .debug_line sem nenhum sufixo.

--gdwarf-cie-version=version

Controle qual versão do DWARF Common Information Entries (CIEs) é produzida. Quando esse sinalizador não é especificado, o padrão é a versão 1, embora alguns destinos possam modificar esse padrão. Outros valores possíveis para versão são 3 ou 4.

--generate-missing-build-notes=yes
--generate-missing-build-notes=no

Essas opções controlam se o montador ELF deve gerar notas de atributo GNU Build se nenhuma estiver presente nas fontes de entrada. O padrão pode ser controlado pela opção de configuração --enable-generate-build-notes.

--gsframe
--gsframe

Crie a seção .sframe das diretivas CFI.

--hash-size N

Ignorado. Suportado para compatibilidade de linha de comando com outros montadores.

--help

Imprima um resumo das opções de linha de comando 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 para diretivas .include.

-J

Não avise sobre estouro assinado.

-K

Emitir avisos quando as tabelas de diferenças forem alteradas para deslocamentos longos.

-L
--keep-locals

Mantenha (na tabela de símbolos) os símbolos locais. Esses símbolos começam com prefixos de rótulos locais 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 listagem de montador 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 listagem de montador para número.

--listing-rhs-width=number

Defina a largura máxima de uma linha de origem de entrada, conforme exibido em uma listagem, para número bytes.

--listing-cont-lines=number

Defina o número máximo de linhas impressas em uma listagem para uma única linha de entrada como número + 1.

--multibyte-handling=allow
--multibyte-handling=warn
--multibyte-handling=warn-sym-only
--multibyte-handling=warn_sym_only

Controla como o montador lida com caracteres multibyte na entrada. O padrão (que pode ser restaurado usando o argumento allow) é permitir tais caracteres sem reclamação. Usar o argumento warn fará com que o montador gere uma mensagem de aviso sempre que qualquer caractere multibyte for encontrado. O uso do argumento warn-sym-only só fará com que um aviso seja gerado quando um símbolo for definido com um nome que contenha caracteres multibyte. (Referências a símbolos indefinidos não gerarão um aviso).

--no-pad-sections

Pare o montador para preencher as extremidades das seções de saída para o alinhamento dessa seção. O padrão é preencher as seções, mas isso pode desperdiçar espaço que pode ser necessário em destinos com restrições de memória apertadas.

-o objfile

Nomeie a saída do arquivo-objeto de como objfile.

-R

Dobre a seção de dados na seção de texto.

--reduce-memory-overheads

Ignorado. Compatível com ferramentas que oferecem a mesma opção para o montador e o vinculador.

--sectname-subst

Respeite as sequências de substituição nos nomes das seções.

--size-check=error
--size-check=warning

Emita um erro ou aviso para a diretiva ELF .size inválida.

--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 objeto mesmo após erros.

-- | files ...

Entrada padrão ou arquivos de origem para montar.

As opções a seguir 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 montador deve ser marcada como sendo codificada para um processador big-endian.

-EL

Esta opção especifica que a saída gerada pelo montador deve ser marcada como sendo codificada para um processador little-endian.

-mabi=abi

Especifique qual ABI o código-fonte usa. Os argumentos reconhecidos são: ilp32 e lp64, que decidem o arquivo objeto gerado no formato ELF32 e ELF64, respectivamente. O padrão é lp64.

-mcpu=processor[+extension...]

Esta opção especifica o processador de destino. O montador 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: cortex-a34, cortex-a35, cortex-a53, cortex-a55 , córtex-a57, córtex-a65, córtex-a65ae, córtex-a72, córtex- a73, córtex-a75, córtex-a76, córtex-a76ae, córtex-a77, córtex-a78, córtex-a78ae, córtex-a78c, córtex-a510, córtex-a710 , ares, exynos-m1, falkor, neoverse-n1, neoverse- n2, neoverse-e1, neoverse-v1, qdf24xx, saphira, thunderx , vulcano, xgene1 xgene2, córtex-r82, córtex-x1 e córtex-x2.

O nome especial all pode ser usado para permitir que o montador aceite instruções válidas para qualquer processador suportado, incluindo todas as extensões opcionais. Além do conjunto básico de instruções, o montador pode ser instruído a aceitar ou restringir vários mnemônicos de extensão que estendem o processador. Se algumas implementações de um determinado processador puderem ter uma extensão, essas extensões serão habilitadas automaticamente. Conseqüentemente, você normalmente não terá que especificar nenhuma extensão adicional.

-march=architecture[+extension...]

Esta opção especifica a arquitetura de destino. O montador emitirá uma mensagem de erro se for feita uma tentativa de montar uma instrução que não será executada na arquitetura de destino. Os seguintes nomes de arquitetura são reconhecidos: armv8-a, armv8.1-a, armv8.2-a, armv8.3 -a, armv8.4-a armv8.5-a, armv8.6-a, armv8. 7-a, armv8.8-a, armv8-r, armv9-a, armv9.1- a, armv9.2-a e armv9.3-a. Se -mcpu e -march forem especificados, o montador usará a configuração para -mcpu. Se nenhum for especificado, o montador assumirá como padrão -mcpu=all. A opção de arquitetura pode ser estendida com as mesmas opções de extensão do conjunto de instruções da opção -mcpu. Ao contrário de -mcpu, as extensões nem sempre são ativadas por padrão,

-mverbose-error

Esta opção ativa mensagens de erro detalhadas para o gás AArch64. Essa opção é ativada por padrão.

-mno-verbose-error

Esta opção desativa as mensagens de erro detalhadas no gás AArch64.

As opções a seguir estão disponíveis quando configuradas para um processador Alpha.

-mcpu

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 montador pode 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 apoiar a prática existente em OSF/1 em relação a .arch e a prática existente em MILO (o bootloader Linux ARC), os nomes de processadores numerados (por exemplo, 21064) ativa as instruções PALcode específicas do processador, enquanto os nomes eletro-vlasic (por exemplo, ev4) não.

-mdebug
-no-mdebug

Habilita ou desabilita a geração do encapsulamento .mdebug para diretivas stabs e descritores de procedimento. O padrão é habilitar automaticamente .mdebug quando a primeira diretiva stabs for vista.

-relax

Esta opção força todas as relocações a serem colocadas no arquivo objeto, ao invés de economizar espaço e resolver algumas relocações na hora da montagem. Observe que esta opção não propaga toda aritmética de símbolo para o arquivo de objeto, porque nem toda aritmética de símbolo pode ser representada. No entanto, a opção ainda pode ser útil em aplicações específicas.

-replace
-noreplace

Habilita ou desabilita a otimização das chamadas de procedimento, tanto em assemblage quanto em tempo de link. Essas opções estão disponíveis apenas para destinos VMS e -replace é o padrão. Consulte a seção 1.4.1 do Manual do Utilitário OpenVMS Linker.

-g

Esta opção é usada quando o compilador gera informações de depuração. Quando gcc está usando mips-tfile para gerar informações de depuração para ECOFF, os rótulos locais devem ser passados para o arquivo de objeto. Caso contrário, esta opção não tem 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.

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

-mcpu=cpu

Esta opção seleciona a variante do processador principal.

-EB | -EL

Selecione a saída big-endian (-EB) ou little-endian (-EL).

-mcode-density

Ative as instruções de extensão de densidade de código.

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

-mcpu=processor[+extension...]

Especifique qual variante do processador ARM é o alvo.

-march=architecture[+extension...]

Especifique qual variante de arquitetura 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

Habilite a decodificação de instrução somente Thumb.

-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant

Selecione qual convenção de chamada de procedimento 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 tendo em mente a interoperabilidade entre o código Thumb e o ARM.

-mccs

Ativa o modo de compatibilidade de sintaxe de assembly do CodeComposer Studio.

-k

Especifique que o código PIC foi gerado.

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

-mcpu=processor[-sirevision]

Esta opção especifica o processador de destino. O sirevision opcional não é usado no assembler. É aqui que o GCC pode passar facilmente sua opção -mcpu=. O montador 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 processadores 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.

As opções a seguir estão disponíveis quando configuradas para a família de processadores BPF do kernel Linux.

@chapter Recursos Dependentes de BPF

Opções

-EB

Esta opção especifica que o montador deve emitir eBPF big-endian.

-EL

Esta opção especifica que o montador deve emitir eBPF little-endian.

Observe que, se nenhuma opção de endianness for especificada na linha de comando, o host endianness será usado. Consulte as páginas de informações para obter a documentação das opções específicas do CRIS.

As seguintes opções estão disponíveis quando configuradas para a família de processadores C-SKY.

-march=archname

Monte para arquitetura archname. A opção --help lista valores válidos para archname.

-mcpu=cpuname

Monte para arquitetura cpuname. A opção --help lista valores válidos para cpuname.

-EL
-mlittle-endian

Gera saída little-endian.

-EB
-mbig-endian

Gerar saída big-endian.

-fpic
-pic

Gera código independente de posição.

-mljump
-mno-ljump

Ativar/desativar a transformação das instruções de ramificação curtas jbf, jbt e jbr para jmpi. Esta opção é apenas para processadores V2. Ele é ignorado nos destinos CK801 e CK802, que não suportam a instrução jmpi e é ativado por padrão para outros processadores.

-mbranch-stub
-mno-branch-stub

Passe pelas realocações R_CKCORE_PCREL_IMM26BY2 para obter instruções bsr para o vinculador. Esta opção está disponível apenas para alvos C-SKY V2 ELF bare-metal, onde está habilitada por padrão. Ele não pode ser usado em código que será vinculado dinamicamente a bibliotecas compartilhadas.

-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr

Ativar/desativar a transformação de instruções jbsr para bsr. Esta opção está sempre habilitada (e -mno-force2bsr é ignorado) para alvos CK801/CK802. Também está sempre ativado quando -branch-stub está em vigor.

-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr

Ativar/desativar a transformação das instruções jsri para bsr. Essa opção é ativada por padrão.

-mnolrw
-mno-lrw

Ativar/desativar a transformação de instruções lrw em um par movih/ori.

-melrw
-mno-elrw

Ativar/desativar instruções lrw estendidas. Esta opção é habilitada por padrão para os processadores da série CK800.

-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func

Ativar/desativar a colocação de pools literais após cada função.

-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br

Ativar/desativar a colocação de pools literais após ramificações incondicionais. Essa opção é ativada por padrão.

-mistack
-mno-istack

Ativar/desativar instruções de pilha de interrupção. Esta opção é habilitada por padrão nos processadores CK801, CK802 e CK802.

As opções a seguir habilitam explicitamente determinadas instruções opcionais. Esses recursos também são habilitados implicitamente usando -mcpu= para especificar um processador que o suporte.

-mhard-float

Habilite as instruções de flutuação total.

-mmp

Habilite as instruções do multiprocessador.

-mcp

Ativa as instruções do coprocessador.

-mcache

Ativa a instrução de pré-busca de cache.

-msecurity

Habilite as instruções de segurança C-SKY.

-mtrust

Habilite as instruções de confiança C-SKY.

-mdsp

Habilite as instruções DSP.

-medsp

Habilitar instruções DSP aprimoradas.

-mvdsp

Habilite as instruções vetoriais DSP.

As opções a seguir 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.

As seguintes opções estão disponíveis quando configuradas para um processador H8/300. @chapter Recursos dependentes do H8/300

Opções

A versão Renesas H8/300 de as tem uma opção dependente da máquina:

-h-tick-hex

Suporta constantes hexadecimais do estilo H'00, além do estilo 0x00.

-mach=name

Define a variante da máquina H8300. Os seguintes nomes de máquina são reconhecidos: h8300h, h8300hn, h8300s, h8300sn, h8300sx e h8300sxn.

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 arquitetura Intel i386, enquanto --x32 e --64 implica arquitetura AMD x86-64 com 32 bits ou 64 bits tamanho de palavra de bit, respectivamente. Essas opções estão disponíveis apenas com o formato de arquivo de objeto ELF e exigem que o suporte BFD necessário tenha sido incluído (em uma plataforma de 32 bits, você deve adicionar --enable-64-bit-bfd para configurar 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 se um único byte nop (0x90) for explicitamente especificado como o byte de preenchimento para alinhamento.

--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 ou afeta o uso de # para iniciar um comentário.

-march=CPU[+EXTENSION...]

Esta opção especifica o processador de destino. O montador 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 processadores são reconhecidos: i8086, i186, i286, i386, i486, i586, i686, pentium, pentiumpro, pentiumii, pentiumiii, pentium4, prescott, nocona, core, core2 , corei7, iamcu, k6, k6_2, athlon, opteron , k8, amdfam10, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, btver1, btver2, generic32 e generic64. Além do conjunto básico de instruções, o montador 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.

As seguintes extensões são atualmente suportadas: 8087, 287, 387, 687, cmov, fxsr, mmx, sse, sse2, sse3, sse4a, ssse3, sse4.1, sse4.2, sse4, avx , avx2, adx, rdseed, prfchw, smap, mpx, sha, rdpid, ptwrite, cet, gfni, vaes, vpclmulqdq, prefetchwt1, clflushopt, se1, clwb, movdiri, movdir64b, enqcmd, serialize, tsxldtrk, kl, widekl, hreset, avx512f, avx512cd, avx512er, avx512pf, avx512vl, avx512bw, avx512dq, avx512ifma, avx512vbmi, avx512_4fmaps, avx512_4vnniw, avx512_vpopcntdq, avx512_vbmi2, avx512_vnni, avx512_bitalg, avx512_vp2intersect, tdx, avx512_bf16, avx_vnni , avx512_fp16, prefetchi, avx_ifma, avx_vnni_int8, cmpccxadd, wrmsrns , msrlist, avx_ne_convert, rao_int, amx_int8, amx_bf16, amx_fp16, amx_tile, vmx, vmfunc, smx, xsave, xsaveopt, xsavec, xsaves, aes, pclmul, fsgsbase, rdrnd, f16c, bmi2, fma, movbe, ept, lzcnt, popcnt, hle, rtm, tsx, invpcid, clflush, mwaitx, clzero, wbnoinvd, pconfig, waitpkg, uintr, cldemote, rdpru, mcommit, sev_es, lwp, fma4, xop, cx16 , syscall, rdtscp, 3dnow, 3dnowa, sse4a, sse5 , snp, invlpgb, tlbsync, svme e cadeado.

Observe que esses mnemônicos de extensão podem ser prefixados com no para revogar a funcionalidade respectiva (e qualquer dependente). Quando a diretiva .arch é usada com -march, a diretiva .arch prevalecerá.

-mtune=CPU

Esta opção especifica um processador para otimizar. Quando usado em conjunto com a opção -march, apenas as instruções do processador especificado pela opção -march serão geradas. Os valores válidos de CPU são idênticos à lista de processadores de -march=CPU.

-msse2avx

Esta opção especifica que o montador deve codificar as instruções SSE com o prefixo VEX.

-muse-unaligned-vector-move

Esta opção especifica que o montador deve codificar o movimento de vetor alinhado como movimento de vetor desalinhado.

-msse-check=none
-msse-check=warning
-msse-check=error

Essas opções controlam se o montador deve verificar as instruções SSE. -msse-check=none fará com que o montador não verifique as instruções SSE, que é o padrão. -msse-check=warning fará com que o montador emita um aviso para qualquer instrução SSE. -msse-check=error fará com que o montador emita um erro para qualquer instrução SSE.

-mavxscalar=128
-mavxscalar=256

Essas opções controlam como o montador deve codificar as instruções AVX escalares. -mavxscalar=128 codificará instruções AVX escalares com comprimento vetorial de 128 bits, que é o padrão. -mavxscalar=256 codificará instruções AVX escalares com comprimento vetorial de 256 bits. AVISO: Não use isso para código de produção - devido a errata da CPU, o código resultante pode não funcionar em determinados modelos.

-mvexwig=0
-mvexwig=1

Essas opções controlam como o montador deve codificar as instruções VEX.W-ignored (WIG). -mvexwig=0 codificará instruções WIG VEX com vex.w=0, que é o padrão. -mvexwig=1 irá codificar instruções WIG EVEX com vex.w=1. AVISO: Não use isso para código de produção - devido a errata da CPU, o código resultante pode não trabalhar em determinados modelos.

-mevexlig=128
-mevexlig=256
-mevexlig=512

Essas opções controlam como o montador deve codificar instruções EVEX de comprimento ignorado (LIG). -mevexlig=128 codificará instruções LIG EVEX com comprimento de vetor de 128 bits, que é o padrão. -mevexlig=256 e -mevexlig=512 codificarão instruções LIG EVEX com comprimento vetorial de 256 bits e 512 bits, respectivamente .

-mevexwig=0
-mevexwig=1

Essas opções controlam como o montador deve codificar as instruções EVEX w-ignored (WIG). -mevexwig=0 codificará as instruções WIG EVEX com evex.w=0, que é o padrão. -mevexwig=1 codificará instruções WIG EVEX com evex.w=1.

-mmnemonic=att
-mmnemonic=intel

Esta opção especifica instruções mnemônicas para correspondência de instruções. 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 requerem um prefixo %. As diretivas .att_syntax e .intel_syntax terão precedência.

-madd-bnd-prefix

Esta opção força o montador a adicionar o prefixo BND a todas as ramificações, mesmo que tal prefixo não tenha sido explicitamente especificado no código-fonte.

-mno-shared

No destino ELF, o montador normalmente otimiza as realocações não PLT em relação aos destinos de ramificação globais não fracos definidos com visibilidade padrão. A opção -mshared diz ao montador para gerar código que pode ir para uma biblioteca compartilhada onde todos os alvos de ramificação globais não fracos com visibilidade padrão podem ser antecipados. O código resultante é um pouco maior. Esta opção afeta apenas a manipulação de instruções de desvio.

-mbig-obj

No alvo PE/COFF esta opção força o uso do formato de arquivo de objeto grande, que permite mais de 32768 seções.

-momit-lock-prefix=no
-momit-lock-prefix=yes

Essas opções controlam como o montador deve codificar o prefixo de bloqueio. Esta opção destina-se a uma solução alternativa para processadores que falham no prefixo de bloqueio. Esta opção só pode ser usada com segurança com computadores single-core, single-thread -momit-lock-prefix=sim irá omitir todos os prefixos de bloqueio. -momit-lock-prefix=no codificará o prefixo de bloqueio como de costume, que é o padrão.

-mfence-as-lock-add=no
-mfence-as-lock-add=yes

Essas opções controlam como o montador deve codificar lfence, mfence e sfence. -mfence-as-lock-add=sim irá codificar lfence, mfence e sfence como lock addl $0x0, (%rsp ) no modo de 64 bits e lock addl $0x0, (%esp) no modo de 32 bits. -mfence-as-lock-add=no irá codificar lfence, mfence e sfence como de costume, que é o padrão.

-mrelax-relocations=no
-mrelax-relocations=yes

Essas opções controlam se o montador deve gerar realocações relaxadas, R_386_GOT32X, no modo de 32 bits, ou R_X86_64_GOTPCRELX e R_X86_64_REX_GOTPCRELX, no modo de 64 bits. -mrelax-relocations=sim irá gerar realocações relaxantes. -mrelax-relocations=no não gerará realocações relaxadas. O padrão pode ser controlado por uma opção de configuração --enable-x86-relax-relocations.

-malign-branch-boundary=NUM

Esta opção controla como o montador deve alinhar ramificações com prefixos de segmento ou NOP. NUM deve ser uma potência de 2. Deve ser 0 ou não menor que 16. As ramificações serão alinhadas dentro do limite de NUM bytes. -malign-branch-boundary=0, que é o padrão, não alinha ramificações.

-malign-branch=TYPE[+TYPE...]

Esta opção especifica os tipos de ramificações a serem alinhadas. TYPE é a combinação de jcc, que alinha saltos condicionais, fusível, que alinha saltos condicionais fundidos, jmp, que alinha saltos incondicionais, chamada que alinha chamadas, ret, que alinha rets, indireta, que alinha saltos indiretos e chamadas. O padrão é -malign-branch=jcc+fused+jmp.

-malign-branch-prefix-size=NUM

Esta opção especifica o número máximo de prefixos em uma instrução para alinhar ramificações. NUM deve estar entre 0 e 5. O NUM padrão é 5.

-mbranches-within-32B-boundaries

Esta opção alinha saltos condicionais, saltos condicionais fundidos e saltos incondicionais dentro do limite de 32 bytes com até 5 prefixos de segmento em uma instrução. É equivalente a -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. O padrão não alinha ramificações.

-mlfence-after-load=no
-mlfence-after-load=yes

Essas opções controlam se o montador deve gerar lfence após as instruções de carregamento. -mlfence-after-load=sim irá gerar lfence. -mlfence-after-load=no não irá gerar lfence, que é o padrão.

-mlfence-before-indirect-branch=none
-mlfence-before-indirect-branch=all
-mlfence-before-indirect-branch=register
-mlfence-before-indirect-branch=memory

Essas opções controlam se o montador deve gerar lfence antes de instruções indiretas near branch. -mlfence-before-indirect-branch=all gerará lfence antes da ramificação próxima indireta via registro e emitirá um aviso antes da ramificação próxima indireta via memória. Ele também define implicitamente -mlfence-before-ret=shl quando não há -mlfence-before-ret= explícito. -mlfence-before-indirect-branch=register irá gerar lfence antes da ramificação próxima indireta por meio do registro. -mlfence-before-indirect-branch=memory emitirá um aviso antes da ramificação próxima indireta via memória. -mlfence-before-indirect-branch=none não irá gerar lfence nem emitir aviso, que é o padrão. Observe que o lfence não será gerado antes da ramificação próxima indireta por meio do registro com -mlfence-after-load=sim, pois o lfence será gerado após o carregamento do registro de destino da ramificação.

-mlfence-before-ret=none
-mlfence-before-ret=shl
-mlfence-before-ret=or
-mlfence-before-ret=yes
-mlfence-before-ret=not

Essas opções controlam se o montador deve gerar lfence antes de ret. -mlfence-before-ret=ou irá gerar ou instrução com lfence. -mlfence-before-ret=shl/yes irá gerar instrução shl com lfence. -mlfence-before-ret=not irá gerar instruções not com lfence. -mlfence-before-ret=none não irá gerar lfence, que é o padrão.

-mx86-used-note=no
-mx86-used-note=yes

Essas opções controlam se o montador deve gerar notas de propriedade GNU_PROPERTY_X86_ISA_1_USED e GNU_PROPERTY_X86_FEATURE_2_USED. O padrão pode ser controlado pela opção de configuração --enable-x86-used-note.

-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz

Essas opções controlam como o montador deve codificar instruções EVEX somente SAE. -mevexrcig=rne codificará os bits RC da instrução EVEX com 00, que é o padrão. -mevexrcig=rd, -mevexrcig=ru e -mevexrcig=rz codificará instruções EVEX somente SAE com 01, 10 e 11 bits RC, respectivamente.

-mamd64
-mintel64

Esta opção especifica que o montador deve aceitar apenas AMD64 ou Intel64 ISA no modo de 64 bits. O padrão é aceitar ISAs comuns, somente Intel64 e AMD64.

-O0 | -O | -O1 | -O2 | -Os

Otimize a codificação de instruções com tamanho de instrução menor. -O e -O1 codificam instruções de carregamento de registro de 64 bits com imediato de 64 bits como instruções de carregamento de registro de 32 bits com imediatos de 31 ou 32 bits, codificam 64 Instruções de limpeza de registro de 32 bits com instruções de limpeza de registro de 32 bits, codificação de instruções de limpeza de registro vetorial VEX/EVEX de 256 bits/512 bits com instruções de limpeza de registro vetorial VEX de 128 bits, codificação de carregamento de registro vetorial EVEX de 128 bits/256 bits /armazenar instruções com registro de vetor VEX carregar/armazenar instruções e codificar instruções lógicas inteiras compactadas EVEX de 128 bits/256 bits com lógicas inteiras compactadas VEX de 128 bits/256 bits. -O2 inclui a otimização -O1 e codifica instruções de limpeza de registro de vetor EVEX de 256 bits/512 bits com instruções de limpeza de registro de vetor EVEX de 128 bits. No modo de 64 bits, as instruções codificadas em VEX com operandos de origem comutativos também terão seus operandos de origem trocados se isso permitir o uso do formulário de prefixo VEX de 2 bytes em vez do de 3 bytes. Certas formas de AND e OR com o mesmo operando (registro) especificado duas vezes também serão alteradas para TEST. -Os inclui otimização -O2 e codifica testes de registro de 16 bits, 32 bits e 64 bits com teste de registro imediato de 8 bits com imediato. -O0 desativa essa otimização.

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

-mip2022ext

Especifica que as instruções IP2022 estendidas são permitidas.

-mip2022

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

As opções a seguir 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

Habilite o suporte para relaxamentos de tempo de link.

-h-tick-hex

Suporta constantes hexadecimais do estilo H'00, além do estilo 0x00.

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 alvo. O padrão é normalmente o M32R, mas esta opção o altera para o M32RX.

--warn-explicit-parallel-conflicts or --Wp

Produza mensagens de aviso quando forem encontradas construções paralelas questionáveis.

--no-warn-explicit-parallel-conflicts or --Wnp

Não produza mensagens de aviso quando forem encontradas construções paralelas questionáveis.

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

-l

Reduza as referências a símbolos indefinidos, a uma palavra em vez de duas.

-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200

Especifique qual processador da família 68000 é o alvo. 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 tem (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 tem (ou não) um coprocessador de unidade de gerenciamento de memória. O padrão é assumir um MMU para 68020 e superior.

As opções a seguir estão disponíveis quando configuradas para um processador Altera Nios II.

-relax-section

Substitua as ramificações fora do intervalo identificadas por sequências jmp relativas ao PC quando possível. As sequências de código geradas são adequadas para uso em código independente de posição, mas há um limite prático no intervalo de ramificação estendida devido ao comprimento das sequências. Esta opção é o padrão.

-relax-all

Substitua as instruções de ramificação não determináveis para estarem no intervalo e todas as instruções de chamada pelas sequências jmp e callr (respectivamente). Esta opção gera realocações absolutas em relação aos símbolos de destino e não é apropriada para código independente de posição.

-no-relax

Não substitua nenhuma ramificação ou chamada.

-EB

Gerar saída big-endian.

-EL

Gera saída little-endian. Este é o padrão.

-march=architecture

Esta opção especifica a arquitetura de destino. O montador emite uma mensagem de erro se for feita uma tentativa de montar uma instrução que não será executada na arquitetura de destino. Os seguintes nomes de arquitetura são reconhecidos: r1, r2. O padrão é r1.

As opções a seguir estão disponíveis quando configuradas para um processador PRU.

-mlink-relax

Suponha que LD otimizaria as instruções LDI32 verificando os 16 bits superiores da expressão. Se forem todos zeros, o LD encurtaria a instrução LDI32 para um único LDI. Nesse caso, as produzirá realocações DIFF para expressões diff.

-mno-link-relax

Suponha que LD não otimizaria as instruções LDI32. Como consequência, relocações DIFF não serão emitidas.

-mno-warn-regname-label

Não avise se um nome de rótulo corresponder a um nome de registro. Normalmente, os programadores montadores desejam que esse aviso seja emitido. Os compiladores C podem querer desligar isso.

As opções a seguir 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 uma DECstation executando Ultrix. O valor padrão é 8.

-EB

Gera saída em formato big endian.

-EL

Gera saída no formato little endian.

-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips32r3
-mips32r5
-mips32r6
-mips64
-mips64r2
-mips64r3
-mips64r5
-mips64r6

Gera código para um determinado nível de arquitetura do conjunto de instruções MIPS. -mips1 é um apelido para -march=r3000, -mips2 é um apelido para -march=r6000, -mips3 é um apelido para -march=r4000 e -mips4 é um apelido para -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5, e -mips64r6 correspondem ao genérico MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5 e MIPS64 Libere 6 processadores ISA, respectivamente.

-march=cpu

Gera código para uma CPU MIPS específica.

-mtune=cpu

Programe e ajuste para uma CPU MIPS específica.

-mfix7000
-mno-fix7000

Faz com que nops sejam inseridos se a leitura do registrador de destino de uma instrução mfhi ou mflo ocorrer nas duas instruções seguintes.

-mfix-rm7000
-mno-fix-rm7000

Faz com que nops sejam inseridos se uma instrução dmult ou dmultu for seguida por uma instrução load.

-mfix-r5900
-mno-fix-r5900

Não tente escalonar a instrução anterior no slot de atraso de uma instrução de desvio colocada no final de um loop curto de seis instruções ou menos e sempre escalonar uma instrução nop lá. O bug de loop curto sob certas condições faz com que os loops sejam executados apenas uma ou duas vezes, devido a um bug de hardware no chip R5900.

-mdebug
-no-mdebug

Faz com que a saída de depuração estilo stabs vá para uma seção .mdebug estilo ECOFF em vez das seções .stabs ELF padrão.

-mpdr
-mno-pdr

Geração de controle de seções .pdr.

-mgp32
-mfp32

Os tamanhos dos registradores são normalmente inferidos do ISA e ABI, mas esses sinalizadores forçam um determinado grupo de registradores a ser tratado como 32 bits de largura o tempo todo. -mgp32 controla o tamanho dos registradores de uso geral e -mfp32 controla o tamanho dos registradores de ponto flutuante.

-mgp64
-mfp64

Os tamanhos de registro são normalmente inferidos do ISA e ABI, mas esses sinalizadores forçam um determinado grupo de registros a ser tratado como 64 bits de largura o tempo todo. -mgp64 controla o tamanho dos registradores de uso geral e -mfp64 controla o tamanho dos registradores de ponto flutuante.

-mfpxx

Os tamanhos dos registradores são normalmente inferidos do ISA e ABI, mas usar este sinalizador em combinação com -mabi=32 habilita uma variante ABI que funcionará corretamente com registradores de ponto flutuante com largura de 32 ou 64 bits .

-modd-spreg
-mno-odd-spreg

Habilita o uso de operações de ponto flutuante em registradores de precisão única ímpares quando suportados pelo ISA. -mfpxx implica -mno-odd-spreg, caso contrário, o padrão é -modd-spreg.

-mips16
-no-mips16

Gere código para o processador MIPS 16. Isso é equivalente a colocar .module mips16 no início do arquivo de montagem. -no-mips16 desativa esta opção.

-mmips16e2
-mno-mips16e2

Habilite o uso de instruções MIPS16e2 no modo MIPS16. Isso é equivalente a colocar .module mips16e2 no início do arquivo de montagem. -mno-mips16e2 desativa esta opção.

-mmicromips
-mno-micromips

Gere código para o processador microMIPS. Isso é equivalente a colocar .module micromips no início do arquivo de montagem. -mno-micromips desativa esta opção. Isso é equivalente a colocar .module nomicromips no início do arquivo de montagem.

-msmartmips
-mno-smartmips

Habilita a extensão SmartMIPS para o conjunto de instruções MIPS32. Isso é equivalente a colocar .module smartmips no início do arquivo de montagem. -mno-smartmips desativa esta opção.

-mips3d
-no-mips3d

Gere o código para a extensão específica do aplicativo MIPS-3D. Isso diz ao montador para 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 diz ao montador para aceitar as instruções MDMX. -no-mdmx desativa esta opção.

-mdsp
-mno-dsp

Gere o código para a extensão específica do aplicativo DSP Release 1. Isso diz ao montador para aceitar as instruções do DSP Release 1. -mno-dsp desativa esta opção.

-mdspr2
-mno-dspr2

Gere o código para a Extensão Específica do Aplicativo DSP Release 2. Esta opção implica -mdsp. Isso diz ao montador para aceitar as instruções do DSP Release 2. -mno-dspr2 desativa esta opção.

-mdspr3
-mno-dspr3

Gere o código para a extensão específica do aplicativo DSP Release 3. Esta opção implica -mdsp e -mdspr2. Isso diz ao montador para aceitar as instruções do DSP Release 3. -mno-dspr3 desativa esta opção.

-mmsa
-mno-msa

Gere o código para a extensão de arquitetura MIPS SIMD. Isso diz ao montador para aceitar as instruções do MSA. -mno-msa desativa esta opção.

-mxpa
-mno-xpa

Gere o código para a extensão MIPS eXtended Physical Address (XPA). Isso diz ao montador para aceitar as instruções XPA. -mno-xpa desativa esta opção.

-mmt
-mno-mt

Gere código para a extensão específica do aplicativo MT. Isso diz ao montador para aceitar as instruções MT. -mno-mt desativa esta opção.

-mmcu
-mno-mcu

Gere o código para a extensão específica do aplicativo MCU. Isso diz ao montador para aceitar as instruções do MCU. -mno-mcu desativa esta opção.

-mcrc
-mno-crc

Gere o código para a extensão específica do aplicativo de verificação de redundância cíclica (CRC) do MIPS. Isso diz ao montador para aceitar as instruções CRC. -mno-crc desativa esta opção.

-mginv
-mno-ginv

Gere código para a Extensão Específica do Aplicativo Global INValidate (GINV). Isso diz ao montador para aceitar as instruções GINV. -mno-ginv desativa esta opção.

-mloongson-mmi
-mno-loongson-mmi

Gerar código para a extensão específica do aplicativo Loongson MultiMedia extensions Instructions (MMI). Isso diz ao montador para aceitar as instruções MMI. -mno-loongson-mmi desativa esta opção.

-mloongson-cam
-mno-loongson-cam

Gere o código para as instruções da Loongson Content Address Memory (CAM). Isso diz ao montador para aceitar as instruções Loongson CAM. -mno-loongson-cam desativa esta opção.

-mloongson-ext
-mno-loongson-ext

Gere código para as instruções Loongson EXTensions (EXT). Isso diz ao montador para aceitar as instruções Loongson EXT. -mno-loongson-ext desativa esta opção.

-mloongson-ext2
-mno-loongson-ext2

Gere código para as instruções Loongson EXTensions R2 (EXT2). Esta opção implica -mloongson-ext. Isso diz ao montador para aceitar as instruções Loongson EXT2. -mno-loongson-ext2 desativa esta opção.

-minsn32
-mno-insn32

Use apenas codificações de instrução de 32 bits ao gerar código para o processador microMIPS. Esta opção inibe o uso de quaisquer instruções de 16 bits. Isso é equivalente a colocar .set insn32 no início do arquivo de montagem. -mno-insn32 desativa esta opção. Isso é equivalente a colocar .set noinsn32 no início do arquivo de montagem. Por padrão, -mno-insn32 é selecionado, permitindo que todas as instruções sejam usadas.

--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.

--relax-branch
--no-relax-branch

A opção --relax-branch permite o relaxamento de ramificações fora do intervalo. Por padrão, --no-relax-branch é selecionado, fazendo com que qualquer ramificação fora do intervalo produza um erro.

-mignore-branch-isa
-mno-ignore-branch-isa

Ignore as verificações de ramificação para transições inválidas entre os modos ISA. A semântica das ramificações não fornece uma troca de modo ISA, portanto, na maioria dos casos, o modo ISA para o qual uma ramificação foi codificada deve ser o mesmo que o modo ISA do rótulo de destino da ramificação. Portanto, o GAS implementou verificações que verificam na montagem da ramificação se os dois modos ISA correspondem. -mignore-branch-isa desativa essas verificações. Por padrão, -mno-ignore-branch-isa é selecionado, fazendo com que qualquer ramificação inválida que requeira uma transição entre os modos ISA produza um erro.

-mnan=encoding

Selecione entre o formato de codificação NaN IEEE 754-2008 (-mnan=2008) ou legado (-mnan=legacy). O último é o padrão.

--emulation=name

Esta opção era usada anteriormente para alternar entre a saída ELF e ECOFF em destinos como IRIX 5 que suportavam ambos. O suporte MIPS ECOFF foi removido no GAS 2.24, então a opção agora tem pouco propósito. Ele é mantido para compatibilidade com versões anteriores. Os nomes de configuração disponíveis são: mipself, mipslelf e mipsbelf. Escolher mipself agora não tem efeito, pois a saída é sempre ELF. mipslelf e mipsbelf selecionam a saída little- e big-endian, respectivamente, mas -EL e -EB agora são os opções preferidas em vez disso.

-nocpp

as ignora esta opção. É aceito para compatibilidade com as ferramentas nativas.

--trap
--no-trap
--break
--no-break

Controle como lidar com estouro de multiplicação e divisão por zero. --trap ou --no-break (que são sinônimos) aceitam uma exceção de interceptação (e funcionam apenas para o nível 2 da arquitetura do conjunto de instruções e superior); --break ou --no-trap (também sinônimos e o padrão) aceitam uma exceção break.

-n

Quando esta opção é usada, as emitirá um aviso toda vez que gerar uma instrução nop de uma macro.

As opções a seguir estão disponíveis quando configuradas para um processador LoongArch.

-fpic
-fPIC

Gerar código independente de posição

-fno-pic

Não gere código independente de posição (padrão)

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

"-mcpu=metac11"

Gerar código para Meta 1.1.

"-mcpu=metac12"

Gerar código para Meta 1.2.

"-mcpu=metac21"

Gerar código para Meta 2.1.

"-mfpu=metac21"

Permitir que o código use hardware FPU de Meta 2.1.

Consulte as páginas de informações para obter a documentação das opções específicas do MMIX.

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

"-O1"

Otimize para desempenho.

"-Os"

Otimize o espaço.

"-EL"

Produz saída de dados little endian.

"-EB"

Produz saída de dados little endian.

"-mpic"

Gerar PIC.

"-mno-fp-as-gp-relax"

Suprima o relaxamento fp-as-gp para este arquivo.

"-mb2bb-relax"

Otimização de filiais back-to-back.

"-mno-all-relax"

Suprima toda a extensão para este arquivo.

"-march=<arch name>"

Monte para a arquitetura que pode ser v3, v3j, v3m, v3f, v3s, v2, v2j, v2f, v2s.

"-mbaseline=<baseline>"

Monte para a linha de base que pode ser v2, v3, v3m.

"-mfpu-freg=FREG"

Especifique uma configuração de FPU.

"0 8 SP / 4 DP registers"
"1 16 SP / 8 DP registers"
"2 32 SP / 16 DP registers"
"3 32 SP / 32 DP registers"
"-mabi=abi"

Especifique uma versão abi pode ser v1, v2, v2fp, v2fpp.

"-m[no-]mac"

Ativar/desativar o suporte a instruções Multiply.

"-m[no-]div"

Ativar/desativar o suporte a instruções de divisão.

"-m[no-]16bit-ext"

Ativar/desativar extensão de 16 bits

"-m[no-]dx-regs"

Ativar/desativar registros d0/d1

"-m[no-]perf-ext"

Ativar/desativar extensão de desempenho

"-m[no-]perf2-ext"

Ativar/desativar extensão de desempenho 2

"-m[no-]string-ext"

Ativar/desativar extensão de string

"-m[no-]reduced-regs"

Ativar/desativar opção de configuração de registro reduzido (GPR16)

"-m[no-]audio-isa-ext"

Ativar/desativar a extensão AUDIO ISA

"-m[no-]fpu-sp-ext"

Habilitar/Desabilitar extensão FPU SP

"-m[no-]fpu-dp-ext"

Habilitar/Desabilitar extensão FPU DP

"-m[no-]fpu-fma"

Ativar/desativar as instruções FPU com fusão múltipla e adição

"-mall-ext"

Ative todas as extensões e suporte a instruções

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 em sinalizadores ELF.

-mpwrx | -mpwr2

Gere código para POWER/2 (RIOS2).

-mpwr

Gerar código para POWER (RIOS1)

-m601

Gerar código para PowerPC 601.

-mppc, -mppc32, -m603, -m604

Gere código para PowerPC 603/604.

-m403, -m405

Gere código para PowerPC 403/405.

-m440

Gera código para PowerPC 440. BookE e algumas 405 instruções.

-m464

Gerar código para PowerPC 464.

-m476

Gerar código para PowerPC 476.

-m7400, -m7410, -m7450, -m7455

Gere código para PowerPC 7400/7410/7450/7455.

-m750cl, -mgekko, -mbroadway

Gere código para PowerPC 750CL/Gekko/Broadway.

-m821, -m850, -m860

Gere código para PowerPC 821/850/860.

-mppc64, -m620

Gere código para PowerPC 620/625/630.

-me200z2, -me200z4

Gere código para variantes e200, e200z2 com LSP, e200z4 com SPE.

-me300

Gere código para a família PowerPC e300.

-me500, -me500x2

Gere código para o complexo principal do Motorola e500.

-me500mc

Gere código para o complexo de núcleo Freescale e500mc.

-me500mc64

Gere código para o complexo de núcleo Freescale e500mc64.

-me5500

Gere código para o complexo principal Freescale e5500.

-me6500

Gere código para o complexo de núcleo Freescale e6500.

-mlsp

Habilite as instruções LSP. (Desativa SPE e SPE2.)

-mspe

Gera código para instruções SPE da Motorola. (Desativa o LSP.)

-mspe2

Gere código para instruções Freescale SPE2. (Desativa o LSP.)

-mtitan

Gere código para o complexo de núcleo AppliedMicro Titan.

-mppc64bridge

Gere código para PowerPC 64, incluindo insns de ponte.

-mbooke

Gere código para BookE de 32 bits.

-ma2

Gerar código para arquitetura A2.

-maltivec

Gere código para processadores com instruções AltiVec.

-mvle

Gere código para instruções Freescale PowerPC VLE.

-mvsx

Gere código para processadores com instruções Vector-Scalar (VSX).

-mhtm

Gere código para processadores com instruções de memória transacional de hardware.

-mpower4, -mpwr4

Gere código para a arquitetura Power4.

-mpower5, -mpwr5, -mpwr5x

Gere código para a arquitetura Power5.

-mpower6, -mpwr6

Gere código para a arquitetura Power6.

-mpower7, -mpwr7

Gere código para a arquitetura Power7.

-mpower8, -mpwr8

Gere código para a arquitetura Power8.

-mpower9, -mpwr9

Gere código para a arquitetura Power9.

-mpower10, -mpwr10

Gere código para a arquitetura Power10.

-mfuture

Gerar código para arquitetura 'futura'.

-mcell
-mcell

Gere código para a arquitetura do Cell Broadband Engine.

-mcom

Gera instruções comuns de código Power/PowerPC.

-many

Gere código para qualquer arquitetura (PWR/PWRX/PPC).

-mregnames

Permitir nomes simbólicos para registradores.

-mno-regnames

Não permita nomes simbólicos para registradores.

-mrelocatable

Suporte para a opção -mrelocatable do GCC.

-mrelocatable-lib

Suporte para a opção -mrelocatable-lib do GCC.

-memb

Defina o bit PPC_EMB nos sinalizadores ELF.

-mlittle, -mlittle-endian, -le

Gere código para uma máquina little endian.

-mbig, -mbig-endian, -be

Gerar código para uma máquina big endian.

-msolaris

Gerar código para Solaris.

-mno-solaris

Não gere código para Solaris.

-nops=count

Se uma diretiva de alinhamento inserir mais de count nops, coloque uma ramificação no início para pular a execução dos nops.

As opções a seguir estão disponíveis quando configuradas para um processador RISC-V.

-fpic
-fPIC

Gerar código independente de posição

-fno-pic

Não gere código independente de posição (padrão)

-march=ISA

Selecione o isa base, conforme especificado pelo ISA. Por exemplo -march=rv32ima. Se esta opção e os atributos de arquitetura não estiverem definidos, o montador verificará a configuração padrão --with-arch=ISA.

-misa-spec=ISAspec

Selecione a versão de especificação isa padrão. Se a versão do ISA não for definida por -march, o montador ajudará a definir a versão de acordo com a especificação padrão escolhida. Se esta opção não estiver definida, o montador verificará a configuração padrão --with-isa-spec=ISAspec.

-mpriv-spec=PRIVspec

Selecione a versão de especificação privilegiada. Podemos decidir se o CSR é válido ou não de acordo com a especificação escolhida. Se esta opção e os atributos de privilégio não forem definidos, o montador verificará a configuração padrão --with-priv-spec=PRIVspec.

-mabi=ABI

Seleciona a ABI, que é ilp32 ou lp64, opcionalmente seguida por f, d ou q para indicar a convenção de chamada de ponto flutuante de precisão simples, precisão dupla ou precisão quádrupla, ou nenhuma para indicar a convenção de chamada flutuante suave . Além disso, ilp32 pode opcionalmente ser seguido por e para indicar o RVE ABI, que é sempre de flutuação suave.

-mrelax

Aproveite os relaxamentos do vinculador para reduzir o número de instruções necessárias para materializar endereços de símbolo. (padrão)

-mno-relax

Não faça relaxamentos de linker.

-march-attr

Gere o conteúdo padrão para a seção de atributo riscv elf se as diretivas .attribute não estiverem definidas. Esta seção é usada para registrar as informações que um vinculador ou carregador de tempo de execução precisa para verificar a compatibilidade. Essas informações incluem string ISA, requisito de alinhamento de pilha, acessos de memória não alinhados e a versão principal, secundária e de revisão da especificação privilegiada.

-mno-arch-attr

Não gere a seção padrão do atributo riscv elf se as diretivas .attribute não estiverem definidas.

-mcsr-check

Habilite a verificação do CSR para o CRS dependente de ISA e o CSR somente leitura. O CSR dependente de ISA só é válido quando o ISA específico é definido. O CSR somente leitura não pode ser gravado pelas instruções CSR.

-mno-csr-check

Não faça verificação de CSR.

-mlittle-endian

Gere código para uma máquina little endian.

-mbig-endian

Gerar código para uma máquina big endian.

Consulte as páginas de informações para obter a documentação das opções específicas do RX.

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

-m31
-m64

Selecione o tamanho da palavra, 31/32 bits ou 64 bits.

-mesa
-mzarch

Selecione o modo de arquitetura, Enterprise System Architecture (esa) ou o modo z/Architecture (zarch).

-march=processor

Especifique qual variante do processador s390 é o alvo, g5 (ou arch3), g6, z900 (ou arch5), z990 (ou arch6), z9-109, z9-ec ( ou arch7), z10 (ou arch8), z196 (ou arch9) , zEC12 (ou arch10), z13 (ou arch11), z14 ( ou arch12), z15 (ou arch13) ou z16 (ou arch14 ).

-mregnames
-mno-regnames

Permitir ou proibir nomes simbólicos para registradores.

-mwarn-areg-zero

Avisa sempre que o operando para um registro de base ou índice for especificado, mas for avaliado como zero.

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

-march=arch

Habilitar (somente) instruções da arquitetura arch. Por padrão, todas as instruções são permitidas. Os seguintes valores de arch são aceitos: c62x, c64x, c64x+, c67x , c67x+, c674x.

-mdsbt
-mno-dsbt

A opção -mdsbt faz com que o montador gere o atributo Tag_ABI_DSBT com valor 1, indicando que o código está usando endereçamento DSBT. A opção -mno-dsbt, padrão, faz com que o tag tenha valor 0, indicando que o código não utiliza endereçamento DSBT. O vinculador emitirá um aviso se objetos de tipo diferente (DSBT e não DSBT) forem vinculados.

-mpid=no
-mpid=near
-mpid=far

A opção -mpid= faz com que o montador gere o atributo Tag_ABI_PID com um valor indicando a forma de endereçamento dos dados utilizada pelo código. -mpid=no, o padrão, indica endereçamento de dados dependente de posição, -mpid=near indica endereçamento independente de posição com acessos GOT usando endereçamento DP próximo e -mpid=far indica endereçamento independente de posição com acessos GOT usando endereçamento DP distante. O vinculador emitirá um aviso se objetos criados com diferentes configurações desta opção forem vinculados.

-mpic
-mno-pic

A opção -mpic faz com que o montador gere o atributo Tag_ABI_PIC com valor 1, indicando que o código está usando endereçamento de código independente de posição, o -mno A opção -pic, o padrão, faz com que o tag tenha um valor de 0, indicando o endereçamento do código dependente da posição. O vinculador emitirá um aviso se objetos de tipos diferentes (dependentes e independentes da posição) forem vinculados.

-mbig-endian
-mlittle-endian

Gera código para o endianness especificado. O padrão é little-endian.

As opções a seguir estão disponíveis quando configuradas para um processador TILE-Gx.

-m32 | -m64

Selecione o tamanho da palavra, 32 bits ou 64 bits.

-EB | -EL

Selecione a extremidade, seja big-endian (-EB) ou little-endian (-EL).

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

-mtune=arch

Esta opção especifica a arquitetura de destino. Se for feita uma tentativa de montar uma instrução que não será executada na arquitetura de destino, o montador emitirá uma mensagem de erro. Os seguintes nomes são reconhecidos: mcm24 mcm gr5 gr6

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

--text-section-literals | --no-text-section-literals

Controle o tratamento de pools literais. O padrão é --no-text-section-literals, que coloca os literais em seções separadas no arquivo de saída. Isso permite que o pool literal seja colocado em uma RAM/ROM de dados. Com --text-section-literals, os literais são intercalados na seção de texto para mantê-los o mais próximo possível de suas referências. Isso pode ser necessário para grandes arquivos de montagem, onde os literais estariam fora do alcance das instruções L32R na seção de texto. Literais são agrupados em pools seguindo as diretivas .literal_position ou precedendo as instruções ENTRY. Essas opções afetam apenas os literais referenciados por meio de instruções L32R relativas ao PC; os literais para as instruções L32R do modo absoluto são tratados separadamente.

--auto-litpools | --no-auto-litpools

Controle o tratamento de pools literais. O padrão é --no-auto-litpools, que na ausência de --text-section-literals coloca os literais em seções separadas no arquivo de saída. Isso permite que o pool literal seja colocado em uma RAM/ROM de dados. Com --auto-litpools, os literais são intercalados na seção de texto para mantê-los o mais próximo possível de suas referências, diretivas .literal_position explícitas não são necessárias. Isso pode ser necessário para funções muito grandes, onde um único pool literal no início da função pode não ser acessível por instruções L32R no final. Essas opções afetam apenas os literais referenciados por meio de instruções L32R relativas ao PC; os literais para as instruções L32R do modo absoluto são tratados separadamente. Quando usado junto com --text-section-literals, --auto-litpools tem precedência.

--absolute-literals | --no-absolute-literals

Indique ao montador se as instruções L32R usam endereçamento absoluto ou relativo ao PC. Se o processador incluir a opção de endereçamento absoluto, o padrão é usar realocações L32R absolutas. Caso contrário, apenas as realocações L32R relativas ao PC podem ser usadas.

--target-align | --no-target-align

Ative ou desative o alinhamento automático para reduzir as penalidades de ramificação com alguma despesa no tamanho do código. Essa otimização é habilitada por padrão. Observe que o montador sempre alinhará instruções como LOOP que possuem requisitos de alinhamento fixos.

--longcalls | --no-longcalls

Ative ou desative a transformação de instruções de chamada para permitir chamadas em um intervalo maior de endereços. Esta opção deve ser usada quando os alvos de chamada podem estar potencialmente fora do alcance. Isso pode degradar o tamanho e o desempenho do código, mas o vinculador geralmente pode otimizar a sobrecarga desnecessária quando uma chamada termina dentro do alcance. O padrão é --no-longcalls.

--transform | --no-transform

Ative ou desative todas as transformações do montador de instruções Xtensa, incluindo relaxamento e otimização. O padrão é --transform; --no-transform só deve ser usado nos raros casos em que as instruções devem ser exatamente como especificadas na origem do assembly. O uso de --no-transform faz com que os operandos de instrução fora do intervalo sejam erros.

--rename-section oldname=newname

Renomeie a seção oldname para newname. Esta opção pode ser usada várias vezes para renomear várias seções.

--trampolines | --no-trampolines

Ative ou desative a transformação de instruções de salto para permitir saltos em um intervalo maior de endereços. Esta opção deve ser usada quando os alvos de salto podem estar fora do alcance. Na ausência de tais saltos, esta opção não afeta o tamanho ou o desempenho do código. O padrão é --trampolins.

--abi-windowed | --abi-call0

Escolha a tag ABI gravada na seção .xtensa.info. A tag ABI indica ABI do código assembly. Um aviso é emitido pelo vinculador em uma tentativa de vincular arquivos de objeto com tags ABI inconsistentes. A ABI padrão é escolhida pela configuração principal do Xtensa.

As opções a seguir estão disponíveis quando configuradas para um processador Z80.

@chapter Recursos dependentes do Z80

Opções de linha de comando

-march=CPU[-EXT...][+EXT...]

Esta opção especifica o processador de destino. O montador 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: z80, z180, ez80, gbz80, z80n, r800. Além do conjunto básico de instruções, o montador pode ser instruído a aceitar alguns mnemônicos de extensão. Por exemplo, -march=z180+sli+infc estende z180 com instruções SLI e IN F,(C) . As seguintes extensões são atualmente suportadas: full (todas as instruções conhecidas), adl (modo ADL CPU por padrão, somente eZ80), sli (instrução conhecido como SLI, SLL ou SL1), xyhl (instruções com metades de registradores de índice: IXL , IXH, IYL, IYH), xdcb (instruções como RotOp (II +d),R e BitOp n,(II+d),R), infc (instrução IN F,(C) ou IN (C)), outc0 (instrução OUT (C),0). Observe que, em vez de estender um conjunto básico de instruções, os mnemônicos de extensão começando com - revogam a respectiva funcionalidade: -march=z80-full+xyhl primeiro remove todas as extensões padrão e adiciona suporte apenas para metades de registradores de índice. Se esta opção não for especificada, será assumido -march=z80+xyhl+infc.

-local-prefix=prefix

Marque todos os rótulos com o prefixo especificado como local. Mas esse rótulo pode ser marcado como global explicitamente no código. Esta opção não altera o prefixo padrão do rótulo local .L, apenas adiciona um novo.

-colonless

Aceite rótulos sem vírgulas. Todos os símbolos no início da linha são tratados como rótulos.

-sdcc

Aceite o código montador produzido pela SDCC.

-fp-s=FORMAT

Formato de números de ponto flutuante de precisão única. Padrão: ieee754 (32 bits).

-fp-d=FORMAT

Formato de números de ponto flutuante de precisão dupla. Padrão: ieee754 (64 bits).

VEJA TAMBÉM

gcc (1), ld (1), and the Info entries for binutils and ld.

DIREITO AUTORAL

Copyright (c) 1991-2023 Free Software Foundation, Inc.

É concedida permissão para copiar, distribuir e/ou modificar este documento sob os termos da GNU Free Documentation License, Versão 1.3 ou qualquer versão posterior publicada pela Free Software Foundation; sem Seções Invariantes, sem Textos de Capa Frontal e sem Textos de Capa Traseira. Uma cópia da licença está incluída na seção intitulada GNU Free Documentation License.