AS - o montador GNU portátil.
SINTAXE
as [-a[cdghilns][=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] [--gsframe=[no|yes]]
[--hash-size=N]
[--help] [--target-help]
[--info] [--no-info]
[-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]
[--scfi=experimental]
[--sectname-subst]
[--size-check=[error|warning]]
[--statistics]
[-v] [--verbose]
[-version] [--version]
[-W] [--no-warn] [--warn] [--fatal-warnings]
[-w] [-x]
[-Z] [@FILE]
[target-options]
[--|files ...]
ALVO
Opções do AArch64: [-EB|-EL] [-mabi=ABI]
Opções do Alpha: [-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]
Opções do ARC: [-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]
Opções do ARM: [-mcpu=processor[+extension...]] [-march=architecture[+extension...]] [-mfpu=floating-point-format] [-mfloat-abi=abi] [-meabi=ver] [-mthumb] [-EB|-EL] [-mapcs-32|-mapcs-26|-mapcs-float| -mapcs-reentrant] [-mthumb-interwork] [-k]
Opções do Blackfin: [-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]
Opções do BPF: [-EL] [-EB]
Opções do CRIS: [--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
Opções do C-SKY: [-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 do D10V: [-O]
Opções do D30V: [-O|-n|-N]
Opções do EPIPHANY: [-mepiphany|-mepiphany16]
Opções do 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 de destino IP2K: [-mip2022|-mip2022ext]
Opções de destino M32C: [-m32c|-m16c] [-relax] [-h-tick-hex]
Opções de destino M32R: [--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]
Opções de destino M680X0: [-l] [-m68000|-m68010|-m68020|...]
Opções de destino 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 de destino MCORE: [-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]
Opções de destino Meta: [-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] Opções de destino MICROBLAZE: [-mlittle-endian] [-mbig-endian]
Opções de destino MIPS: [-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 de destino MMIX: [--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]
Opções de destino 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 de destino picoJava: [-mb|-me]
Opções de destino PowerPC: [-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] [-nops=count]
Opções de destino PRU: [-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
Opções de destino RISC-V: [-fpic|-fPIC|-fno-pic] [-march=ISA|Profiles|Profiles_ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]
Opções de destino RL78: [-mg10] [-m32bit-doubles|-m64bit-doubles]
Opções de destino RX: [-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 de destino s390: [-m31|-m64] [-mesa|-mzarch] [-march=CPU] [-mregnames|-mno-regnames] [-mwarn-areg-zero] [-mwarn-regtype-mismatch=strict -mwarn-regtype-mismatch=relaxed -mwarn-regtype-mismatch=no -mno-warn-regtype-mismatch]
Opções de destino SCORE: [-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]
Opções de destino SPARC: [-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
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 de destino TILE-Gx: [-m32|-m64][-EB][-EL]
Opções de destino Visium: [-mtune=arch]
Opções de destino 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 de destino Z80: [-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]
DESCRIÇÃO
GNU as é, na verdade, uma família de assemblers. Se você usa (ou já usou) o GNU assembler em uma arquitetura, deverá encontrar um ambiente razoavelmente semelhante ao usá-lo em outra arquitetura. Cada versão tem muito em comum com as outras, incluindo formatos de arquivos objeto, a maioria dos diretivos do assembler (frequentemente chamados de pseudo-operações) e a sintaxe do assembler.
as é projetado principalmente para montar a saída do compilador GNU C "gcc" para uso pelo linker "ld". No entanto, tentamos fazer com que as monte corretamente tudo o que outros assemblers para a mesma máquina montariam. Quaisquer exceções são documentadas explicitamente. Isso não significa que as sempre use a mesma sintaxe de outro assembler para a mesma arquitetura; por exemplo, conhecemos várias versões incompatíveis da sintaxe da linguagem de montagem 680x0.
Cada vez que você executa as, ele monta exatamente um programa-fonte. O programa-fonte é composto por um ou mais arquivos. (A entrada padrão também é um arquivo.)
Você fornece a as uma linha de comando que tem zero ou mais nomes de arquivos de entrada. Os arquivos de entrada são lidos (da esquerda para a direita). Um argumento de linha de comando (em qualquer posição) que não tenha um significado especial é considerado um nome de arquivo de entrada.
Se você fornecer a as nenhum nome de arquivo, ele tentará ler um arquivo de entrada da entrada padrão do as, que normalmente é o seu terminal. Você pode precisar digitar ctl-D para informar ao as que não há mais programa para montar.
Use -- se você precisar nomear explicitamente o arquivo de entrada padrão em sua linha de comando.
Se a fonte estiver vazia, as produz um pequeno arquivo objeto vazio.
as pode gravar avisos e mensagens de erro no arquivo de erro padrão (geralmente seu terminal). Isso não deve acontecer quando um compilador executa as automaticamente. Os avisos relatam uma suposição feita para que as possa continuar montando um programa com falhas; os erros relatam um problema grave que interrompe a montagem.
Se você estiver invocando as por meio do compilador GNU C, pode usar a opção -Wa para passar argumentos para o assembler. Os argumentos do assembler devem ser separados uns dos outros (e de -Wa) por vírgulas. Por exemplo:
gcc -c -g -O -Wa,-alh,-L file.c
Isso passa duas opções para o assembler: -alh (emite uma listagem para a saída padrão com código-fonte de alto nível e assembly) e -L (mantém os símbolos locais na tabela de símbolos).
Normalmente, você não precisa usar esse mecanismo -Wa, porque muitas opções da linha de comando do compilador são automaticamente passadas para o assembler 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 assembler.)
OPÇÕES
@file Leia as opções da linha de comando do arquivo. As opções lidas são inseridas no lugar da opção @file original. Se o arquivo não existir ou não puder ser lido, a opção será tratada literalmente e não será 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 toda a opção em 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 arquivo pode conter opções @file adicionais; quaisquer opções adicionais serão processadas recursivamente.
-a[cdghilmns]
Ativa os listados, de diversas maneiras:
-ac omite condicionais falsas
-ad omite diretivas de depuração
-ag inclui informações gerais, como versão e opções passadas
-ah inclui o código-fonte de alto nível
-al inclui o código assembly
-ali
inclui o código assembly com ginsn
-am inclui as expansões de macro
-an omite o processamento de formulários
-as inclui os símbolos
=file
define o nome do arquivo de listagem
Você pode combinar essas opções; por exemplo, use -aln para listagem de assembly sem o processamento de formulários. A opção =file, se usada, deve ser a última. Por si só, -a tem como padrão -ahls.
--alternate
Começa no modo de macro alternativo.
--compress-debug-sections
Comprime as seções de depuração DWARF usando zlib com SHF_COMPRESSED da ABI ELF. O arquivo de objeto resultante pode não ser compatível com linkers e utilitários de arquivo de objeto mais antigos. Observe que, se a compressão aumentar o tamanho de uma determinada seção, esta não será comprimida.
--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 comprimidas. --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 as seções de depuração DWARF usando o formato zlib-gnu obsoleto. As seções de depuração são renomeadas para começar com .zdebug. --compress-debug-sections=zstd comprime as seções de depuração DWARF usando zstd. Observe que, se a compressão realmente aumentar o tamanho de uma seção, esta não será comprimida nem renomeada.
--nocompress-debug-sections
Não comprima as seções de depuração DWARF. Este é geralmente o padrão para todos os destinos, exceto x86/x86_64, mas uma opção de tempo de configuração pode ser usada para substituir isso.
-D Ativa a depuração em backends específicos, se suportado. Caso contrário, ignora. Mesmo se ignorado, esta opção é aceita para compatibilidade de script com chamadas para outros assemblers.
--debug-prefix-map old=new
Ao montar arquivos no diretório old, registre as informações de depuração descrevendo-os como se estivessem em new.
--defsym sym=value
Define o símbolo sym para value antes de montar o arquivo de entrada. value deve ser um inteiro constante. 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 um pseudocódigo ".set".
--dump-config
Exibe como o assembler está configurado e, em seguida, sai.
--elf-stt-common=no
--elf-stt-common=yes
Essas opções controlam se o assembler ELF deve gerar símbolos comuns com o tipo "STT_COMMON". O padrão pode ser controlado por uma opção de tempo de configuração --enable-elf-stt-common.
--emit-local-absolute
Emite até mesmo símbolos absolutos locais predefinidos para a tabela de símbolos de saída. Observe que
isso não é exatamente o oposto de --strip-local-absolute.
--emulation=name
Se o assembler estiver configurado para suportar várias configurações de destino, esta
opção pode ser usada para selecionar o formulário desejado.
-f "fast"---ignora o processamento de espaços em branco e comentários (assume que a fonte é saída do compilador).
-g
--gen-debug
Gera informações de depuração para cada linha de código assembly usando o formato de depuração
preferido pelo destino. Atualmente, isso significa STABS, ECOFF ou DWARF2. Quando o formato de
depuração é DWARF, uma seção ".debug_info" e ".debug_line" só é emitida quando o arquivo de
assembly não gera uma seção.
--gstabs
Gera informações de depuração stabs para cada linha de código assembly. Isso pode ajudar na
depuração do código assembly, se o depurador puder lidar com isso.
--gstabs+
Gera informações de depuração stabs para cada linha de código assembly, com extensões GNU que
provavelmente apenas o gdb pode lidar e que podem fazer com que outros depuradores falhem ou se
recusem a ler seu programa. Isso pode ajudar na depuração do código assembly. Atualmente, a
única extensão GNU é o local do diretório de trabalho no momento da montagem.
--gdwarf-2
Gera informações de depuração DWARF2 para cada linha de código assembly. Isso pode ajudar na
depuração do código assembly, se o depurador puder lidar com isso. Observe que esta opção é
suportada apenas por alguns destinos, não por todos.
--gdwarf-3
Esta opção é a mesma que a opção --gdwarf-2, exceto que permite a possibilidade de
geração de informações de depuração adicionais conforme a versão 3 da especificação DWARF.
Observe que habilitar esta opção não garante a geração de informações adicionais; a escolha de
fazer isso é feita por destino.
--gdwarf-4
Esta opção é a mesma que a opção --gdwarf-2, exceto que permite a possibilidade de
geração de informações de depuração adicionais conforme a versão 4 da especificação DWARF.
Observe que habilitar esta opção não garante a geração de informações adicionais; a escolha de
fazer isso é feita por destino.
--gdwarf-5
Esta opção é a mesma que a opção --gdwarf-2, exceto que permite a possibilidade de
geração de informações de depuração adicionais conforme a versão 5 da especificação DWARF.
Observe que habilitar esta opção não garante a geração de informações adicionais; a escolha de
fazer isso é feita 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á suas informações de linha DWARF colocadas em uma seção chamada .debug_line.text.func. Se a
seção de código for apenas chamada .text, a seção de linha de depuração ainda será chamada
apenas .debug_line, sem nenhum sufixo.
--gdwarf-cie-version=version
Controla qual versão das Entradas de Informação Comum (CIEs) DWARF será produzida. Quando esta opção não é especificada, o padrão é a versão 1, embora alguns destinos possam modificar este padrão. Outros valores possíveis para versão são 3 ou 4.
--generate-missing-build-notes=yes
--generate-missing-build-notes=no
Estas opções controlam se o montador ELF deve gerar atributos GNU Build em notas se não houver nenhum presente nas fontes de entrada. O padrão pode ser controlado pela opção --enable-generate-build-notes no script de configuração.
--gsframe
--gsframe
--gsframe=no
--gsframe=yes
Cria a seção .sframe a partir das diretivas CFI. A opção explícita --gsframe=yes tem o mesmo comportamento de --gsframe. A geração pode ser suprimida com --gsframe=no. O padrão pode ser controlado por uma opção de configuração --enable-default-sframe.
--hash-size N
Ignorado. Suportado para compatibilidade com a linha de comando com outros montadores.
--help
Imprime um resumo das opções da linha de comando e sai.
--target-help
Imprime um resumo de todas as opções específicas do destino e sai.
--info
Não suprime mensagens informativas.
--no-info
Suprime mensagens informativas.
-I dir
Adiciona o diretório dir à lista de pesquisa para as diretivas ".include".
-J Não emite avisos sobre estouro de sinal.
-K Emite avisos quando as tabelas de diferença são alteradas para deslocamentos longos.
-L
--keep-locals
Mantém (na tabela de símbolos) os símbolos locais. Esses símbolos começam com prefixos de rótulo local específicos do sistema, geralmente .L para sistemas ELF ou L para sistemas tradicionais a.out.
--listing-lhs-width=number
Define a largura máxima, em palavras, da coluna de dados de saída para uma listagem do montador para o número especificado.
--listing-lhs-width2=number
Define a largura máxima, em palavras, da coluna de dados de saída para linhas de continuação em uma listagem do montador para o número especificado.
--listing-rhs-width=number
Define a largura máxima de uma linha de código-fonte de entrada, conforme exibida em uma listagem, para o número de bytes especificado.
--listing-cont-lines=number
Define o número máximo de linhas impressas em uma listagem para uma única linha de entrada para o número +
--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 esses 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. Usar o argumento warn-sym-only fará com que um aviso seja gerado apenas quando um símbolo for definido com um nome que contenha caracteres multibyte. (Referências a símbolos não definidos não gerarão um aviso).
--no-pad-sections
Impede que o montador preencha as extremidades das seções de saída com o alinhamento da seção.
O padrão é preencher as seções, mas isso pode desperdiçar espaço, o que pode ser problemático em
alvos com restrições de memória.
-o objfile
Especifique o nome do arquivo de objeto de saída como objfile.
-R
Mescle a seção de dados na seção de texto.
--reduce-memory-overheads
Ignorado. Suportado para compatibilidade com ferramentas que passam a mesma opção tanto para o
montador quanto para o vinculador.
--scfi=experimental
Esta opção controla se o montador deve sintetizar CFI para entrada manuscrita. Se a entrada já
contiver alguns diretivos CFI sintetizáveis, o montador os ignora e emite um aviso. Observe que
"--scfi=experimental" não se destina a ser usado para código gerado pelo compilador, incluindo
montagem inline. Este suporte experimental está em andamento.
Apenas a ABI System V AMD64 é suportada.
Cada função de entrada em assembly deve começar com o diretivo ".type" e, idealmente, deve ser
finalizada com um diretivo ".size". Ao usar SCFI, cada diretiva ".type" solicita que o GAS
inicie uma nova FDE (uma entrada de descritor de função). Isso implica que, com cada diretiva
".type", um bloco de instruções anterior, se houver, é finalizado como uma FDE distinta.
--sectname-subst
Considere as sequências de substituição nos nomes das seções.
--size-check=error
--size-check=warning
Emita um erro ou aviso para o diretivo ELF .size inválido.
--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
--verbose
Imprima a versão do as.
--version
-version
Imprima a versão do as e saia.
-W
--no-warn
Suprima as mensagens de aviso.
--warn
Não suprima as mensagens de aviso ou trate-as como erros.
--fatal-warnings
Trate os avisos como erros.
-w
Ignorado.
-x
Ignorado.
-Z
Gere um arquivo de objeto mesmo após erros.
-- | files ...
Entrada padrão ou arquivos de origem para montar.
As seguintes opções estão disponíveis quando o as está configurado 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 codificada para um
processador big-endian.
-EL
Esta opção especifica que a saída gerada pelo montador deve ser marcada como codificada para um
processador little-endian.
-mabi=abi
Especifique qual ABI o código-fonte usa. Os argumentos reconhecidos são: "ilp32" e "lp64", o que
determina o formato do arquivo de objeto 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 houver
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", "cortex-a57", "cortex-a65", "cortex-a65ae", "cortex-a72", "cortex-a73",
"cortex-a75", "cortex-a76", "cortex-a76ae", "cortex-a77", "cortex-a78", "cortex-a78ae",
"cortex-a78c", "cortex-a510", "cortex-a520", "cortex-a710", "cortex-a720", "ares",
"exynos-m1", "falkor", "neoverse-n1", "neoverse-n2", "neoverse-e1", "neoverse-v1", "qdf24xx",
"saphira", "thunderx", "vulcan", "xgene1", "xgene2", "cortex-r82", "cortex-x1", "cortex-x2",
"cortex-x3" e "cortex-x4". 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 de instruções básico, o assembler pode ser configurado para aceitar ou restringir vários mnemônicos de extensão que expandem o processador.
Se algumas implementações de um determinado processador puderem ter uma extensão, então essas extensões são automaticamente habilitadas. Consequentemente, você normalmente não precisará especificar nenhuma extensão adicional.
-march=arquitetura[+extensão...]
Esta opção especifica a arquitetura de destino. O assembler emitirá uma mensagem de erro se uma tentativa for feita 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.9-a", "armv8-r", "armv9-a", "armv9.1-a", "armv9.2-a", "armv9.3-a", "armv9.4-a" e "armv9.5-a".
Se tanto -mcpu quanto -march forem especificados, o assembler usará a configuração para -mcpu. Se nenhum dos dois for especificado, o assembler usará o 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 habilitadas por padrão.
-mverbose-error
Esta opção habilita mensagens de erro detalhadas para AArch64 gas. Esta opção é habilitada por padrão.
-mno-verbose-error
Esta opção desabilita as mensagens de erro detalhadas em AArch64 gas.
-menable-sysreg-checking
Esta opção habilita as mensagens de erro que são emitidas se uma tentativa for feita de montar um acesso de registro de sistema que não será executado na arquitetura de destino.
As seguintes opções estão disponíveis quando as está configurado para um processador Alpha.
-mcpu
Esta opção especifica o processador de destino. Se uma tentativa for feita de montar uma instrução que não será executada no processador de destino, o assembler 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 assembler aceite instruções válidas para qualquer processador Alpha.
Para dar suporte à prática existente em OSF/1 com relação a ".arch" e à prática existente dentro de MILO (o bootloader Linux ARC), os nomes de processadores numerados (por exemplo, 21064) habilitam as instruções PALcode específicas do processador, enquanto os nomes "electro-vlasic" (por exemplo, "ev4") não habilitam.
-mdebug
-no-mdebug
Habilita ou desabilita a geração de encapsulamento ".mdebug" para diretivas stabs e descritores de procedimento. O padrão é habilitar automaticamente ".mdebug" quando a primeira diretiva stabs for detectada.
-relax
Esta opção força que todas as realocações sejam colocadas no arquivo de objeto, em vez de economizar espaço e resolver algumas realocações em tempo de montagem. Observe que esta opção não propaga todo o cálculo simbólico para o arquivo de objeto, porque nem todo cálculo simbólico pode ser representado. No entanto, a opção ainda pode ser útil em aplicações específicas.
-replace
-noreplace
Habilita ou desabilita a otimização de chamadas de procedimento, tanto na montagem quanto no momento da ligação. Estas opções estão disponíveis apenas para alvos VMS e "-replace" é o padrão. Veja a seção 4. 1 do Manual do Utilitário de Ligação OpenVMS.
-g Esta opção é usada quando o compilador gera informações de depuração. Quando o gcc está usando mipstfile 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 o tamanho é colocado em ".bss", enquanto símbolos menores são colocados em ".sbss".
-F
-32addr
Estas opções são ignoradas para compatibilidade com versões anteriores.
As seguintes opções estão disponíveis quando o as está configurado 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
Habilite as instruções de extensão de densidade de código.
As seguintes opções estão disponíveis quando o as está configurado para a família de processadores ARM.
-mcpu=processor[+extension...]
Especifique qual variante do processador ARM é o alvo.
-march=architecture[+extension...]
Especifique qual variante da arquitetura ARM é usada pelo alvo.
-mfpu=floating-point-format
Selecione qual arquitetura de ponto flutuante é o alvo.
-mfloat-abi=abi
Selecione qual ABI de ponto flutuante está em uso.
-mthumb
Habilite a decodificação de instruções 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 com a interoperabilidade entre código Thumb e ARM em mente.
-mccs
Ativa o modo de compatibilidade de sintaxe de montagem CodeComposer Studio.
-k Especifique que o código PIC foi gerado.
As seguintes opções estão disponíveis quando o as está configurado para a família de processadores Blackfin.
-mcpu=processor[-sirevision]
Esta opção especifica o processador de destino. O parâmetro opcional sirevision não é usado em assembler. Ele está aqui para que o GCC possa facilmente passar sua opção "-mcpu=". O assembler emitirá uma mensagem de erro se uma tentativa for feita de montar uma instrução que não será executada no processador de destino. Os seguintes nomes de processador são reconhecidos: "bf504", "bf506", "bf512", "bf514", "bf516", "bf518", "bf522", "bf523", "bf524", "bf525", "bf526", "bf527", "bf531", "bf532", "bf533", "bf534", "bf535" (ainda não implementado), "bf536", "bf537", "bf538", "bf539", "bf542", "bf542m", "bf544", "bf544m", "bf547", "bf547m", "bf548", "bf548m", "bf549", "bf549m", "bf561" e "bf592".
-mfdpic
Monta para a ABI FDPIC.
-mno-fdpic
-mnopic
Desabilita -mfdpic.
As seguintes opções estão disponíveis quando o as está configurado para a família de processadores BPF do kernel Linux.
@chapter Recursos Dependentes de BPF
Opções BPF
-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.
-mdialect=dialect
Esta opção especifica o dialeto da linguagem de montagem a ser reconhecido durante a montagem. O montador suporta normal e pseudoc.
-misa-spec=spec
Esta opção especifica a versão do conjunto de instruções BPF a ser usada durante a montagem. As versões BPF ISA suportadas são v1, v2, v3 e v4.
O valor xbpf pode ser especificado para reconhecer instruções extras que são usadas pelo GCC para fins de teste. Mas tenha cuidado, pois isso não é BPF válido.
-mno-relax
Esta opção diz ao montador para não relaxar as instruções.
Observe que, se nenhuma opção de endianness for especificada na linha de comando, a endianness do host será usada. Consulte as páginas de informações para obter documentação das opções específicas do CRIS.
As seguintes opções estão disponíveis quando o as está configurado para a família de processadores C-SKY.
-march=archname
Monta para a arquitetura archname. A opção --help lista os valores válidos para archname.
-mcpu=cpuname
Monta para a arquitetura cpuname. A opção --help lista os valores válidos para cpuname.
-EL
-mlittle-endian
Gera saída little-endian.
-EB
-mbig-endian
Gera saída big-endian.
-fpic
-pic
Gera código independente de posição.
-mljump
-mno-ljump
Habilita/desabilita a transformação das instruções de salto curto "jbf", "jbt" e "jbr" em "jmpi". Esta opção é apenas para processadores V2. Ela é ignorada nos alvos CK801 e CK802, que não suportam a instrução "jmpi", e é habilitada por padrão para outros processadores.
-mbranch-stub
-mno-branch-stub
Passa as realocações "R_CKCORE_PCREL_IMM26BY2" para as instruções "bsr" para o vinculador.
Esta opção está disponível apenas para alvos ELF bare-metal C-SKY V2, onde é habilitada por padrão. Não pode ser usada em código que será vinculado dinamicamente a bibliotecas compartilhadas.
-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr
Habilita/desabilita a transformação das instruções "jbsr" em "bsr". Esta opção é sempre habilitada (e -mno-force2bsr é ignorada) para os alvos CK801/CK802. Também é sempre habilitada quando -mbranch-stub está em vigor.
-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr
Habilita/desabilita a transformação de instruções "jsri" em "bsr". Esta opção está habilitada por padrão.
-mnolrw
-mno-lrw
Habilita/desabilita a transformação de instruções "lrw" em um par "movih"/"ori".
-melrw
-mno-elrw
Habilita/desabilita instruções "lrw" estendidas. Esta opção está habilitada por padrão para processadores da série CK800.
-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func
Habilita/desabilita o posicionamento de pools de literais após cada função.
-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br
Habilita/desabilita o posicionamento de pools de literais após desvios incondicionais. Esta opção está habilitada por padrão.
-mistack
-mno-istack
Habilita/desabilita instruções de pilha de interrupção. Esta opção está habilitada por padrão nos processadores CK801, CK802 e CK802.
As seguintes opções habilitam explicitamente certas instruções opcionais. Esses recursos também são habilitados implicitamente usando "-mcpu=" para especificar um processador que o suporte.
-mhard-float
Habilita instruções de ponto flutuante.
-mmp
Habilita instruções de multiprocessador.
-mcp
Habilita instruções de coprocessador.
-mcache
Habilita a instrução de pré-busca de cache.
-msecurity
Habilita instruções de segurança C-SKY.
-mtrust
Habilita instruções de confiança C-SKY.
-mdsp
Habilita instruções DSP.
-medsp
Habilita instruções DSP aprimoradas.
-mvdsp
Habilita instruções DSP vetoriais.
As seguintes opções estão disponíveis quando o as está configurado 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 o as está configurado para um processador H8/300. @chapter Recursos Dependentes do H8/300
Opções
A versão do "as" para Renesas H8/300 tem uma opção dependente da máquina:
-h-tick-hex
Suporta constantes hexadecimais no 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 o as está configurado para um processador i386.
--32 | --x32 | --64
Seleciona o tamanho da palavra, seja 32 bits ou 64 bits. --32 implica a arquitetura Intel i386, enquanto --x32 e --64 implicam a arquitetura AMD x86-64 com tamanho de palavra de 32 bits ou 64 bits, 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 usar x86-64 como plataforma de destino).
-n Por padrão, o x86 GAS substitui várias instruções nop usadas para alinhamento dentro das seções de código por instruções nop de vários bytes, como leal 0(%esi,1),%esi. Esta opção desativa a otimização se um único byte nop (0x90) for especificado explicitamente como o byte de preenchimento para o alinhamento.
--divide
Em plataformas derivadas do SVR4, o caractere / é tratado como um caractere de comentário, o que significa que ele não pode ser usado em expressões. A opção --divide transforma / em um caractere normal. Isso não desativa / no início de uma linha que inicia um comentário, nem afeta o uso de # para iniciar um comentário.
-march=CPU[+EXTENSION...]
Esta opção especifica o processador de destino. O assembler emitirá uma mensagem de erro se houver uma tentativa de montar uma instrução que não será executada no processador de destino. Os seguintes nomes de processador são reconhecidos: "i8086", "i186", "i286", "i386", "i486", "i586", "i686", "pentium", "pentiumpro", "pentiumii", "pentiumiii", "pentium4", "prescott", "nocona", "core", "core2", "corei7", "iamcu", "k6", "k6_2", "athlon", "opteron", "k8", "amdfam10", "bdver1", "bdver2", "bdver3", "bdver4", "znver1", "znver2", "znver3", "znver4", "znver5", "znver6", "btver1", "btver2", "generic32" e "generic64".
Além do conjunto de instruções básico, o assembler pode ser configurado para aceitar vários mnemonicos de extensão. Por exemplo, "-march=i686+sse4+vmx" estende i686 com sse4 e vmx. As seguintes extensões são suportadas atualmente: 8087, 287, 387, 687, "cmov", "fxsr", "mmx", "sse", "sse2", "sse3", "sse4a", "ssse3", "sse4.1", "sse4.2", "sse4", "avx", "avx2", "lahf_sahf", "monitor", "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", "avx512_bmm", "prefetchi", "avx_ifma", "avx_vnni_int8", "cmpccxadd", "wrmsrns", "msrlist", "avx_ne_convert", "rao_int", "fred", "lkgs", "avx_vnni_int16", "sha512", "sm3", "sm4", "pbndkb", "avx10.1", "avx10.1/512", "avx10.1/256", "avx10.1/128", "user_msr", "msr_imm", "apx_f", "apx_nci", "apx_ndd", "apx_nf", "apx_nci_ndd_nf", "avx10.2", "avx10.2/512", "avx10.2/256", "avx10.2/128", "movrs", "amx_int8", "amx_bf16", "amx_fp16", "amx_complex", "amx_transpose", "amx_tf32", "amx_fp8", "amx_movrs", "amx_avx512", "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", "rmpquery", "rmpread", "svme", "gmism2", "gmiccs", "padlockrng2", "padlockphe2", "padlockxmodx" e "padlock". Observe que esses mnemonicos de extensão podem ser prefixados com "no" para revogar a funcionalidade respectiva (e qualquer funcionalidade dependente). Observe ainda que os sufixos permitidos em "-march=avx10.<N>" impõem uma restrição de comprimento de vetor, ou seja, apesar de serem opções "de habilitação", o uso desses sufixos desativará todas as instruções com operandos de registro de máscara ou vetor mais amplos.
Quando a diretiva ".arch" é usada com -march, a diretiva ".arch" terá precedência.
-mtune=CPU
Esta opção especifica um processador para otimizar. Quando usada em conjunto com a opção -march, apenas as instruções do processador especificado pela opção -march serão geradas.
Os valores de CPU válidos são idênticos à lista de processadores de -march=CPU.
-moperand-check=none
-moperand-check=warning
-moperand-check=error
Essas opções controlam se o assembler deve verificar certos operandos ou combinações de operandos de instruções. Um exemplo de instruções onde o tamanho do operando não pode ser inferido de seus operandos e também não foi especificado por meio de um sufixo de instrução. -moperand-check=none fará com que o assembler não execute essas verificações. -moperand-check=warning fará com que o assembler emita um aviso quando as respectivas verificações falharem, que é o padrão. -moperand-check=error fará com que o assembler emita um erro quando as respectivas verificações falharem.
-msse2avx
Esta opção especifica que o assembler deve codificar as instruções SSE com o prefixo VEX, exigindo que o AVX esteja disponível. As instruções SSE que usam GPRs estendidos serão codificadas com o prefixo EVEX, exigindo que o AVX512 ou AVX10 estejam disponíveis.
-muse-unaligned-vector-move
Esta opção especifica que o assembler deve codificar a movimentação de vetores alinhados como movimentação de vetores não alinhados.
-msse-check=none
-msse-check=warning
-msse-check=error
Essas opções controlam se o assembler deve verificar as instruções SSE. -msse-check=none fará com que o assembler não verifique as instruções SSE, o que é o padrão. -msse-check=warning fará com que o assembler emita um aviso para qualquer instrução SSE. -msse-check=error fará com que o assembler emita um erro para qualquer instrução SSE.
-mavxscalar=128
-mavxscalar=256
Essas opções controlam como o assembler deve codificar as instruções AVX escalares. -mavxscalar=128 codificará as instruções AVX escalares com comprimento de vetor de 128 bits, que é o padrão. -mavxscalar=256 codificará as instruções AVX escalares com comprimento de vetor de 256 bits.
AVISO: Não use isso para código de produção - devido a erros de CPU, o código resultante pode não funcionar em determinados modelos.
-mvexwig=0
-mvexwig=1
Essas opções controlam como o assembler deve codificar as instruções VEX.W-ignored (WIG) VEX. -mvexwig=0 codificará as instruções VEX WIG com vex.w = 0, que é o padrão. -mvexwig=1 codificará as instruções EVEX WIG com vex.w = 1.
AVISO: Não use isso em código de produção - devido a erros no processador, o código resultante pode não funcionar em determinados modelos.
-mevexlig=128
-mevexlig=256
-mevexlig=512
Essas opções controlam como o assembler deve codificar as instruções EVEX com comprimento ignorado (LIG).
-mevexlig=128 codifica as instruções EVEX LIG com comprimento de vetor de 128 bits, que é o padrão. -mevexlig=256 e -mevexlig=512 codificarão as instruções EVEX LIG com comprimentos de vetor de 256 bits e 512 bits, respectivamente.
-mevexwig=0
-mevexwig=1
Essas opções controlam como o assembler deve codificar as instruções EVEX com "w" ignorado (WIG).
-mevexwig=0 codifica as instruções EVEX WIG com evex.w = 0, que é o padrão.
-mevexwig=1 codifica as instruções EVEX WIG com evex.w = 1.
-mmnemonic=att
-mmnemonic=intel
Esta opção especifica o mnemônico da instrução 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 as instruções. As diretivas ".att_syntax" e ".intel_syntax" terão precedência.
-mnaked-reg
Esta opção especifica que os registradores não exigem um prefixo "%". As diretivas ".att_syntax" e ".intel_syntax" terão precedência.
-madd-bnd-prefix
Esta opção força o assembler a adicionar o prefixo BND a todos os desvios, mesmo que esse prefixo não seja especificado explicitamente no código-fonte.
-mno-shared
No alvo ELF, o assembler normalmente otimiza as realocações não-PLT contra alvos globais definidos e não fracos com visibilidade padrão. A opção -mshared diz ao assembler para gerar código que pode ser colocado em uma biblioteca compartilhada, onde todos os alvos globais não fracos com visibilidade padrão podem ser substituídos. O código resultante é ligeiramente maior. Esta opção afeta apenas o tratamento 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 assembler deve codificar o prefixo de bloqueio. Esta opção é destinada como uma solução alternativa para processadores que falham no prefixo de bloqueio. Esta opção só pode ser usada com segurança em computadores de núcleo único e thread único. -momit-lock-prefix=yes 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 assembler deve codificar lfence, mfence e sfence.
-mfence-as-lock-add=yes 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 codificará lfence, mfence e sfence como de costume, que é o padrão.
-mrelax-relocations=no
-mrelax-relocations=yes
Estas opções controlam se o assembler deve gerar relocations "relax", R_386_GOT32X, em modo de 32 bits, ou R_X86_64_GOTPCRELX e R_X86_64_REX_GOTPCRELX em modo de 64 bits.
-mrelax-relocations=yes irá gerar relocations "relax". -mrelax-relocations=no não irá gerar relocations "relax".
-mtls-check=no
-mtls-check=yes
Estas opções controlam se o assembler deve verificar a relocation TLS. -mtls-check=yes irá verificar a relocation TLS. -mtls-check=no não irá verificar a relocation TLS. O padrão pode ser controlado por uma opção de configuração --enable-x86-tls-check.
-malign-branch-boundary=NUM
Esta opção controla como o assembler deve alinhar os desvios com prefixos de segmento ou NOP. NUM deve ser uma potência de 2. Deve ser 0 ou não inferior a 16. Os desvios serão alinhados dentro de um limite de NUM bytes. -malign-branch-boundary=0, que é o padrão, não alinha os desvios.
-malign-branch=TYPE[+TYPE...]
Esta opção especifica os tipos de desvios a serem alinhados. TYPE é uma combinação de jcc, que alinha desvios condicionais, fused, que alinha desvios condicionais fundidos, jmp, que alinha desvios incondicionais, call, que alinha chamadas, ret, que alinha retornos, indirect, que alinha desvios e chamadas indiretas. 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 os desvios. NUM deve estar entre 0 e 5. O NUM padrão é 5.
-mlbranches-within-32B-boundaries
Esta opção alinha desvios condicionais, desvios condicionais fundidos e desvios incondicionais dentro de um 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 os desvios.
-mlfence-after-load=no
-mlfence-after-load=yes
Estas opções controlam se o assembler deve gerar lfence após as instruções de carregamento. -mlfence-after-load=yes 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
Estas opções controlam se o assembler deve gerar lfence antes das instruções de desvio indireto próximo. -mlfence-before-indirect-branch=all irá gerar lfence antes do desvio indireto próximo via registro e emitirá um aviso antes do desvio indireto próximo via memória. Também define implicitamente -mlfence-before-ret=shl quando não houver um -mlfence-before-ret explícito. -mlfence-before-indirect-branch=register irá gerar lfence antes do desvio indireto próximo via registro. -mlfence-before-indirect-branch=memory irá emitir um aviso antes do desvio indireto próximo via memória. -mlfence-before-indirect-branch=none não irá gerar lfence nem emitir aviso, que é o padrão. Note que lfence não será gerado antes do desvio indireto próximo via registro com -mlfence-after-load=yes, pois lfence será gerado após o carregamento do registro de destino do desvio.
-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 a instrução lfence antes da instrução ret.
-mlfence-before-ret=or gerará a instrução or com lfence.
-mlfence-before-ret=shl/yes gerará a instrução shl com lfence.
-mlfence-before-ret=not gerará a instrução not com lfence. -mlfence-before-ret=none não gerará lfence, que é o padrão.
-mx86-used-note=no
-mx86-used-note=yes
Essas opções controlam se o montador deve gerar as notas de propriedade GNU GNU_PROPERTY_X86_ISA_1_USED e
^ NU_PROPERTY_X86_FEATURE_2_USED. O padrão pode ser controlado pela opção --enable-x86-used-note durante a configuração.
-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz
Essas opções controlam como o montador deve codificar as instruções EVEX SAE (Single-precision Atomic Extension). -mevexrcig=rne codificará os bits RC da instrução EVEX com 00, que é o padrão. -mevexrcig=rd, -mevexrcig=ru e -mevexrcig=rz codificarão as instruções EVEX SAE com 01, 10 e 11 nos bits RC, respectivamente.
-mamd64
-mintel64
Essa opção especifica que o montador deve aceitar apenas a ISA AMD64 ou Intel64 no modo de 64 bits. O padrão é aceitar ISAs comuns, Intel64 e AMD64.
-O0 | -O | -O1 | -O2 | -Os
Otimiza a codificação de instruções com um tamanho de instrução menor. -O e -O1 codificam instruções de carga de registro de 64 bits com imediato de 64 bits como instruções de carga de registro de 32 bits com imediatos de 31 bits ou 32 bits, codificam instruções de limpeza de registro de 64 bits como instruções de limpeza de registro de 32 bits, codificam instruções de limpeza de registro VEX/EVEX vetorial de 256/512 bits como instruções de limpeza de registro vetorial VEX de 128 bits, codificam instruções de carga/armazenamento de registro vetorial EVEX de 128/256 bits como instruções de carga/armazenamento de registro vetorial VEX e codificam instruções lógicas de inteiro empacotado EVEX de 128/256 bits como inteiros empacotados VEX de 128 bits/256 bits.
-O2 inclui a otimização -O1 e também codifica instruções de limpeza de registro vetorial EVEX de 256/512 bits como instruções de limpeza de registro vetorial EVEX de 128 bits. No modo de 64 bits, as instruções codificadas VEX com operandos de origem comutativos também terão seus operandos de origem trocados, se isso permitir o uso da forma de prefixo VEX de 2 bytes em vez da forma de 3 bytes. Certas formas de AND, bem como OR com o mesmo operando (registro) especificado duas vezes, também serão alteradas para TEST.
-Os inclui as otimizações -O2, além de codificar os testes de registradores de 16, 32 e 64 bits com
o imediato como um teste de registrador de 8 bits com imediato. -O0 desativa essa otimização.
As seguintes opções estão disponíveis quando o as está configurado para a série Ubicom IP2K.
-mip2022ext
Especifica que as instruções estendidas do IP2022 são permitidas.
-mip2022
Restaura o comportamento padrão, que restringe as instruções permitidas apenas às básicas do
IP2022.
As seguintes opções estão disponíveis quando o as está configurado para os processadores Renesas M32C e M16C.
-m32c
Monta as instruções M32C.
-m16c
Monta as instruções M16C (o padrão).
-relax
Habilita o suporte para relaxamentos em tempo de link.
-h-tick-hex
Suporta constantes hexadecimais no estilo H'00, além do estilo 0x00.
As seguintes opções estão disponíveis quando o as está configurado para a série Renesas M32R (anteriormente Mitsubishi M32R).
--m32rx
Especifica qual processador na família M32R é o alvo. O padrão é normalmente o M32R,
mas esta opção o altera para o M32RX.
--warn-explicit-parallel-conflicts ou --Wp
Produz mensagens de aviso quando construções paralelas questionáveis são encontradas.
--no-warn-explicit-parallel-conflicts ou --Wnp
Não produz mensagens de aviso quando construções paralelas questionáveis são encontradas.
As seguintes opções estão disponíveis quando o as está configurado para a série Motorola 68000.
-l
Encurta as referências para símbolos não definidos, para uma palavra em vez de duas.
-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
Especifica qual processador na 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 alvo tem (ou não tem) 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 alvo tem (ou não tem) um coprocessador de unidade de gerenciamento de memória. O padrão
é assumir uma MMU para 68020 e superiores.
Para obter detalhes sobre as opções de recursos dependentes da máquina PDP-11, consulte PDP-11-Options.
-mpic | -mno-pic
Gera código independente de posição (ou dependente de posição). O padrão é -mpic.
-mall
-mall-extensions
Habilita todas as extensões do conjunto de instruções. Este é o padrão.
-mno-extensions
Desabilita todas as extensões do conjunto de instruções.
-mextension | -mno-extension
Habilita (ou desabilita) uma extensão específica do conjunto de instruções.
-mcpu
Habilita as extensões do conjunto de instruções suportadas por uma CPU específica e desabilita todas as outras
extensões.
-mmachine
Habilita as extensões do conjunto de instruções suportadas por um modelo de máquina específico e desabilita todas as outras
extensões.
As seguintes opções estão disponíveis quando o as está configurado para um processador picoJava.
-mb Gera saída no formato "big endian".
-ml Gera saída no formato "little endian".
As seguintes opções estão disponíveis quando o as está configurado para um processador PRU.
-mlink-relax
Assume que o LD otimizaria as instruções LDI32 verificando os 16 bits superiores da expressão. Se todos forem zero, o LD encurtaria a instrução LDI32 para uma única LDI. Nesse caso, o `as` emitirá relocações DIFF para expressões diferentes.
-mno-link-relax
Assume que o LD não otimizará as instruções LDI32. Consequentemente, as relocações DIFF não serão emitidas.
-mno-warn-regname-label
Não emita um aviso se um nome de rótulo corresponder a um nome de registro. Normalmente, os programadores de assembly desejam que este aviso seja emitido. Os compiladores C podem querer desativá-lo.
As seguintes opções estão disponíveis quando o as está configurado 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". Só é aceito para destinos que usam o formato ECOFF, como um DECstation executando o Ultrix. O valor padrão é 8.
-EB Gera saída no 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 uma arquitetura de conjunto de instruções MIPS específica. -mips1 é um alias para -march=r3000, -mips2 é um alias para -march=r6000, -mips3 é um alias para -march=r4000 e -mips4 é um alias para -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5 e -mips64r6 correspondem aos processadores MIPS V genéricos, 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 Release 6 ISA, respectivamente.
-march=cpu
Gera código para uma CPU MIPS específica.
-mtune=cpu
Agenda e otimiza para uma CPU MIPS específica.
-mfix7000
-mno-fix7000
Faz com que instruções `nop` sejam inseridas se a leitura do registro de destino de uma instrução `mfhi` ou `mflo` ocorrer nas duas instruções seguintes.
-mfix-rm7000
-mno-fix-rm7000
Faz com que instruções `nop` sejam inseridas se uma instrução `dmult` ou `dmultu` for seguida por uma instrução de carregamento.
-mfix-r5900
-mno-fix-r5900
Não tenta agendar a instrução precedente no slot de atraso de uma instrução de ramificação colocada no final de um loop curto de seis instruções ou menos e sempre agenda uma instrução "nop" lá em vez disso. O bug do 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 no estilo stabs vá para uma seção ECOFF-style .mdebug em vez das seções ELF .stabs padrão.
-mpdr
-mno-pdr
Controla a geração de seções ".pdr".
-mgp32
-mfp32
Normalmente, os tamanhos dos registradores são inferidos da ISA e da ABI, mas essas flags forçam que um certo grupo de registradores seja tratado como tendo 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
Normalmente, os tamanhos dos registradores são inferidos da ISA e da ABI, mas essas flags forçam que um certo grupo de registradores seja tratado como tendo 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 da ISA e da ABI, mas o uso desta flag em combinação com -mabi=32 habilita uma variante da ABI que operará corretamente com registradores de ponto flutuante que têm 32 ou 64 bits de largura.
-modd-spreg
-mno-odd-spreg
Habilita o uso de operações de ponto flutuante em registradores de precisão simples de número ímpar quando suportado pela ISA. -mfpxx implica -mno-odd-spreg; caso contrário, o padrão é -modd-spreg.
-mips16
-no-mips16
Gera código para o processador MIPS 16. Isso é equivalente a colocar ".module mips16" no início do arquivo de assembly. -no-mips16 desativa esta opção.
-mmips16e2
-mno-mips16e2
Habilita o uso de instruções MIPS16e2 no modo MIPS16. Isso é equivalente a colocar ".module mips16e2" no início do arquivo de assembly. -mno-mips16e2 desativa esta opção.
-mmicromips
-mno-micromips
Gera código para o processador microMIPS. Isso é equivalente a colocar ".module micromips" no início do arquivo de assembly. -mno-micromips desativa esta opção. Isso é equivalente a colocar ".module nomicromips" no início do arquivo de assembly.
-msmartmips
-mno-smartmips
Habilita a extensão SmartMIPS do conjunto de instruções MIPS32. Isso é equivalente a colocar ".module smartmips" no início do arquivo de assembly. -mno-smartmips desativa esta opção.
-mips3d
-no-mips3d
Gera código para a Extensão Específica de Aplicação MIPS-3D. Isso diz ao assembler para aceitar instruções MIPS-3D. -no-mips3d desativa esta opção.
-mdmx
-no-mdmx
Gera código para a Extensão Específica de Aplicação MDMX. Isso diz ao assembler para aceitar instruções MDMX. -no-mdmx desativa esta opção.
-mdsp
-mno-dsp
Gera código para a Extensão Específica de Aplicação DSP Release 1. Isso diz ao assembler para aceitar instruções DSP Release 1. -mno-dsp desativa esta opção.
-mdspr2
-mno-dspr2
Gera código para a Extensão Específica de Aplicação DSP Release 2. Esta opção implica -mdsp. Isso diz ao assembler para aceitar instruções DSP Release 2. -mno-dspr2 desativa esta opção.
-mdspr3
-mno-dspr3
Gera código para a Extensão Específica de Aplicação DSP Release 3. Esta opção implica -mdsp e -mdspr2. Isso diz ao assembler para aceitar instruções DSP Release 3. -mno-dspr3 desativa esta opção.
-mmsa
-mno-msa
Gera código para a Extensão SIMD da Arquitetura MIPS. Isso diz ao assembler para aceitar instruções MSA. -mno-msa desativa esta opção.
-mxpa
-mno-xpa
Gera código para a Extensão de Endereço Físico Estendido (XPA) do MIPS. Isso diz ao assembler para aceitar instruções XPA. -mno-xpa desativa esta opção.
-mmt
-mno-mt
Gera código para a Extensão Específica da Aplicação MT. Isso diz ao assembler para aceitar instruções MT. -mno-mt desativa esta opção.
-mmcu
-mno-mcu
Gera código para a Extensão Específica da Aplicação MCU. Isso diz ao assembler para aceitar instruções MCU. -mno-mcu desativa esta opção.
-mcrc
-mno-crc
Gera código para a Extensão Específica da Aplicação de Verificação de Redundância Cíclica (CRC) do MIPS. Isso diz ao assembler para aceitar instruções CRC. -mno-crc desativa esta opção.
-mginv
-mno-ginv
Gera código para a Extensão Específica da Aplicação de Invalidação Global (GINV). Isso diz ao assembler para aceitar instruções GINV. -mno-ginv desativa esta opção.
-mloongson-mmi
-mno-loongson-mmi
Gera código para a Extensão Específica da Aplicação de Instruções Multimídia Loongson (MMI). Isso diz ao assembler para aceitar instruções MMI. -mno-loongson-mmi desativa esta opção.
-mloongson-cam
-mno-loongson-cam
Gera código para as instruções de Memória de Endereçamento de Conteúdo (CAM) do Loongson. Isso diz ao assembler para aceitar instruções Loongson CAM. -mno-loongson-cam desativa esta opção.
-mloongson-ext
-mno-loongson-ext
Gera código para as instruções de Extensões (EXT) do Loongson. Isso diz ao assembler para aceitar instruções Loongson EXT. -mno-loongson-ext desativa esta opção.
-mloongson-ext2
-mno-loongson-ext2
Gera código para as instruções de Extensões R2 (EXT2) do Loongson. Esta opção implica -mloongson-ext. Isso diz ao assembler para aceitar 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 impede o uso de quaisquer instruções de 16 bits. Isso é equivalente a colocar ".set insn32" no início do arquivo de assembly. -mno-insn32 desativa esta opção. Isso é equivalente a colocar ".set noinsn32" no início do arquivo de assembly. Por padrão, -mno-insn32 é selecionado, permitindo o uso de todas as instruções.
--construct-floats
--no-construct-floats
A opção --no-construct-floats desabilita a construção de constantes de ponto flutuante de dupla largura, carregando as duas metades do valor nos dois registradores de ponto flutuante de largura única que compõem o registrador de dupla largura. 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 habilita o relaxamento de desvios fora da faixa. Por padrão, --no-relax-branch é selecionada, fazendo com que qualquer desvio fora da faixa produza um erro.
-mignore-branch-isa
-mno-ignore-branch-isa
Ignora as verificações de desvio para transições inválidas entre modos ISA. A semântica dos desvios não prevê uma mudança de modo ISA, portanto, na maioria dos casos, o modo ISA para o qual um desvio foi codificado deve ser o mesmo que o modo ISA do rótulo de destino do desvio. Portanto, o GAS tem verificações implementadas que verificam na montagem do desvio se os dois modos ISA correspondem. -mignore-branch-isa desabilita essas verificações. Por padrão, -mno-ignore-branch-isa é selecionada, fazendo com que qualquer desvio inválido que exija uma transição entre modos ISA produza um erro.
-mnan=encoding
Seleciona entre a codificação NaN IEEE 754-2008 (-mnan=2008) ou a codificação NaN legada (-mnan=legacy). A última é o padrão.
--emulation=name
Esta opção era usada para alternar entre as saídas ELF e ECOFF em alvos como IRIX 5 que suportavam ambos. O suporte a MIPS ECOFF foi removido no GAS 2.24, portanto, a opção agora tem pouca utilidade. Ela é mantida para compatibilidade com versões anteriores.
Os nomes de configuração disponíveis são: mipself, mipslelf e mipsbelf. Escolher mipself não tem efeito agora, pois a saída é sempre ELF. mipslelf e mipsbelf selecionam a saída little-endian e big-endian, respectivamente, mas -EL e -EB são agora as opções preferidas.
-nocpp
as ignora esta opção. Ela é aceita para compatibilidade com as ferramentas nativas.
--trap
--no-trap
--break
--no-break
Controla como lidar com estouro de multiplicação e divisão por zero. --trap ou --no-break (que são sinônimos) geram uma exceção de interrupção (e só funcionam para o nível de arquitetura de conjunto de instruções 2 ou superior); --break ou --no-trap (também sinônimos e o padrão) geram uma exceção de interrupção.
-n Quando esta opção é usada, as emitirá um aviso sempre que gerar uma instrução nop de um macro.
As seguintes opções estão disponíveis quando as é configurado para um processador LoongArch.
-fpic
-fPIC
Gera código independente de posição
-fno-pic
Não gera código independente de posição (padrão)
As seguintes opções estão disponíveis quando as é configurado para um processador Meta.
"-mcpu=metac11"
Gera código para Meta 1.1.
"-mcpu=metac12"
Gera código para Meta 1.2.
"-mcpu=metac21"
Gera código para Meta 2.1.
"-mfpu=metac21"
Permite que o código use o hardware FPU do Meta 2.1.
Consulte as páginas de informações para obter documentação sobre as opções específicas do MMIX.
As seguintes opções estão disponíveis quando as é configurado para um processador NDS32.
"-O1"
Otimiza para desempenho.
"-Os"
Otimiza para espaço.
"-EL"
Produz saída de dados little endian.
"-EB"
Produz saída de dados little endian.
"-mpic"
Gera PIC.
"-mno-fp-as-gp-relax"
Suprime o relaxamento fp-as-gp para este arquivo.
"-mb2bb-relax"
Otimização de desvio de volta a volta.
"-mno-all-relax"
Suprime todos os relaxamentos para este arquivo.
"-march=<arch name>"
Compile para a arquitetura <arch name>, que pode ser v3, v3j, v3m, v3f, v3s, v2, v2j, v2f,
v2s.
"-mbaseline=<baseline>"
Compile para a linha de base <baseline>, que pode ser v2, v3, v3m.
"-mfpu-freg=FREG"
Especifique uma configuração da 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 de ABI <abi>, que pode ser v1, v2, v2fp, v2fpp.
"-m[no-]mac"
Habilita/Desabilita o suporte para instruções de multiplicação.
"-m[no-]div"
Habilita/Desabilita o suporte para instruções de divisão.
"-m[no-]16bit-ext"
Habilita/Desabilita a extensão de 16 bits.
"-m[no-]dx-regs"
Habilita/Desabilita os registradores d0/d1.
"-m[no-]perf-ext"
Habilita/Desabilita a extensão de desempenho.
"-m[no-]perf2-ext"
Habilita/Desabilita a extensão de desempenho 2.
"-m[no-]string-ext"
Habilita/Desabilita a extensão de string.
"-m[no-]reduced-regs"
Habilita/Desabilita a configuração de registradores reduzidos (GPR16).
"-m[no-]audio-isa-ext"
Habilita/Desabilita a extensão AUDIO ISA.
"-m[no-]fpu-sp-ext"
Habilita/Desabilita a extensão FPU SP.
"-m[no-]fpu-dp-ext"
Habilita/Desabilita a extensão FPU DP.
"-m[no-]fpu-fma"
Habilita/Desabilita as instruções de multiplicação-adição fundida da FPU.
"-mall-ext"
Ativa todas as extensões e o suporte de instruções.
As seguintes opções estão disponíveis quando o as está configurado para um processador PowerPC.
-a32
Gera ELF32 ou XCOFF32.
-a64
Gera ELF64 ou XCOFF64.
-K PIC
Define EF\_PPC\_RELOCATABLE\_LIB nas flags ELF.
-mpwrx | -mpwr2
Gera código para POWER/2 (RIOS2).
-mpwr
Gera código para POWER (RIOS1).
-m601
Gera código para PowerPC 601.
-mppc, -mppc32, -m603, -m604
Gera código para PowerPC 603/604.
-m403, -m405
Gera código para PowerPC 403/405.
-m440
Gera código para PowerPC 440. BookE e algumas instruções 405.
-m464
Gera código para PowerPC 464.
-m476
Gera código para PowerPC 476.
-m7400, -m7410, -m7450, -m7455
Gera código para PowerPC 7400/7410/7450/7455.
-m750cl, -mgekko, -mbroadway
Gera código para PowerPC 750CL/Gekko/Broadway.
-m821, -m850, -m860
Gera código para PowerPC 821/850/860.
-mppc64, -m620
Gera código para PowerPC 620/625/630.
-me200z2, -me200z4
Gera código para variantes e200, e200z2 com LSP, e200z4 com SPE.
-me300
Gera código para a família PowerPC e300.
-me500, -me500x2
Gera código para o complexo de núcleo Motorola e500.
-me500mc
Gera código para o complexo de núcleo Freescale e500mc.
-me500mc64
Gera código para o complexo de núcleo Freescale e500mc64.
-me5500
Gera código para o complexo de núcleo Freescale e5500.
-me6500
Gera código para o complexo de núcleo Freescale e6500.
-mlsp
Habilita as instruções LSP. (Desativa SPE e SPE2.)
-mspe
Gera código para as instruções Motorola SPE. (Desativa LSP.)
-mspe2
Gera código para as instruções Freescale SPE2. (Desativa LSP.)
-mtitan
Gera código para o complexo de núcleo AppliedMicro Titan.
-mppc64bridge
Gera código para PowerPC 64, incluindo instruções de ponte.
-mbooke
Gera código para BookE de 32 bits.
-ma2
Gera código para a arquitetura A2.
-maltivec
Gera código para processadores com instruções AltiVec.
-mvle
Gera código para instruções Freescale PowerPC VLE.
-mvsx
Gera código para processadores com instruções Vector-Scalar (VSX).
-mhtm
Gera código para processadores com instruções Hardware Transactional Memory.
-mpower4, -mpwr4
Gera código para a arquitetura Power4.
-mpower5, -mpwr5, -mpwr5x
Gera código para a arquitetura Power5.
-mpower6, -mpwr6
Gera código para a arquitetura Power6.
-mpower7, -mpwr7
Gera código para a arquitetura Power7.
-mpower8, -mpwr8
Gera código para a arquitetura Power8.
-mpower9, -mpwr9
Gera código para a arquitetura Power9.
-mpower10, -mpwr10
Gera código para a arquitetura Power10.
-mpower11, -mpwr11
Gera código para a arquitetura Power11.
-mfuture
Gera código para a arquitetura 'future'.
-mcell
Gera código para a arquitetura Cell Broadband Engine.
-mcom
Gera instruções comuns Power/PowerPC.
-many
Gera código para qualquer arquitetura (PWR/PWRX/PPC).
-mregnames
Permite nomes simbólicos para registradores.
-mno-regnames
Não permite 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
Define o bit PPC\_EMB nas flags ELF.
-mlittle, -mlittle-endian, -le
Gera código para uma máquina little endian.
-mbig, -mbig-endian, -be
Gera código para uma máquina big endian.
-nops=count
Se uma diretiva de alinhamento inserir mais de 'count' instruções NOP, coloque um desvio no início para ignorar a execução das instruções NOP.
As seguintes opções estão disponíveis quando o as está configurado para um processador RISC-V.
-fpic
-fPIC
Gera código independente de posição.
-fno-pic
Não gera código independente de posição (padrão).
-march=ISA|Profiles|Profiles_ISA
Seleciona a ISA base, conforme especificado por ISA ou Profiles ou Profiles\_ISA. Por exemplo:
-march=rv32ima -march=RVI20U64 -march=RVI20U64_d. Se esta opção e os atributos de arquitetura não forem definidos, o assembler verificará a configuração padrão --with-arch=ISA.
-misa-spec=ISAspec
Seleciona a versão padrão da especificação ISA. Se a versão da ISA não for definida por -march, o assembler ajuda a definir a versão de acordo com a especificação escolhida padrão. Se esta opção não for definida, o assembler verificará a configuração padrão --with-isa-spec=ISAspec.
-mpriv-spec=PRIVspec
Seleciona a versão da 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 assembler verificará a configuração padrão --with-priv-spec=PRIVspec.
-mabi=ABI
Seleciona a ABI, que é "ilp32" ou "lp64", opcionalmente seguido por "f", "d" ou "q" para indicar a convenção de chamada de ponto flutuante de precisão simples, dupla ou quádrupla, ou nenhum ou "e" para indicar a convenção de chamada de ponto flutuante soft ("e" indica uma ABI RVE de ponto flutuante soft).
-mrelax
Aproveite as relaxações do linker para reduzir o número de instruções necessárias para
materializar os endereços dos símbolos. (padrão)
-mno-relax
Não realize relaxações do linker.
-march-attr
Gere o conteúdo padrão para a seção de atributos RISC-V ELF se as diretivas .attribute
não estiverem definidas. Esta seção é usada para registrar as informações que um linker ou
carregador em tempo de execução precisa verificar para compatibilidade. Essas informações incluem a string ISA, o requisito de alinhamento da pilha, acessos de memória não alinhados e as versões principal, secundária e de revisão da especificação privilegiada.
-mno-arch-attr
Não gere a seção de atributos RISC-V ELF padrão se as diretivas .attribute não estiverem definidas.
-mcsr-check
Habilite a verificação de CSR para os CSRs dependentes da ISA e os CSRs somente leitura. Os CSRs dependentes da ISA são válidos apenas quando a ISA específica está definida. Os CSRs somente leitura não podem ser gravados pelas instruções CSR.
-mno-csr-check
Não realize a verificação de CSR.
-mlittle-endian
Gere código para uma máquina little-endian.
-mbig-endian
Gere código para uma máquina big-endian.
Consulte as páginas de informações para obter documentação sobre as opções específicas do RX.
As seguintes opções estão disponíveis quando o as está configurado para a família de processadores s390.
-m31
-m64
Selecione o tamanho da palavra, seja 31/32 bits ou 64 bits.
-mesa
-mzarch
Selecione o modo de arquitetura, seja a Arquitetura de Sistema Empresarial (esa) ou o modo de
Arquitetura z (zarch).
-march=processador
Especifique qual variante de 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), z16 (ou arch14) ou z17 (ou arch15).
-mregnames
-mno-regnames
Permita ou impeça nomes simbólicos para os registradores.
-mwarn-areg-zero
Avise sempre que o operando para um registrador de base ou índice tenha sido especificado, mas
seja avaliado como zero.
-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch
Controla se o assembler realiza verificações de tipo de nome de registrador e gera uma mensagem
de aviso em caso de incompatibilidade com o tipo de registrador do operando. O padrão (que pode
ser restaurado usando o argumento relaxado) é realizar verificações de tipo de nome de registrador
relaxadas, que permitem que os nomes de registradores de ponto flutuante (FPR) %f0 a %f15 sejam
especificados como argumento para os operandos de registradores vetoriais (VR) e os nomes de
registradores vetoriais (VR) %v0 a %v15 sejam especificados como argumento para os operandos
de registradores de ponto flutuante (FPR). Isso é aceitável, pois os FPRs são incorporados na
metade inferior dos VRs. Usar o argumento estrito realiza verificações de tipo de nome de
registrador estritas. O argumento "no", que é equivalente a -mno-warn-regtype-mismatch,
desabilita todas as verificações de tipo de nome de registrador.
As seguintes opções estão disponíveis quando o as está configurado para um processador TMS320C6000.
-march=arch
Habilita (apenas) 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 assembler gere o atributo "Tag_ABI_DSBT" com um valor de 1, indicando que o código está usando o endereçamento DSBT. A opção -mno-dsbt, que é o padrão, faz com que a tag tenha um valor de 0, indicando que o código não usa o endereçamento DSBT. O linker emitirá um aviso se objetos de tipos diferentes (DSBT e não-DSBT) forem vinculados.
-mpid=no
-mpid=near
-mpid=far
A opção -mpid= faz com que o assembler gere o atributo "Tag_ABI_PID" com um valor indicando o formulário de endereçamento de dados usado pelo código. -mpid=no, que é o padrão, indica o endereçamento de dados dependente da posição, -mpid=near indica o endereçamento independente da posição com acessos GOT usando o endereçamento DP próximo e -mpid=far indica o endereçamento independente da posição com acessos GOT usando o endereçamento DP distante. O linker emitirá um aviso se objetos criados com configurações diferentes desta opção forem vinculados.
-mpic
-mno-pic
A opção -mpic faz com que o assembler gere o atributo "Tag_ABI_PIC" com um valor de 1, indicando que o código está usando o endereçamento de código independente da posição. A opção "-mno-pic", que é o padrão, faz com que a tag tenha um valor de 0, indicando o endereçamento de código dependente da posição. O linker emitirá um aviso se objetos de tipos diferentes (dependente da posição e independente da posição) forem vinculados.
-mbig-endian
-mlittle-endian
Gera código para a ordem de bytes especificada. O padrão é little-endian.
As seguintes opções estão disponíveis quando o as está configurado para um processador TILE-Gx.
-m32 | -m64
Seleciona o tamanho da palavra, seja 32 bits ou 64 bits.
-EB | -EL
Seleciona a ordem de bytes, seja big-endian (-EB) ou little-endian (-EL).
A seguinte opção está disponível quando o as está configurado para um processador Visium.
-mtune=arch
Esta opção especifica a arquitetura de destino. Se uma tentativa for feita para montar uma instrução que não será executada na arquitetura de destino, o assembler emitirá uma mensagem de erro.
Os seguintes nomes são reconhecidos: "mcm24", "mcm", "gr5", "gr6".
As seguintes opções estão disponíveis quando o as está configurado para um processador Xtensa.
--text-section-literals | --no-text-section-literals
Controla o tratamento de pools de 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 de literais seja colocado em uma RAM/ROM de dados. Com --text-section-literals, os literais são intercalados na seção de texto, a fim de mantê-los o mais próximo possível de suas referências. Isso pode ser necessário para arquivos de montagem grandes, onde os literais estariam fora do alcance das instruções "L32R" na seção de texto. Os literais são agrupados em pools seguindo os diretivos ".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 instruções "L32R" de modo absoluto são tratados separadamente.
--auto-litpools | --no-auto-litpools
Controla o tratamento de pools de 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 de literais 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 explícitas ".literal_position" não são necessárias. Isso pode ser
necessário para funções muito grandes, onde um único pool de literais no início da
função pode não ser acessível por instruções "L32R" no final. Essas opções afetam apenas
literais referenciados por meio de instruções "L32R" relativas ao PC; literais para instruções
"L32R" de modo absoluto são tratados separadamente. Quando usado em conjunto com
--text-section-literals, --auto-litpools tem precedência.
--absolute-literals | --no-absolute-literals
Indica ao assembler 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
Habilita ou desabilita o alinhamento automático para reduzir as penalidades de ramificação,
às custas de um aumento no tamanho do código. Essa otimização está habilitada por padrão.
Observe que o assembler sempre alinhará instruções como "LOOP" que têm requisitos de alinhamento fixos.
--longcalls | --no-longcalls
Habilita ou desabilita a transformação de instruções de chamada para permitir chamadas em
uma faixa maior de endereços. Esta opção deve ser usada quando os destinos de chamada podem
potencialmente estar fora da faixa. Pode degradar o tamanho do código e o desempenho, mas o
linker geralmente pode otimizar o overhead desnecessário quando uma chamada acaba estando dentro da faixa.
O padrão é --no-longcalls.
--transform | --no-transform
Habilita ou desabilita todas as transformações de instruções Xtensa pelo assembler, incluindo
relaxamento e otimização. O padrão é --transform; --no-transform só deve ser usado nos casos
raros em que as instruções devem ser exatamente como especificadas no código-fonte do assembly.
Usar --no-transform faz com que operandos de instruções fora da faixa causem erros.
--rename-section oldname=newname
Renomeia a seção oldname para newname. Esta opção pode ser usada várias vezes para renomear
múltiplas seções.
--trampolines | --no-trampolines
Habilita ou desabilita a transformação de instruções de salto para permitir saltos em uma faixa
maior de endereços. Esta opção deve ser usada quando os destinos de salto podem
potencialmente estar fora da faixa. Na ausência de tais saltos, esta opção não afeta o tamanho
do código ou o desempenho. O padrão é --trampolines.
--abi-windowed | --abi-call0
Escolha a tag ABI a ser gravada na seção ".xtensa.info". A tag ABI indica a ABI do código de montagem. 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 do núcleo Xtensa.
As seguintes opções estão disponíveis quando o 'as' está configurado 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 assembler emitirá uma mensagem de erro se for feita uma tentativa de montar uma instrução que não será executada no processador de destino. Os seguintes nomes de processador são reconhecidos: "z80", "z180", "ez80", "gbz80", "z80n", "r800". Além do conjunto de instruções básico, o assembler pode ser instruído a aceitar alguns mnemônicos de extensão. Por exemplo, "-march=z180+sli+infc" estende z180 com as instruções SLI e IN F,(C). As seguintes extensões são suportadas atualmente: "full" (todas as instruções conhecidas), "adl" (modo ADL CPU por padrão, apenas eZ80), "sli" (instrução conhecida como SLI, SLL ou SL1), "xyhl" (instruções com metades dos 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 de instruções básico, os mnemônicos de extensão que começam com "-" revogam a funcionalidade respectiva: "-march=z80-full+xyhl" primeiro remove todas as extensões padrão e adiciona suporte para metades de registradores de índice.
Se esta opção não for especificada, "-march=z80+xyhl+infc" será assumido.
-local-prefix=prefix
Marque todos os rótulos com o prefixo especificado como locais. Mas esse rótulo pode ser marcado explicitamente como global no código. Esta opção não altera o prefixo de rótulo local padrão ".L", apenas adiciona um novo.
-colonless
Aceite rótulos sem dois pontos. Todos os símbolos no início da linha são tratados como rótulos.
-sdcc
Aceite código assembler produzido por 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) e as entradas de informações para binutils e ld.
DIREITOS AUTORAIS
Copyright (c) 1991-2025 Free Software Foundation, Inc.
A permissão é concedida 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 e sem Textos de Contracapa. Uma cópia da licença está incluída na seção intitulada "GNU Free Documentation License".