as AS - o montador GNU portátil.
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 ...]
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]
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.)
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.
Ative as listagens de várias maneiras:
omitir condicionais falsas
omitir diretivas de depuração
incluir informações gerais, como versão e opções passadas
incluir fonte de alto nível
incluir montagem
incluir expansões macro
omitir processamento de formulários
incluir símbolos
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.
Comece no modo macro alternativo.
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.
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.
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.
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.
Ao montar arquivos no diretório antigo, registre as informações de depuração descrevendo-os como em novo.
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.
Exibe como o montador está configurado e sai.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Crie a seção .sframe das diretivas CFI.
Ignorado. Suportado para compatibilidade de linha de comando com outros montadores.
Imprima um resumo das opções de linha de comando e saia.
Imprima um resumo de todas as opções específicas de destino e saia.
Adicione o diretório dir à lista de pesquisa para diretivas .include.
Não avise sobre estouro assinado.
Emitir avisos quando as tabelas de diferenças forem alteradas para deslocamentos longos.
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.
Defina a largura máxima, em palavras, da coluna de dados de saída para uma listagem de montador como número.
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.
Defina a largura máxima de uma linha de origem de entrada, conforme exibido em uma listagem, para número bytes.
Defina o número máximo de linhas impressas em uma listagem para uma única linha de entrada como número + 1.
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).
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.
Nomeie a saída do arquivo-objeto de como objfile.
Dobre a seção de dados na seção de texto.
Ignorado. Compatível com ferramentas que oferecem a mesma opção para o montador e o vinculador.
Respeite as sequências de substituição nos nomes das seções.
Emita um erro ou aviso para a diretiva ELF .size inválida.
Imprima o espaço máximo (em bytes) e o tempo total (em segundos) usado pela montagem.
Remova os símbolos absolutos locais da tabela de símbolos de saída.
Imprima a versão como.
Imprima a versão como e saia.
Suprimir mensagens de aviso.
Trate os avisos como erros.
Não suprima mensagens de aviso nem as trate como erros.
Ignorado.
Ignorado.
Gere um arquivo objeto mesmo após erros.
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).
Esta opção especifica que a saída gerada pelo montador deve ser marcada como sendo codificada para um processador big-endian.
Esta opção especifica que a saída gerada pelo montador deve ser marcada como sendo codificada para um processador little-endian.
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.
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.
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,
Esta opção ativa mensagens de erro detalhadas para o gás AArch64. Essa opção é ativada por padrão.
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.
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.
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.
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.
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.
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.
Um símbolo comum local maior que tamanho é colocado em .bss, enquanto símbolos menores são colocados em .sbss.
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.
Esta opção seleciona a variante do processador principal.
Selecione a saída big-endian (-EB) ou little-endian (-EL).
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.
Especifique qual variante do processador ARM é o alvo.
Especifique qual variante de arquitetura ARM é usada pelo destino.
Selecione qual arquitetura de ponto flutuante é o destino.
Selecione qual ABI de ponto flutuante está em uso.
Habilite a decodificação de instrução somente Thumb.
Selecione qual convenção de chamada de procedimento está em uso.
Selecione a saída big-endian (-EB) ou little-endian (-EL).
Especifique que o código foi gerado tendo em mente a interoperabilidade entre o código Thumb e o ARM.
Ativa o modo de compatibilidade de sintaxe de assembly do CodeComposer Studio.
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.
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.
Monte para o FDPIC ABI.
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
Esta opção especifica que o montador deve emitir eBPF big-endian.
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.
Monte para arquitetura archname. A opção --help lista valores válidos para archname.
Monte para arquitetura cpuname. A opção --help lista valores válidos para cpuname.
Gera saída little-endian.
Gerar saída big-endian.
Gera código independente de posição.
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.
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.
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.
Ativar/desativar a transformação das instruções jsri para bsr. Essa opção é ativada por padrão.
Ativar/desativar a transformação de instruções lrw em um par movih/ori.
Ativar/desativar instruções lrw estendidas. Esta opção é habilitada por padrão para os processadores da série CK800.
Ativar/desativar a colocação de pools literais após cada função.
Ativar/desativar a colocação de pools literais após ramificações incondicionais. Essa opção é ativada por padrão.
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.
Habilite as instruções de flutuação total.
Habilite as instruções do multiprocessador.
Ativa as instruções do coprocessador.
Ativa a instrução de pré-busca de cache.
Habilite as instruções de segurança C-SKY.
Habilite as instruções de confiança C-SKY.
Habilite as instruções DSP.
Habilitar instruções DSP aprimoradas.
Habilite as instruções vetoriais DSP.
As opções a seguir estão disponíveis quando configuradas para um processador Epiphany.
Especifica que as instruções de 32 e 16 bits são permitidas. Este é o comportamento padrão.
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
A versão Renesas H8/300 de as tem uma opção dependente da máquina:
Suporta constantes hexadecimais do estilo H'00, além do estilo 0x00.
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.
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).
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.
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.
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á.
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.
Esta opção especifica que o montador deve codificar as instruções SSE com o prefixo VEX.
Esta opção especifica que o montador deve codificar o movimento de vetor alinhado como movimento de vetor desalinhado.
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.
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.
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.
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 .
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.
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.
Esta opção especifica a sintaxe da instrução ao processar instruções. As diretivas .att_syntax e .intel_syntax terão precedência.
Esta opção especifica que os registros não requerem um prefixo %. As diretivas .att_syntax e .intel_syntax terão precedência.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Especifica que as instruções IP2022 estendidas são permitidas.
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.
Monte as instruções do M32C.
Monte as instruções M16C (o padrão).
Habilite o suporte para relaxamentos de tempo de link.
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).
Especifique qual processador da família M32R é o alvo. O padrão é normalmente o M32R, mas esta opção o altera para o M32RX.
Produza mensagens de aviso quando forem encontradas construções paralelas questionáveis.
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.
Reduza as referências a símbolos indefinidos, a uma palavra em vez de duas.
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.
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.
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.
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.
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.
Não substitua nenhuma ramificação ou chamada.
Gerar saída big-endian.
Gera saída little-endian. Este é o padrão.
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.
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.
Suponha que LD não otimizaria as instruções LDI32. Como consequência, relocações DIFF não serão emitidas.
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.
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.
Gera saída em formato big endian.
Gera saída no formato little endian.
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.
Gera código para uma CPU MIPS específica.
Programe e ajuste para uma CPU MIPS específica.
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.
Faz com que nops sejam inseridos se uma instrução dmult ou dmultu for seguida por uma instrução load.
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.
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.
Geração de controle de seções .pdr.
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.
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.
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 .
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Selecione entre o formato de codificação NaN IEEE 754-2008 (-mnan=2008) ou legado (-mnan=legacy). O último é o padrão.
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.
as ignora esta opção. É aceito para compatibilidade com as ferramentas nativas.
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.
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.
Gerar código independente de posição
Não gere código independente de posição (padrão)
As seguintes opções estão disponíveis quando configuradas para um Metaprocessador.
Gerar código para Meta 1.1.
Gerar código para Meta 1.2.
Gerar código para Meta 2.1.
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.
Otimize para desempenho.
Otimize o espaço.
Produz saída de dados little endian.
Produz saída de dados little endian.
Gerar PIC.
Suprima o relaxamento fp-as-gp para este arquivo.
Otimização de filiais back-to-back.
Suprima toda a extensão para este arquivo.
Monte para a arquitetura
Monte para a linha de base
Especifique uma configuração de FPU.
Especifique uma versão abi
Ativar/desativar o suporte a instruções Multiply.
Ativar/desativar o suporte a instruções de divisão.
Ativar/desativar extensão de 16 bits
Ativar/desativar registros d0/d1
Ativar/desativar extensão de desempenho
Ativar/desativar extensão de desempenho 2
Ativar/desativar extensão de string
Ativar/desativar opção de configuração de registro reduzido (GPR16)
Ativar/desativar a extensão AUDIO ISA
Habilitar/Desabilitar extensão FPU SP
Habilitar/Desabilitar extensão FPU DP
Ativar/desativar as instruções FPU com fusão múltipla e adição
Ative todas as extensões e suporte a instruções
As seguintes opções estão disponíveis quando configuradas para um processador PowerPC.
Gere ELF32 ou XCOFF32.
Gere ELF64 ou XCOFF64.
Defina EF_PPC_RELOCATABLE_LIB em sinalizadores ELF.
Gere código para POWER/2 (RIOS2).
Gerar código para POWER (RIOS1)
Gerar código para PowerPC 601.
Gere código para PowerPC 603/604.
Gere código para PowerPC 403/405.
Gera código para PowerPC 440. BookE e algumas 405 instruções.
Gerar código para PowerPC 464.
Gerar código para PowerPC 476.
Gere código para PowerPC 7400/7410/7450/7455.
Gere código para PowerPC 750CL/Gekko/Broadway.
Gere código para PowerPC 821/850/860.
Gere código para PowerPC 620/625/630.
Gere código para variantes e200, e200z2 com LSP, e200z4 com SPE.
Gere código para a família PowerPC e300.
Gere código para o complexo principal do Motorola e500.
Gere código para o complexo de núcleo Freescale e500mc.
Gere código para o complexo de núcleo Freescale e500mc64.
Gere código para o complexo principal Freescale e5500.
Gere código para o complexo de núcleo Freescale e6500.
Habilite as instruções LSP. (Desativa SPE e SPE2.)
Gera código para instruções SPE da Motorola. (Desativa o LSP.)
Gere código para instruções Freescale SPE2. (Desativa o LSP.)
Gere código para o complexo de núcleo AppliedMicro Titan.
Gere código para PowerPC 64, incluindo insns de ponte.
Gere código para BookE de 32 bits.
Gerar código para arquitetura A2.
Gere código para processadores com instruções AltiVec.
Gere código para instruções Freescale PowerPC VLE.
Gere código para processadores com instruções Vector-Scalar (VSX).
Gere código para processadores com instruções de memória transacional de hardware.
Gere código para a arquitetura Power4.
Gere código para a arquitetura Power5.
Gere código para a arquitetura Power6.
Gere código para a arquitetura Power7.
Gere código para a arquitetura Power8.
Gere código para a arquitetura Power9.
Gere código para a arquitetura Power10.
Gerar código para arquitetura 'futura'.
Gere código para a arquitetura do Cell Broadband Engine.
Gera instruções comuns de código Power/PowerPC.
Gere código para qualquer arquitetura (PWR/PWRX/PPC).
Permitir nomes simbólicos para registradores.
Não permita nomes simbólicos para registradores.
Suporte para a opção -mrelocatable do GCC.
Suporte para a opção -mrelocatable-lib do GCC.
Defina o bit PPC_EMB nos sinalizadores ELF.
Gere código para uma máquina little endian.
Gerar código para uma máquina big endian.
Gerar código para Solaris.
Não gere código para Solaris.
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.
Gerar código independente de posição
Não gere código independente de posição (padrão)
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.
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.
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.
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.
Aproveite os relaxamentos do vinculador para reduzir o número de instruções necessárias para materializar endereços de símbolo. (padrão)
Não faça relaxamentos de linker.
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.
Não gere a seção padrão do atributo riscv elf se as diretivas .attribute não estiverem definidas.
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.
Não faça verificação de CSR.
Gere código para uma máquina little 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.
Selecione o tamanho da palavra, 31/32 bits ou 64 bits.
Selecione o modo de arquitetura, Enterprise System Architecture (esa) ou o modo z/Architecture (zarch).
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 ).
Permitir ou proibir nomes simbólicos para registradores.
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.
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.
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.
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.
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.
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.
Selecione o tamanho da palavra, 32 bits ou 64 bits.
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.
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.
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.
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.
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.
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.
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.
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.
Renomeie a seção oldname para newname. Esta opção pode ser usada várias vezes para renomear várias seções.
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.
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
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.
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.
Aceite rótulos sem vírgulas. Todos os símbolos no início da linha são tratados como rótulos.
Aceite o código montador produzido pela SDCC.
Formato de números de ponto flutuante de precisão única. Padrão: ieee754 (32 bits).
Formato de números de ponto flutuante de precisão dupla. Padrão: ieee754 (64 bits).
gcc (1), ld (1), and the Info entries for binutils and ld.
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.