AS - l'assembleur GNU portable.
SYNTAXE
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 ...]
CIBLE
Options de la cible AArch64 : [-EB|-EL] [-mabi=ABI]
Options de la cible Alpha : [-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]
Options de la cible ARC : [-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]
Options de la cible 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]
Options de la cible Blackfin : [-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]
Options de la cible BPF : [-EL] [-EB]
Options de la cible CRIS : [--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
Options de la cible 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]
Options de la cible D10V : [-O]
Options de la cible D30V : [-O|-n|-N]
Options de la cible EPIPHANY : [-mepiphany|-mepiphany16]
Options de la cible H8/300 : [-h-tick-hex]
Options de cible i386 : [--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]
Options de cible 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]
Options de cible IP2K : [-mip2022|-mip2022ext]
Options de cible M32C : [-m32c|-m16c] [-relax] [-h-tick-hex]
Options de cible M32R : [--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]
Options de cible M680X0 : [-l] [-m68000|-m68010|-m68020|...]
Options de cible 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]
Options de cible MCORE : [-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]
Options de cible Meta : [-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu]
Options de cible MICROBLAZE : [-mlittle-endian] [-mbig-endian]
Options de cible MIPS : [-nocpp] [-EL] [-EB] [-O[niveau d’optimisation]] [-g[niveau de débogage]] [-G nombre] [-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=encodage] [-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]
Options de cible MMIX : [--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]
Options de cible 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]
Options de cible PDP11 : [-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]
Options cibles picoJava : [-mb|-me]
Options cibles 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]
Options cibles PRU : [-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
Options cibles RISC-V : [-fpic|-fPIC|-fno-pic] [-march=ISA|Profiles|Profiles_ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]
Options cibles RL78 : [-mg10] [-m32bit-doubles|-m64bit-doubles]
Options cibles 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]
Options cibles 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]
Options cibles SCORE : [-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]
Options cibles 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]
Options cibles TIC54X :
[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
[-merrors-to-file
Options cibles TIC6X : [-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]
Options cibles TILE-Gx : [-m32|-m64][-EB][-EL]
Options cibles Visium : [-mtune=arch]
Options cibles 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]
Options cibles Z80 : [-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]
DESCRIPTION
GNU as est en réalité une famille d'assembleurs. Si vous utilisez (ou avez utilisé) l'assembleur GNU sur une architecture, vous devriez trouver un environnement assez similaire lorsque vous l'utilisez sur une autre architecture. Chaque version a beaucoup en commun avec les autres, notamment les formats de fichiers objets, la plupart des directives d'assembleur (souvent appelées pseudo-opérations) et la syntaxe de l'assembleur.
as est principalement conçu pour assembler la sortie du compilateur GNU C « gcc » pour une utilisation par l'éditeur de liens « ld ». Néanmoins, nous avons essayé de faire en sorte que as assemble correctement tout ce que les autres assembleurs pour la même machine assembleraient. Toutes les exceptions sont explicitement documentées. Cela ne signifie pas que as utilise toujours la même syntaxe qu'un autre assembleur pour la même architecture ; par exemple, nous connaissons plusieurs versions incompatibles de la syntaxe du langage assembleur 680x0.
Chaque fois que vous exécutez as, il assemble exactement un programme source. Le programme source est constitué d'un ou plusieurs fichiers. (L'entrée standard est également un fichier.)
Vous donnez à as une ligne de commande qui contient zéro ou plusieurs noms de fichiers d'entrée. Les fichiers d'entrée sont lus (de gauche à droite). Un argument de ligne de commande (dans n'importe quelle position) qui n'a pas de signification particulière est considéré comme un nom de fichier d'entrée.
Si vous ne donnez à as aucun nom de fichier, il tente de lire un fichier d'entrée à partir de l'entrée standard de as, qui est normalement votre terminal. Vous devrez peut-être taper Ctrl+D pour indiquer à as qu'il n'y a plus de programme à assembler.
Utilisez -- si vous devez nommer explicitement le fichier d'entrée standard dans votre ligne de commande.
Si la source est vide, as produit un petit fichier objet vide.
as peut écrire des avertissements et des messages d'erreur dans le fichier d'erreur standard (généralement votre terminal). Cela ne devrait pas se produire lorsqu'un compilateur exécute automatiquement as. Les avertissements signalent une hypothèse faite afin qu'as puisse continuer à assembler un programme défectueux ; les erreurs signalent un problème grave qui arrête l'assemblage.
Si vous invoquez as via le compilateur GNU C, vous pouvez utiliser l'option -Wa pour transmettre des arguments à l'assembleur. Les arguments de l'assembleur doivent être séparés les uns des autres (et de -Wa) par des virgules. Par exemple :
gcc -c -g -O -Wa,-alh,-L file.c
Cela transmet deux options à l'assembleur : -alh (émettre une liste vers la sortie standard avec la source de haut niveau et la source assembleur) et -L (conserver les symboles locaux dans la table des symboles).
En général, vous n'avez pas besoin d'utiliser ce mécanisme -Wa, car de nombreuses options de ligne de commande du compilateur sont automatiquement transmises à l'assembleur par le compilateur. (Vous pouvez appeler le pilote du compilateur GNU avec l'option -v pour voir exactement quelles options il transmet à chaque passe de compilation, y compris l'assembleur.)
OPTIONS
@fichier Lire les options de ligne de commande à partir du fichier. Les options lues sont insérées à la place de l'option @fichier d'origine. Si le fichier n'existe pas ou ne peut pas être lu, l'option sera traitée littéralement et ne sera pas supprimée.
Les options dans le fichier sont séparées par des espaces. Un caractère d'espace peut être inclus dans une option en entourant l'ensemble de l'option de guillemets simples ou doubles. Tout caractère (y compris une barre oblique inversée) peut être inclus en préfixant le caractère à inclure avec une barre oblique inversée. Le fichier peut lui-même contenir des options @fichier supplémentaires ; toutes ces options seront traitées de manière récursive.
-a[cdghilmns]
Active les listes, de différentes manières :
-ac omet les instructions conditionnelles fausses
-ad omet les directives de débogage
-ag inclut des informations générales, telles que la version et les options transmises
-ah inclut le code source de haut niveau
-al inclut le code assembleur
-ali
inclut le code assembleur avec ginsn
-am inclut les développements de macros
-an omet le traitement des formes
-as inclut les symboles
=fichier
définit le nom du fichier de listage
Vous pouvez combiner ces options ; par exemple, utilisez -aln pour obtenir une liste assembleur sans traitement des formes. L’option =fichier, si elle est utilisée, doit être la dernière. Par elle-même, -a a par défaut -ahls.
--alternate
Démarre en mode macro alternatif.
--compress-debug-sections
Compresse les sections de débogage DWARF en utilisant zlib avec SHF_COMPRESSED de l’ABI ELF. Le fichier objet résultant peut ne pas être compatible avec les outils de liaison et de fichiers objets plus anciens. Notez que si la compression augmentait la taille d’une section, cette dernière ne serait pas compressée.
--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd
Ces options contrôlent la manière dont les sections de débogage DWARF sont compressées. --compress-debug-sections=none est équivalent à --nocompress-debug-sections. --compress-debug-sections=zlib et --compress-debug-sections=zlib-gabi sont équivalents à --compress-debug-sections. --compress-debug-sections=zlib-gnu compresse les sections de débogage DWARF en utilisant le format zlib-gnu obsolète. Les sections de débogage sont renommées pour commencer par .zdebug. --compress-debug-sections=zstd compresse les sections de débogage DWARF en utilisant zstd. Notez que si la compression augmentait effectivement la taille d’une section, cette dernière n’est ni compressée ni renommée.
--nocompress-debug-sections
Ne compresse pas les sections de débogage DWARF. C’est généralement la valeur par défaut pour toutes les cibles, sauf x86/x86_64, mais une option de configuration peut être utilisée pour remplacer cette valeur.
-D Active le débogage dans les backends spécifiques aux cibles, si cela est pris en charge. Sinon, cette option est ignorée. Même si elle est ignorée, cette option est acceptée pour la compatibilité des scripts avec les appels à d’autres assembleurs.
--debug-prefix-map old=new
Lorsque des fichiers dans le répertoire old sont assemblés, enregistrez les informations de débogage en les décrivant comme étant dans new.
--defsym sym=valeur
Définit le symbole sym à la valeur valeur avant d’assembler le fichier d’entrée. La valeur doit être une constante entière. Comme en C, un préfixe 0x indique une valeur hexadécimale, et un préfixe 0 indique une valeur octale. La valeur du symbole peut être remplacée dans un fichier source via l’utilisation d’une pseudo-opération « .set ».
--dump-config
Affiche la configuration de l’assembleur, puis se termine.
--elf-stt-common=no
--elf-stt-common=yes
Ces options contrôlent si l’assembleur ELF doit générer des symboles communs avec le type « STT_COMMON ». La valeur par défaut peut être contrôlée par une option de configuration --enable-elf-stt-common.
--emit-local-absolute
Émettez même les symboles absolus locaux prédéfinis vers la table des symboles de sortie. Notez que ce n'est pas l'opposé exact de --strip-local-absolute.
--emulation=name
Si l'assembleur est configuré pour prendre en charge plusieurs configurations cibles différentes, cette option peut être utilisée pour sélectionner la forme souhaitée.
-f "fast" : ignore les espaces blancs et le prétraitement des commentaires (suppose que la source est une sortie du compilateur).
-g
--gen-debug
Génère des informations de débogage pour chaque ligne de code source de l'assembleur en utilisant le format de débogage préféré de la cible. Cela signifie actuellement STABS, ECOFF ou DWARF2. Lorsque le format de débogage est DWARF, une section ".debug_info" et ".debug_line" n'est émise que si le fichier d'assemblage ne génère pas lui-même ces sections.
--gstabs
Génère des informations de débogage stabs pour chaque ligne de code source de l'assembleur. Cela peut aider au débogage du code assembleur, si le débogueur peut le gérer.
--gstabs+
Génère des informations de débogage stabs pour chaque ligne de code source de l'assembleur, avec des extensions GNU que seul gdb peut probablement gérer, et qui pourraient amener d'autres débogueurs à planter ou à refuser de lire votre programme. Cela peut aider au débogage du code assembleur. Actuellement, la seule extension GNU est l'emplacement du répertoire de travail actuel au moment de l'assemblage.
--gdwarf-2
Génère des informations de débogage DWARF2 pour chaque ligne de code source de l'assembleur. Cela peut aider au débogage du code assembleur, si le débogueur peut le gérer. Notez que cette option n'est prise en charge que par certaines cibles, pas toutes.
--gdwarf-3
Cette option est la même que l'option --gdwarf-2, sauf qu'elle permet la possibilité de générer des informations de débogage supplémentaires conformément à la version 3 de la spécification DWARF. Notez que l'activation de cette option ne garantit pas la génération d'informations supplémentaires, le choix d'en générer ou non est laissé à la cible.
--gdwarf-4
Cette option est la même que l'option --gdwarf-2, sauf qu'elle permet la possibilité de générer des informations de débogage supplémentaires conformément à la version 4 de la spécification DWARF. Notez que l'activation de cette option ne garantit pas la génération d'informations supplémentaires, le choix d'en générer ou non est laissé à la cible.
--gdwarf-5
Cette option est la même que l'option --gdwarf-2, sauf qu'elle permet la possibilité de générer des informations de débogage supplémentaires conformément à la version 5 de la spécification DWARF. Notez que l'activation de cette option ne garantit pas la génération d'informations supplémentaires, le choix d'en générer ou non est laissé à la cible.
--gdwarf-sections
Au lieu de créer une section .debug_line, créez une série de sections .debug_line.foo où foo est le nom de la section de code correspondante. Par exemple, une section de code appelée .text.func aura ses informations de ligne dwarf placées dans une section appelée .debug_line.text.func. Si la section de code est simplement appelée .text, la section de ligne de débogage s'appellera toujours simplement .debug_line sans aucun suffixe.
--gdwarf-cie-version=version
Contrôle la version des entrées d’informations communes (CIE) DWARF à générer. Lorsque cette option n’est pas spécifiée, la valeur par défaut est la version 1, bien que certaines cibles puissent modifier cette valeur par défaut. Les autres valeurs possibles pour version sont 3 ou 4.
--generate-missing-build-notes=yes
--generate-missing-build-notes=no
Ces options contrôlent si l’assembleur ELF doit générer des notes d’attributs GNU Build si elles ne sont pas présentes dans les sources d’entrée. La valeur par défaut peut être contrôlée par l’option de configuration --enable-generate-build-notes.
--gsframe
--gsframe
--gsframe=no
--gsframe=yes
Crée une section .sframe à partir des directives CFI. L’option explicite --gsframe=yes se comporte de la même manière que --gsframe. La génération peut être supprimée avec --gsframe=no. La valeur par défaut peut être contrôlée par une option de configuration --enable-default-sframe.
--hash-size N
Ignoré. Pris en charge pour la compatibilité avec la ligne de commande d’autres assembleurs.
--help
Affiche un résumé des options de la ligne de commande et se termine.
--target-help
Affiche un résumé de toutes les options spécifiques à la cible et se termine.
--info
N’empêche pas l’affichage des messages d’information.
--no-info
Supprime les messages d’information.
-I dir
Ajoute le répertoire dir à la liste des répertoires pour les directives ".include".
-J Ne pas afficher d’avertissement concernant le dépassement de capacité signé.
-K Affiche des avertissements lorsque les tables de différences sont modifiées pour les déplacements longs.
-L
--keep-locals
Conserve (dans la table des symboles) les symboles locaux. Ces symboles commencent par des préfixes d’étiquettes locales spécifiques au système, généralement .L pour les systèmes ELF ou L pour les systèmes a.out traditionnels.
--listing-lhs-width=number
Définit la largeur maximale, en mots, de la colonne de données de sortie pour une liste d’assembleur à la valeur number.
--listing-lhs-width2=number
Définit la largeur maximale, en mots, de la colonne de données de sortie pour les lignes de continuation dans une liste d’assembleur à la valeur number.
--listing-rhs-width=number
Définit la largeur maximale d’une ligne source d’entrée, telle qu’elle est affichée dans une liste, à number octets.
--listing-cont-lines=number
Définit le nombre maximal de lignes affichées dans une liste pour une seule ligne d’entrée à number +
--multibyte-handling=allow
--multibyte-handling=warn
--multibyte-handling=warn-sym-only
--multibyte-handling=warn_sym_only
Contrôle la manière dont l’assembleur gère les caractères multibytes dans l’entrée. La valeur par défaut (qui peut être restaurée en utilisant l’argument allow) consiste à autoriser ces caractères sans message. L’utilisation de l’argument warn amène l’assembleur à générer un message d’avertissement chaque fois qu’un caractère multibyte est rencontré. L’utilisation de l’argument warn-sym-only amène l’assembleur à générer un message uniquement lorsqu’un symbole est défini avec un nom contenant des caractères multibytes. (Les références aux symboles non définis ne génèrent pas de message).
--no-pad-sections
Empêche l'assembleur de compléter les sections de sortie pour qu'elles soient alignées sur l'alignement de cette section.
Par défaut, les sections sont complétées, mais cela peut gaspiller de l'espace, ce qui pourrait être problématique sur les cibles
qui ont des contraintes de mémoire strictes.
-o objfile
Spécifie le nom du fichier objet de sortie comme objfile.
-R
Fusionne la section de données dans la section de texte.
--reduce-memory-overheads
Ignoré. Pris en charge pour la compatibilité avec les outils qui passent la même option à la fois à l'assembleur et au lieur.
--scfi=experimental
Cette option contrôle si l'assembleur doit synthétiser les CFI pour le code saisi manuellement. Si
le code d'entrée contient déjà des directives CFI synthétisables, l'assembleur les ignore et
émet un avertissement. Notez que "--scfi=experimental" n'est pas destiné à être utilisé pour le code généré par un compilateur, y compris l'assembleur intégré. Cette prise en charge expérimentale est en cours de développement.
Seule l'ABI System V AMD64 est prise en charge.
Chaque fonction d'entrée en assembly doit commencer par la directive ".type", et doit idéalement
se terminer par une directive ".size". Lorsque vous utilisez SCFI, chaque directive ".type" invite GAS à
démarrer une nouvelle FDE (c'est-à-dire une entrée de descripteur de fonction). Cela implique qu'avec chaque directive ".type", un bloc d'instructions précédent, le cas échéant, est finalisé en tant que FDE distincte.
--sectname-subst
Prend en compte les séquences de substitution dans les noms de section.
--size-check=error
--size-check=warning
Signale une erreur ou un avertissement pour une directive ELF .size invalide.
--statistics
Affiche l'espace maximum (en octets) et le temps total (en secondes) utilisés par l'assemblage.
--strip-local-absolute
Supprime les symboles locaux absolus de la table des symboles de sortie.
-v
--verbose
Affiche la version d'as.
--version
-version
Affiche la version d'as et se termine.
-W
--no-warn
Supprime les messages d'avertissement.
--warn
Ne supprime pas les messages d'avertissement ou ne les traite pas comme des erreurs.
--fatal-warnings
Traite les avertissements comme des erreurs.
-w Ignoré.
-x Ignoré.
-Z
Génère un fichier objet même après des erreurs.
-- | files ...
Entrée standard ou fichiers sources à assembler.
Les options suivantes sont disponibles lorsque as est configuré pour le mode 64 bits de l'architecture ARM (AArch64).
-EB
Cette option spécifie que la sortie générée par l'assembleur doit être marquée comme étant encodée pour un processeur big-endian.
-EL
Cette option spécifie que la sortie générée par l'assembleur doit être marquée comme étant encodée pour un processeur little-endian.
-mabi=abi
Spécifie l'ABI que le code source utilise. Les arguments reconnus sont : "ilp32" et "lp64",
ce qui détermine le fichier objet généré au format ELF32 et ELF64 respectivement. La valeur par défaut
est "lp64".
-mcpu=processor[+extension...]
Cette option spécifie le processeur cible. L'assembleur émet un message d'erreur si une tentative est faite d'assembler une instruction qui ne s'exécutera pas sur le processeur cible.
Les noms de processeur suivants sont reconnus : "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" et "cortex-x4". Le nom spécial "all" peut être utilisé pour permettre à l'assembleur
d'accepter les instructions valides pour tout processeur pris en charge, y compris toutes les extensions facultatives.
En plus de l’ensemble d’instructions de base, l’assembleur peut être configuré pour accepter, ou restreindre, divers mnémotechniques d’extension qui étendent le processeur.
Si certaines implémentations d’un processeur particulier peuvent avoir une extension, ces extensions sont automatiquement activées. Par conséquent, vous n’aurez normalement pas besoin de spécifier d’extensions supplémentaires.
-march=architecture[+extension...]
Cette option spécifie l’architecture cible. L’assembleur émettra un message d’erreur si une tentative est faite d’assembler une instruction qui ne s’exécutera pas sur l’architecture cible. Les noms d’architecture suivants sont reconnus : « 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 » et « armv9.5-a ».
Si les deux options -mcpu et -march sont spécifiées, l’assembleur utilisera le paramètre de -mcpu. Si aucune des deux n’est spécifiée, l’assembleur utilisera par défaut -mcpu=all.
L’option architecture peut être étendue avec les mêmes options d’extension de l’ensemble d’instructions que l’option -mcpu. Contrairement à -mcpu, les extensions ne sont pas toujours activées par défaut.
-mverbose-error
Cette option active les messages d’erreur détaillés pour AArch64 gas. Cette option est activée par défaut.
-mno-verbose-error
Cette option désactive les messages d’erreur détaillés dans AArch64 gas.
-menable-sysreg-checking
Cette option active les messages d’erreur qui sont émis si une tentative est faite d’assembler un accès au registre système qui ne s’exécutera pas sur l’architecture cible.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur Alpha.
-mcpu
Cette option spécifie le processeur cible. Si une tentative est faite d’assembler une instruction qui ne s’exécutera pas sur le processeur cible, l’assembleur peut soit développer l’instruction en tant que macro, soit émettre un message d’erreur. Cette option est équivalente à la directive « .arch ».
Les noms de processeur suivants sont reconnus : 21064, « 21064a », 21066, 21068, 21164, « 21164a », « 21164pc », 21264, « 21264a », « 21264b », « ev4 », « ev5 », « lca45 », « ev5 », « ev56 », « pca56 », « ev6 », « ev67 », « ev68 ». Le nom spécial « all » peut être utilisé pour permettre à l’assembleur d’accepter les instructions valides pour n’importe quel processeur Alpha.
Afin de prendre en charge les pratiques existantes dans OSF/1 concernant « .arch », et les pratiques existantes dans MILO (le chargeur de démarrage Linux ARC), les noms de processeur numérotés (par exemple, 21064) activent les instructions PALcode spécifiques au processeur, tandis que les noms « électro-vlasic » (par exemple, « ev4 ») ne les activent pas.
-mdebug
-no-mdebug
Active ou désactive la génération de l’encapsulation « .mdebug » pour les directives stabs et les descripteurs de procédure. Par défaut, « .mdebug » est automatiquement activé lorsque la première directive stabs est détectée.
-relax
Cette option force toutes les relocalisations à être placées dans le fichier objet, au lieu de gagner de l’espace et de résoudre certaines relocalisations pendant l’assemblage. Notez que cette option ne propage pas toute l’arithmétique des symboles dans le fichier objet, car toute l’arithmétique des symboles ne peut pas être représentée. Cependant, cette option peut s’avérer utile dans des applications spécifiques.
-replace
-noreplace
Active ou désactive l’optimisation des appels de procédure, à la fois pendant l’assemblage et pendant l’édition de liens. Ces options ne sont disponibles que pour les cibles VMS et « -replace » est la valeur par défaut. Voir la section 4.1 du manuel de l’utilitaire d’édition de liens OpenVMS.
-g Cette option est utilisée lorsque le compilateur génère des informations de débogage. Lorsque gcc utilise mipstfile pour générer des informations de débogage pour ECOFF, les étiquettes locales doivent être transmises au fichier objet. Sinon, cette option n’a aucun effet.
-Gsize
Un symbole commun local plus grand que la taille est placé dans « .bss », tandis que les symboles plus petits sont placés dans « .sbss ».
-F
-32addr
Ces options sont ignorées pour assurer la compatibilité avec les versions antérieures.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur ARC.
-mcpu=cpu
Cette option sélectionne la variante de cœur du processeur.
-EB | -EL
Sélectionne le format de sortie big-endian (-EB) ou little-endian (-EL).
-mcode-density
Active les instructions d’extension de densité de code.
Les options suivantes sont disponibles lorsque as est configuré pour la famille de processeurs ARM.
-mcpu=processeur[+extension...]
Spécifie la variante du processeur ARM cible.
-march=architecture[+extension...]
Spécifie la variante de l’architecture ARM utilisée par la cible.
-mfpu=format-point-flottant
Sélectionne l’architecture de point flottant cible.
-mfloat-abi=abi
Sélectionne l’ABI du point flottant en cours d’utilisation.
-mthumb
Active uniquement le décodage des instructions Thumb.
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
Sélectionne la convention d’appel de procédure en cours d’utilisation.
-EB | -EL
Sélectionne le format de sortie big-endian (-EB) ou little-endian (-EL).
-mthumb-interwork
Indique que le code a été généré en tenant compte de l’interopérabilité entre le code Thumb et ARM.
-mccs
Active le mode de compatibilité de la syntaxe d’assemblage CodeComposer Studio.
-k Indique qu’un code PIC a été généré.
Les options suivantes sont disponibles lorsque as est configuré pour la famille de processeurs Blackfin.
-mcpu=processeur[-sirevision]
Cette option spécifie le processeur cible. La valeur sirevision facultative n’est pas utilisée dans l’assembleur. Elle est présente afin que GCC puisse facilement transmettre son option « -mcpu= ». L’assembleur émettra un message d’erreur si une tentative est faite d’assembler une instruction qui ne s’exécutera pas sur le processeur cible. Les noms de processeur suivants sont reconnus : « bf504 », « bf506 », « bf512 », « bf514 », « bf516 », « bf518 », « bf522 », « bf523 », « bf524 », « bf525 », « bf526 », « bf527 », « bf531 », « bf532 », « bf533 », « bf534 », « bf535 » (pas encore implémenté), « bf536 », « bf537 », « bf538 », « bf539 », « bf542 », « bf542m », « bf544 », « bf544m », « bf547 », « bf547m », « bf548 », « bf548m », « bf549 », « bf549m », « bf561 » et « bf592 ».
-mfdpic
Assemble pour l'ABI FDPIC.
-mno-fdpic
-mnopic
Désactive -mfdpic.
Les options suivantes sont disponibles lorsque as est configuré pour la famille de processeurs BPF du noyau Linux.
@chapter Fonctionnalités dépendantes de BPF
Options BPF
-EB Cette option spécifie que l'assembleur doit générer du code eBPF big-endian.
-EL Cette option spécifie que l'assembleur doit générer du code eBPF little-endian.
-mdialect=dialect
Cette option spécifie le dialecte de langage assembleur à reconnaître lors de l'assemblage. L'assembleur prend en charge les dialectes normal et pseudoc.
-misa-spec=spec
Cette option spécifie la version de l'ensemble d'instructions BPF à utiliser lors de l'assemblage. Les versions de l'ISA BPF prises en charge sont v1, v2, v3 et v4.
La valeur xbpf peut être spécifiée pour reconnaître les instructions supplémentaires utilisées par GCC à des fins de test. Mais attention, il ne s'agit pas d'un BPF valide.
-mno-relax
Cette option indique à l'assembleur de ne pas effectuer de relaxation d'instructions.
Notez que si aucune option d'endianness n'est spécifiée dans la ligne de commande, l'endianness de l'hôte est utilisée. Consultez les pages d'informations pour la documentation des options spécifiques à CRIS.
Les options suivantes sont disponibles lorsque as est configuré pour la famille de processeurs C-SKY.
-march=archname
Assemble pour l'architecture archname. L'option --help répertorie les valeurs valides pour archname.
-mcpu=cpuname
Assemble pour l'architecture cpuname. L'option --help répertorie les valeurs valides pour cpuname.
-EL
-mlittle-endian
Génère une sortie little-endian.
-EB
-mbig-endian
Génère une sortie big-endian.
-fpic
-pic
Génère du code indépendant de la position.
-mljump
-mno-ljump
Active/désactive la transformation des instructions de branche courtes "jbf", "jbt" et "jbr" en "jmpi". Cette option est uniquement pour les processeurs V2. Elle est ignorée pour les cibles CK801 et CK802, qui ne prennent pas en charge l'instruction "jmpi", et elle est activée par défaut pour les autres processeurs.
-mbranch-stub
-mno-branch-stub
Transmet les relocalisations "R_CKCORE_PCREL_IMM26BY2" pour les instructions "bsr" au linker.
Cette option est uniquement disponible pour les cibles ELF bare-metal C-SKY V2, où elle est activée par défaut. Elle ne peut pas être utilisée dans le code qui sera lié dynamiquement aux bibliothèques partagées.
-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr
Active/désactive la transformation des instructions "jbsr" en "bsr". Cette option est toujours activée (et -mno-force2bsr est ignorée) pour les cibles CK801/CK802. Elle est également toujours activée lorsque -mbranch-stub est en vigueur.
-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr
Active/désactive la transformation des instructions "jsri" en "bsr". Cette option est activée par défaut.
-mnolrw
-mno-lrw
Active/désactive la transformation des instructions "lrw" en une paire "movih"/"ori".
-melrw
-mno-elrw
Active/désactive les instructions "lrw" étendues. Cette option est activée par défaut pour les processeurs de la série CK800.
-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func
Active/désactive le placement des pools de littéraux après chaque fonction.
-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br
Active/désactive le placement des pools de littéraux après les branchements inconditionnels. Cette option est activée par défaut.
-mistack
-mno-istack
Active/désactive les instructions de pile d'interruption. Cette option est activée par défaut sur les processeurs CK801, CK802 et CK802.
Les options suivantes activent explicitement certaines instructions optionnelles. Ces fonctionnalités sont également activées implicitement en utilisant "-mcpu=" pour spécifier un processeur qui la prend en charge.
-mhard-float
Active les instructions à virgule flottante matérielle.
-mmp
Active les instructions multiprocesseur.
-mcp
Active les instructions de coprocesseur.
-mcache
Active l'instruction de préchargement de cache.
-msecurity
Active les instructions de sécurité C-SKY.
-mtrust
Active les instructions de confiance C-SKY.
-mdsp
Active les instructions DSP.
-medsp
Active les instructions DSP améliorées.
-mvdsp
Active les instructions DSP vectorielles.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur Epiphany.
-mepiphany
Spécifie que les instructions de 32 et 16 bits sont autorisées. Il s'agit du comportement par défaut.
-mepiphany16
Limite les instructions autorisées à l'ensemble de 16 bits.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur H8/300. @chapter Fonctionnalités dépendantes de H8/300
Options
La version Renesas H8/300 de "as" dispose d'une option spécifique à la machine :
-h-tick-hex
Prend en charge les constantes hexadécimales de style H'00 en plus du style 0x00.
-mach=name
Définit la variante de machine H8300. Les noms de machine suivants sont reconnus : "h8300h", "h8300hn", "h8300s", "h8300sn", "h8300sx" et "h8300sxn".
Les options suivantes sont disponibles lorsque as est configuré pour un processeur i386.
--32 | --x32 | --64
Sélectionne la taille d'un mot, soit 32 bits, soit 64 bits. --32 implique l'architecture Intel i386, tandis que --x32 et --64 impliquent l'architecture AMD x86-64 avec une taille de mot de 32 ou 64 bits, respectivement.
Ces options ne sont disponibles qu'avec le format de fichier objet ELF et nécessitent que la prise en charge BFD nécessaire ait été incluse (sur une plateforme 32 bits, vous devez ajouter --enable-64-bit-bfd à configure pour activer l'utilisation de 64 bits et utiliser x86-64 comme plateforme cible).
-n Par défaut, x86 GAS remplace les instructions nop multiples utilisées pour l'alignement dans les sections de code par des instructions nop multi-octets telles que leal 0(%esi,1),%esi. Cette option désactive l'optimisation si une instruction nop d'un seul octet (0x90) est explicitement spécifiée comme octet de remplissage pour l'alignement.
--divide
Sur les plateformes dérivées de SVR4, le caractère / est traité comme un caractère de commentaire, ce qui signifie qu’il ne peut pas être utilisé dans les expressions. L’option --divide transforme / en un caractère normal. Cela ne désactive pas / au début d’une ligne commençant un commentaire, ni n’affecte l’utilisation de # pour démarrer un commentaire.
-march=CPU[+EXTENSION...]
Cette option spécifie le processeur cible. L’assembleur générera un message d’erreur si une tentative est faite pour assembler une instruction qui ne s’exécutera pas sur le processeur cible. Les noms de processeur suivants sont reconnus : « 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 » et « generic64 ».
En plus du jeu d’instructions de base, l’assembleur peut être configuré pour accepter divers mnémoniques d’extension. Par exemple, « -march=i686+sse4+vmx » étend i686 avec sse4 et vmx.
Les extensions suivantes sont actuellement prises en charge : 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 » et « padlock ». Veuillez noter que ces mnémoniques d’extension peuvent être précédés de « no » pour révoquer la fonctionnalité respective (et toute fonctionnalité dépendante). Veuillez noter en outre que les suffixes autorisés sur « -march=avx10.
Lorsque la directive ".arch" est utilisée avec -march, la directive ".arch" aura la priorité.
-mtune=CPU
Cette option spécifie un processeur pour lequel optimiser. Lorsqu'elle est utilisée en conjonction avec l'option -march, seules les instructions du processeur spécifié par l'option -march seront générées.
Les valeurs CPU valides sont identiques à la liste des processeurs de -march=CPU.
-moperand-check=none
-moperand-check=warning
-moperand-check=error
Ces options contrôlent si l'assembleur doit vérifier certains opérandes ou combinaisons d'opérandes d'instructions. Un exemple d'instruction où la taille de l'opérande ne peut pas être déduite de ses opérandes et n'a pas non plus été spécifiée via un suffixe d'instruction. -moperand-check=none empêchera l'assembleur d'effectuer ces vérifications. -moperand-check=warning fera que l'assembleur émettra un avertissement lorsque les vérifications correspondantes échouent, ce qui est la valeur par défaut. -moperand-check=error fera que l'assembleur émettra une erreur lorsque les vérifications correspondantes échouent.
-msse2avx
Cette option spécifie que l'assembleur doit encoder les instructions SSE avec un préfixe VEX, ce qui nécessite qu'AVX soit disponible. Les instructions SSE utilisant des registres généraux étendus seront encodées avec un préfixe EVEX, ce qui nécessite qu'AVX512 ou AVX10 soit disponible.
-muse-unaligned-vector-move
Cette option spécifie que l'assembleur doit encoder les mouvements vectoriels alignés comme des mouvements vectoriels non alignés.
-msse-check=none
-msse-check=warning
-msse-check=error
Ces options contrôlent si l'assembleur doit vérifier les instructions SSE. -msse-check=none empêchera l'assembleur de vérifier les instructions SSE, ce qui est la valeur par défaut. -msse-check=warning fera que l'assembleur émettra un avertissement pour toute instruction SSE. -msse-check=error fera que l'assembleur émettra une erreur pour toute instruction SSE.
-mavxscalar=128
-mavxscalar=256
Ces options contrôlent la manière dont l'assembleur doit encoder les instructions AVX scalaires. -mavxscalar=128 encodera les instructions AVX scalaires avec une longueur de vecteur de 128 bits, ce qui est la valeur par défaut. -mavxscalar=256 encodera les instructions AVX scalaires avec une longueur de vecteur de 256 bits.
ATTENTION : Ne l'utilisez pas pour le code de production - en raison d'erreurs de CPU, le code résultant peut ne pas fonctionner sur certains modèles.
-mvexwig=0
-mvexwig=1
Ces options contrôlent la manière dont l'assembleur doit encoder les instructions VEX.W-ignored (WIG) VEX. -mvexwig=0 encodera les instructions VEX WIG avec vex.w = 0, ce qui est la valeur par défaut. -mvexwig=1 encodera les instructions EVEX WIG avec vex.w = 1.
AVERTISSEMENT : Ne pas utiliser ceci pour du code de production, car en raison d’erreurs dans le CPU, le code résultant pourrait ne pas fonctionner sur certains modèles.
-mevexlig=128
-mevexlig=256
-mevexlig=512
Ces options contrôlent la manière dont l’assembleur doit encoder les instructions EVEX à longueur ignorée (LIG). -mevexlig=128 encode les instructions EVEX LIG avec une longueur de vecteur de 128 bits, ce qui est la valeur par défaut. -mevexlig=256 et -mevexlig=512 encodent les instructions EVEX LIG avec une longueur de vecteur de 256 bits et de 512 bits, respectivement.
-mevexwig=0
-mevexwig=1
Ces options contrôlent la manière dont l’assembleur doit encoder les instructions EVEX à w ignoré (WIG). -mevexwig=0 encode les instructions EVEX WIG avec evex.w = 0, ce qui est la valeur par défaut. -mevexwig=1 encode les instructions EVEX WIG avec evex.w = 1.
-mmnemonic=att
-mmnemonic=intel
Cette option spécifie le mnémonique d’instruction à utiliser pour la correspondance des instructions. Les directives « .att_mnemonic » et « .intel_mnemonic » prévalent.
-msyntax=att
-msyntax=intel
Cette option spécifie la syntaxe d’instruction à utiliser lors du traitement des instructions. Les directives « .att_syntax » et « .intel_syntax » prévalent.
-mnaked-reg
Cette option spécifie que les registres n’ont pas besoin du préfixe « % ». Les directives « .att_syntax » et « .intel_syntax » prévalent.
-madd-bnd-prefix
Cette option force l’assembleur à ajouter le préfixe BND à toutes les branches, même si ce préfixe n’est pas explicitement spécifié dans le code source.
-mno-shared
Sur la cible ELF, l’assembleur optimise normalement les relocalisations non PLT par rapport aux cibles globales non faibles définies avec une visibilité par défaut. L’option -mshared indique à l’assembleur de générer du code qui peut être placé dans une bibliothèque partagée où toutes les cibles globales non faibles avec une visibilité par défaut peuvent être remplacées. Le code résultant est légèrement plus volumineux. Cette option n’affecte que la gestion des instructions de branche.
-mbig-obj
Sur la cible PE/COFF, cette option force l’utilisation du format de fichier objet volumineux, qui autorise plus de 32 768 sections.
-momit-lock-prefix=no
-momit-lock-prefix=yes
Ces options contrôlent la manière dont l’assembleur doit encoder le préfixe lock. Cette option est destinée à être utilisée comme solution de contournement pour les processeurs qui échouent avec le préfixe lock. Cette option ne peut être utilisée que de manière sûre avec des ordinateurs monocœur et monothread. -momit-lock-prefix=yes omettra tous les préfixes lock. -momit-lock-prefix=no encode le préfixe lock comme d’habitude, ce qui est la valeur par défaut.
-mfence-as-lock-add=no
-mfence-as-lock-add=yes
Ces options contrôlent la manière dont l’assembleur doit encoder lfence, mfence et sfence. -mfence-as-lock-add=yes encode lfence, mfence et sfence en tant que lock addl $0x0, (%rsp) en mode 64 bits et lock addl $0x0, (%esp) en mode 32 bits. -mfence-as-lock-add=no encode lfence, mfence et sfence comme d’habitude, ce qui est la valeur par défaut.
-mrelax-relocations=no
-mrelax-relocations=yes
Ces options contrôlent si l'assembleur doit générer ou non des relocalisations relaxées, R_386_GOT32X, en mode 32 bits, ou R_X86_64_GOTPCRELX et R_X86_64_REX_GOTPCRELX, en mode 64 bits. -mrelax-relocations=yes générera des relocalisations relaxées. -mrelax-relocations=no ne générera pas de relocalisations relaxées.
-mtls-check=no
-mtls-check=yes
Ces options contrôlent si l'assembleur doit vérifier ou non les relocalisations TLS. -mtls-check=yes vérifiera les relocalisations TLS. -mtls-check=no ne vérifiera pas les relocalisations TLS. La valeur par défaut peut être contrôlée par une option de configuration --enable-x86-tls-check.
-malign-branch-boundary=NUM
Cette option contrôle la manière dont l'assembleur doit aligner les branches avec des préfixes de segment ou des instructions NOP. NUM doit être une puissance de 2. Elle doit être de 0 ou au moins égale à 16. Les branches seront alignées dans une limite de NUM octets. -malign-branch- boundary=0, qui est la valeur par défaut, n'aligne pas les branches.
-malign-branch=TYPE[+TYPE...]
Cette option spécifie les types de branches à aligner. TYPE est une combinaison de jcc, qui aligne les sauts conditionnels, fused, qui aligne les sauts conditionnels fusionnés, jmp, qui aligne les sauts inconditionnels, call, qui aligne les appels, ret, qui aligne les retours, indirect, qui aligne les sauts et appels indirects. La valeur par défaut est -malign-branch=jcc+fused+jmp.
-malign-branch-prefix-size=NUM
Cette option spécifie le nombre maximal de préfixes sur une instruction pour aligner les branches. NUM doit être compris entre 0 et 5. La valeur par défaut de NUM est 5.
-mlfence-after-load=no
-mlfence-after-load=yes
Ces options contrôlent si l'assembleur doit générer ou non une instruction lfence après les instructions de chargement. -mlfence-after-load=yes générera lfence. -mlfence-after-load=no ne générera pas lfence, ce qui est la valeur par défaut.
-mlfence-before-indirect-branch=none
-mlfence-before-indirect-branch=all
-mlfence-before-indirect-branch=register
-mlfence-before-indirect-branch=memory
Ces options contrôlent si l'assembleur doit générer ou non une instruction lfence avant les instructions de saut indirect proche. -mlfence-before-indirect-branch=all générera lfence avant les sauts indirects proches via un registre et émettra un avertissement avant les sauts indirects proches via la mémoire. Cela définit également implicitement -mlfence-before-ret=shl lorsqu'il n'y a pas de -mlfence-before-ret explicite. -mlfence-before-indirect-branch=register générera lfence avant les sauts indirects proches via un registre. -mlfence-before-indirect-branch=memory émettra un avertissement avant les sauts indirects proches via la mémoire. -mlfence-before- indirect-branch=none ne générera ni lfence ni n'émettra d'avertissement, ce qui est la valeur par défaut. Notez que lfence ne sera pas généré avant un saut indirect proche via un registre avec -mlfence-after-load=yes, car lfence sera généré après le chargement du registre cible du saut.
-mlfence-before-ret=none
-mlfence-before-ret=shl
-mlfence-before-ret=or
-mlfence-before-ret=yes
-mlfence-before-ret=not
Ces options contrôlent si l’assembleur doit générer l’instruction lfence avant l’instruction ret.
-mlfence-before-ret=or générera l’instruction or avec lfence.
-mlfence-before-ret=shl/yes générera l’instruction shl avec lfence.
-mlfence-before-ret=not générera l’instruction not avec lfence. -mlfence-before-ret=none ne générera pas lfence, ce qui est la valeur par défaut.
-mx86-used-note=no
-mx86-used-note=yes
Ces options contrôlent si l’assembleur doit générer les notes de propriété GNU GNU_PROPERTY_X86_ISA_1_USED et GNU_PROPERTY_X86_FEATURE_2_USED. La valeur par défaut peut être contrôlée par l’option de configuration --enable-x86-used-note.
-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz
Ces options contrôlent la manière dont l’assembleur doit encoder les instructions EVEX SAE uniquement. -mevexrcig=rne encode les bits RC de l’instruction EVEX avec 00, ce qui est la valeur par défaut. -mevexrcig=rd, -mevexrcig=ru et -mevexrcig=rz encodent les instructions EVEX SAE uniquement avec les bits RC 01, 10 et 11, respectivement.
-mamd64
-mintel64
Cette option spécifie que l’assembleur doit accepter uniquement les ISA AMD64 ou Intel64 en mode 64 bits. Par défaut, il accepte les ISA Intel64 et AMD64 courants.
-O0 | -O | -O1 | -O2 | -Os
Optimise l’encodage des instructions avec une taille d’instruction plus petite. -O et -O1 encodent les instructions de chargement de registre 64 bits avec un immédiat 64 bits en tant qu’instructions de chargement de registre 32 bits avec des immédiats de 31 ou 32 bits, encodent les instructions d’effacement de registre 64 bits avec des instructions d’effacement de registre 32 bits, encodent les instructions d’effacement de registre vectoriel VEX/EVEX 256 bits/512 bits avec des instructions d’effacement de registre vectoriel VEX 128 bits, encodent les instructions de chargement/stockage de registre vectoriel EVEX 128 bits/256 bits avec des instructions de chargement/stockage de registre vectoriel VEX, et encodent les instructions logiques d’entiers empaquetés EVEX 128 bits/256 bits avec des instructions logiques d’entiers empaquetés VEX 128 bits/256 bits.
-O2 inclut l’optimisation -O1 et encode en plus les instructions d’effacement de registre vectoriel EVEX 256 bits/512 bits avec des instructions d’effacement de registre vectoriel EVEX 128 bits. En mode 64 bits, les instructions codées VEX avec des opérandes sources commutatives auront également leurs opérandes sources inversés si cela permet d’utiliser la forme de préfixe VEX de 2 octets au lieu de la forme de 3 octets. Certaines formes d’AND ainsi que OR avec le même opérande (registre) spécifié deux fois seront également modifiées en TEST.
-Os inclut l’optimisation -O2 ainsi que le codage des tests de registre 16, 32 et 64 bits avec l’immédiat en tant que test de registre 8 bits avec l’immédiat. -O0 désactive cette optimisation.
Les options suivantes sont disponibles lorsque « as » est configuré pour la série Ubicom IP2K.
-mip2022ext
Spécifie que les instructions étendues IP2022 sont autorisées.
-mip2022
Restaure le comportement par défaut, qui limite les instructions autorisées aux instructions IP2022 de base.
Les options suivantes sont disponibles lorsque « as » est configuré pour les processeurs Renesas M32C et M16C.
-m32c
Assemble les instructions M32C.
-m16c
Assemble les instructions M16C (par défaut).
-relax
Active la prise en charge des relaxations au moment du lien.
-h-tick-hex
Prend en charge les constantes hexadécimales de style H’00 en plus du style 0x00.
Les options suivantes sont disponibles lorsque « as » est configuré pour la série Renesas M32R (anciennement Mitsubishi M32R).
--m32rx
Spécifie quel processeur de la famille M32R est la cible. Par défaut, il s’agit généralement du M32R, mais cette option le modifie pour le M32RX.
--warn-explicit-parallel-conflicts ou --Wp
Produit des messages d’avertissement lorsque des constructions parallèles douteuses sont rencontrées.
--no-warn-explicit-parallel-conflicts ou --Wnp
Ne produit pas de messages d’avertissement lorsque des constructions parallèles douteuses sont rencontrées.
Les options suivantes sont disponibles lorsque « as » est configuré pour la série Motorola 68000.
-l
Raccourcit les références aux symboles non définis à un mot au lieu de deux.
-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
Spécifie quel processeur de la famille 68000 est la cible. Par défaut, il s’agit généralement du 68020, mais cela peut être modifié au moment de la configuration.
-m68881 | -m68882 | -mno-68881 | -mno-68882
La machine cible dispose (ou non) d’un coprocesseur à virgule flottante. Par défaut, on suppose un coprocesseur pour les 68020, 68030 et cpu32. Bien que le 68000 de base ne soit pas compatible avec le 68881, une combinaison des deux peut être spécifiée, car il est possible d’émuler les instructions du coprocesseur avec le processeur principal.
-m68851 | -mno-68851
La machine cible dispose (ou non) d’un coprocesseur d’unité de gestion de la mémoire. Par défaut, on suppose une MMU pour les 68020 et les modèles ultérieurs.
Pour plus de détails sur les options de la machine PDP-11, voir PDP-11-Options.
-mpic | -mno-pic
Génère du code indépendant de la position (ou dépendant de la position). Par défaut, il s’agit de -mpic.
-mall
-mall-extensions
Active toutes les extensions de l’ensemble d’instructions. C’est la valeur par défaut.
-mno-extensions
Désactive toutes les extensions de l’ensemble d’instructions.
-mextension | -mno-extension
Active (ou désactive) une extension d’ensemble d’instructions particulière.
-mcpu
Active les extensions d’ensemble d’instructions prises en charge par un CPU particulier et désactive toutes les autres extensions.
-mmachine
Active les extensions d’ensemble d’instructions prises en charge par un modèle de machine particulier et désactive toutes les autres extensions.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur picoJava.
-mb Générer une sortie au format « big endian ».
-ml Générer une sortie au format « little endian ».
Les options suivantes sont disponibles lorsque as est configuré pour un processeur PRU.
-mlink-relax
Supposer que LD optimiserait les instructions LDI32 en vérifiant les 16 bits supérieurs de
l’expression. Si tous ces bits sont à zéro, LD raccourcirait l’instruction LDI32 en une seule
instruction LDI. Dans ce cas, « as » générera des relocalisations DIFF pour les expressions diff.
-mno-link-relax
Supposer que LD n’optimisera pas les instructions LDI32. En conséquence, les relocalisations DIFF ne seront pas émises.
-mno-warn-regname-label
Ne pas afficher d’avertissement si un nom de label correspond à un nom de registre. En général, les programmeurs assembleurs souhaiteront que cet avertissement soit affiché. Les compilateurs C peuvent souhaiter le désactiver.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur MIPS.
-G num
Cette option définit la taille maximale d’un objet qui peut être référencé implicitement avec le registre « gp ». Elle n’est acceptée que pour les cibles qui utilisent le format ECOFF, comme une station DEC exécutant Ultrix. La valeur par défaut est 8.
-EB Générer une sortie au format « big endian ».
-EL Générer une sortie au format « little endian ».
-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips32r3
-mips32r5
-mips32r6
-mips64
-mips64r2
-mips64r3
-mips64r5
-mips64r6
Générer du code pour une architecture d’ensemble d’instructions MIPS spécifique. -mips1 est un alias pour -march=r3000, -mips2 est un alias pour -march=r6000, -mips3 est un alias pour -march=r4000 et -mips4 est un alias pour -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5 et -mips64r6 correspondent aux processeurs MIPS V génériques, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5 et MIPS64 Release 6 ISA, respectivement.
-march=cpu
Générer du code pour une CPU MIPS spécifique.
-mtune=cpu
Planifier et optimiser pour une CPU MIPS spécifique.
-mfix7000
-mno-fix7000
Insérer des instructions nop si la lecture du registre de destination d’une instruction mfhi ou mflo se produit dans les deux instructions suivantes.
-mfix-rm7000
-mno-fix-rm7000
Insérer des instructions nop si une instruction dmult ou dmultu est suivie d’une instruction de chargement.
-mfix-r5900
-mno-fix-r5900
Ne pas tenter de placer l’instruction précédente dans la plage de délai d’une instruction de branche placée à la fin d’une boucle courte de six instructions ou moins, et toujours planifier une instruction « nop » à cet endroit. Le bug de la boucle courte, dans certaines conditions, fait que les boucles ne s’exécutent qu’une ou deux fois, en raison d’un bug matériel dans la puce R5900.
-mdebug
-no-mdebug
Faire en sorte que la sortie de débogage de style stabs aille dans une section ECOFF de style .mdebug au lieu des sections ELF .stabs standard.
-mpdr
-mno-pdr
Contrôle la génération des sections « .pdr ».
-mgp32
-mfp32
Normalement, la taille des registres est déduite de l’ISA et de l’ABI, mais ces options forcent une certaine taille de registre à être toujours de 32 bits. -mgp32 contrôle la taille des registres à usage général et -mfp32 contrôle la taille des registres à virgule flottante.
-mgp64
-mfp64
Normalement, la taille des registres est déduite de l’ISA et de l’ABI, mais ces options forcent une certaine taille de registre à être toujours de 64 bits. -mgp64 contrôle la taille des registres à usage général et -mfp64 contrôle la taille des registres à virgule flottante.
-mfpxx
La taille des registres est normalement déduite de l’ISA et de l’ABI, mais l’utilisation de cette option en combinaison avec -mabi=32 active une variante d’ABI qui fonctionnera correctement avec les registres à virgule flottante qui sont de 32 ou 64 bits.
-modd-spreg
-mno-odd-spreg
Active l’utilisation d’opérations à virgule flottante sur les registres de simple précision à numéro impair lorsque cela est pris en charge par l’ISA. -mfpxx implique -mno-odd-spreg, sinon, par défaut, c’est -modd-spreg.
-mips16
-no-mips16
Génère du code pour le processeur MIPS 16. Cela équivaut à placer « .module mips16 » au début du fichier d’assemblage. -no-mips16 désactive cette option.
-mmips16e2
-mno-mips16e2
Active l’utilisation des instructions MIPS16e2 en mode MIPS16. Cela équivaut à placer « .module mips16e2 » au début du fichier d’assemblage. -mno-mips16e2 désactive cette option.
-mmicromips
-mno-micromips
Génère du code pour le processeur microMIPS. Cela équivaut à placer « .module micromips » au début du fichier d’assemblage. -mno-micromips désactive cette option. Cela équivaut à placer « .module nomicromips » au début du fichier d’assemblage.
-msmartmips
-mno-smartmips
Active l’extension SmartMIPS de l’ensemble d’instructions MIPS32. Cela équivaut à placer « .module smartmips » au début du fichier d’assemblage. -mno-smartmips désactive cette option.
-mips3d
-no-mips3d
Génère du code pour l’extension spécifique à l’application MIPS-3D. Cela indique à l’assembleur d’accepter les instructions MIPS-3D. -no-mips3d désactive cette option.
-mdmx
-no-mdmx
Génère du code pour l’extension spécifique à l’application MDMX. Cela indique à l’assembleur d’accepter les instructions MDMX. -no-mdmx désactive cette option.
-mdsp
-mno-dsp
Génère du code pour l’extension spécifique à l’application DSP Release 1. Cela indique à l’assembleur d’accepter les instructions DSP Release 1. -mno-dsp désactive cette option.
-mdspr2
-mno-dspr2
Génère du code pour l’extension spécifique à l’application DSP Release 2. Cette option implique -mdsp. Cela indique à l’assembleur d’accepter les instructions DSP Release 2. -mno-dspr2 désactive cette option.
-mdspr3
-mno-dspr3
Génère du code pour l’extension spécifique à l’application DSP Release 3. Cette option implique -mdsp et -mdspr2. Cela indique à l’assembleur d’accepter les instructions DSP Release 3. -mno-dspr3 désactive cette option.
-mmsa
-mno-msa
Génère du code pour l'extension SIMD de l'architecture MIPS. Cela indique à l'assembleur d'accepter les instructions MSA. -mno-msa désactive cette option.
-mxpa
-mno-xpa
Génère du code pour l'extension MIPS eXtended Physical Address (XPA). Cela indique à l'assembleur d'accepter les instructions XPA. -mno-xpa désactive cette option.
-mmt
-mno-mt
Génère du code pour l'extension spécifique à l'application MT. Cela indique à l'assembleur d'accepter les instructions MT. -mno-mt désactive cette option.
-mmcu
-mno-mcu
Génère du code pour l'extension spécifique à l'application MCU. Cela indique à l'assembleur d'accepter les instructions MCU. -mno-mcu désactive cette option.
-mcrc
-mno-crc
Génère du code pour l'extension spécifique à l'application MIPS Cyclic Redundancy Check (CRC). Cela indique à l'assembleur d'accepter les instructions CRC. -mno-crc désactive cette option.
-mginv
-mno-ginv
Génère du code pour l'extension spécifique à l'application Global INValidate (GINV). Cela indique à l'assembleur d'accepter les instructions GINV. -mno-ginv désactive cette option.
-mloongson-mmi
-mno-loongson-mmi
Génère du code pour l'extension spécifique à l'application Loongson MultiMedia extensions Instructions (MMI). Cela indique à l'assembleur d'accepter les instructions MMI. -mno-loongson-mmi désactive cette option.
-mloongson-cam
-mno-loongson-cam
Génère du code pour les instructions Loongson Content Address Memory (CAM). Cela indique à l'assembleur d'accepter les instructions Loongson CAM. -mno-loongson-cam désactive cette option.
-mloongson-ext
-mno-loongson-ext
Génère du code pour les instructions Loongson EXTensions (EXT). Cela indique à l'assembleur d'accepter les instructions Loongson EXT. -mno-loongson-ext désactive cette option.
-mloongson-ext2
-mno-loongson-ext2
Génère du code pour les instructions Loongson EXTensions R2 (EXT2). Cette option implique -mloongson-ext. Cela indique à l'assembleur d'accepter les instructions Loongson EXT2. -mno-loongson-ext2 désactive cette option.
-minsn32
-mno-insn32
Utilise uniquement les encodages d'instructions 32 bits lors de la génération de code pour le processeur microMIPS. Cette option empêche l'utilisation des instructions 16 bits. Cela équivaut à placer ".set insn32" au début du fichier d'assemblage. -mno-insn32 désactive cette option. Cela équivaut à placer ".set noinsn32" au début du fichier d'assemblage. Par défaut, -mno-insn32 est sélectionné, ce qui permet l'utilisation de toutes les instructions.
--construct-floats
--no-construct-floats
L'option --no-construct-floats désactive la construction de constantes à virgule flottante double précision en chargeant les deux moitiés de la valeur dans les deux registres à virgule flottante simple précision qui composent le registre double précision. Par défaut, --construct-floats est sélectionné, ce qui permet la construction de ces constantes à virgule flottante.
--relax-branch
--no-relax-branch
L'option --relax-branch permet de relâcher les contraintes sur les branches hors limites. Par défaut, --no-relax-branch est sélectionnée, ce qui fait qu'une branche hors limites génère une erreur.
-mignore-branch-isa
-mno-ignore-branch-isa
Ignore les vérifications de branche pour les transitions non valides entre les modes ISA. La sémantique des branches ne prévoit pas de changement de mode ISA, donc dans la plupart des cas, le mode ISA pour lequel une branche est codée doit être le même que le mode ISA de l'étiquette cible de la branche. Par conséquent, GAS a implémenté des vérifications qui vérifient lors de l'assemblage des branches que les deux modes ISA correspondent. -mignore-branch-isa désactive ces vérifications. Par défaut, -mno-ignore-branch-isa est sélectionnée, ce qui fait qu'une branche non valide nécessitant une transition entre les modes ISA génère une erreur.
-mnan=encoding
Permet de choisir entre l'encodage NaN IEEE 754-2008 (-mnan=2008) ou l'encodage NaN hérité (-mnan=legacy). Ce dernier est la valeur par défaut.
--emulation=name
Cette option était auparavant utilisée pour basculer entre la sortie ELF et ECOFF sur des cibles comme IRIX 5 qui les prenait en charge toutes les deux. La prise en charge de MIPS ECOFF a été supprimée dans GAS 2.24, de sorte que l'option n'a plus beaucoup d'utilité. Elle est conservée pour assurer la compatibilité avec les versions antérieures.
Les noms de configuration disponibles sont : mipself, mipslelf et mipsbelf. Le choix de mipself n'a plus d'effet, car la sortie est toujours ELF. mipslelf et mipsbelf sélectionnent respectivement la sortie little-endian et big-endian, mais -EL et -EB sont maintenant les options préférées.
-nocpp
as ignore cette option. Elle est acceptée pour assurer la compatibilité avec les outils natifs.
--trap
--no-trap
--break
--no-break
Contrôle la façon de gérer le débordement de multiplication et la division par zéro. --trap ou --no-break (qui sont des synonymes) déclenchent une exception de type trap (et ne fonctionnent que pour l'architecture ISA de niveau 2 ou supérieur) ; --break ou --no-trap (également des synonymes, et la valeur par défaut) déclenchent une exception de type break.
-n Lorsque cette option est utilisée, as affiche un avertissement chaque fois qu'elle génère une instruction nop à partir d'une macro.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur LoongArch.
-fpic
-fPIC
Génère du code indépendant de la position.
-fno-pic
Ne génère pas de code indépendant de la position (valeur par défaut).
Les options suivantes sont disponibles lorsque as est configuré pour un processeur Meta.
"-mcpu=metac11"
Génère du code pour Meta 1.1.
"-mcpu=metac12"
Génère du code pour Meta 1.2.
"-mcpu=metac21"
Génère du code pour Meta 2.1.
"-mfpu=metac21"
Permet au code d'utiliser le matériel FPU de Meta 2.1.
Consultez les pages d'informations pour la documentation des options spécifiques à MMIX.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur NDS32.
"-O1"
Optimise pour la performance.
"-Os"
Optimise pour la taille.
"-EL"
Produit une sortie de données little-endian.
"-EB"
Produit une sortie de données big-endian.
"-mpic"
Génère du code PIC.
"-mno-fp-as-gp-relax"
Supprime la relaxation fp-as-gp pour ce fichier.
"-mb2bb-relax"
Optimisation des branches consécutives.
"-mno-all-relax"
Supprime toutes les optimisations pour ce fichier.
"-march=<nom_architecture>"
Compile pour l’architecture <nom_architecture>, qui peut être v3, v3j, v3m, v3f, v3s, v2, v2j, v2f,
v2s.
"-mbaseline=<baseline>"
Compile pour la version de base <baseline>, qui peut être v2, v3, v3m.
"-mfpu-freg=FREG"
Spécifie une configuration de l’unité de calcul en virgule flottante.
"0 8 registres SP / 4 registres DP"
"1 16 registres SP / 8 registres DP"
"2 32 registres SP / 16 registres DP"
"3 32 registres SP / 32 registres DP"
"-mabi=abi"
Spécifie une version d’ABI <abi>, qui peut être v1, v2, v2fp, v2fpp.
"-m[no-]mac"
Active/désactive la prise en charge des instructions de multiplication.
"-m[no-]div"
Active/désactive la prise en charge des instructions de division.
"-m[no-]16bit-ext"
Active/désactive l’extension 16 bits.
"-m[no-]dx-regs"
Active/désactive les registres d0/d1.
"-m[no-]perf-ext"
Active/désactive l’extension de performance.
"-m[no-]perf2-ext"
Active/désactive l’extension de performance 2.
"-m[no-]string-ext"
Active/désactive l’extension de chaînes de caractères.
"-m[no-]reduced-regs"
Active/désactive la configuration à nombre réduit de registres (GPR16).
"-m[no-]audio-isa-ext"
Active/désactive l’extension AUDIO ISA.
"-m[no-]fpu-sp-ext"
Active/désactive l’extension FPU SP.
"-m[no-]fpu-dp-ext"
Active/désactive l’extension FPU DP.
"-m[no-]fpu-fma"
Active/désactive les instructions FPU de multiplication-addition fusionnée.
"-mall-ext"
Active toutes les extensions et la prise en charge des instructions.
Les options suivantes sont disponibles lorsque l’assembleur est configuré pour un processeur PowerPC.
-a32
Génère ELF32 ou XCOFF32.
-a64
Génère ELF64 ou XCOFF64.
-K PIC
Définit EF_PPC_RELOCATABLE_LIB dans les indicateurs ELF.
-mpwrx | -mpwr2
Génère du code pour POWER/2 (RIOS2).
-mpwr
Génère du code pour POWER (RIOS1).
-m601
Génère du code pour PowerPC 601.
-mppc, -mppc32, -m603, -m604
Génère du code pour PowerPC 603/604.
-m403, -m405
Génère du code pour PowerPC 403/405.
-m440
Génère du code pour PowerPC 440. BookE et certaines instructions 405.
-m464
Génère du code pour PowerPC 464.
-m476
Génère du code pour PowerPC 476.
-m7400, -m7410, -m7450, -m7455
Génère du code pour PowerPC 7400/7410/7450/7455.
-m750cl, -mgekko, -mbroadway
Génère du code pour PowerPC 750CL/Gekko/Broadway.
-m821, -m850, -m860
Génère du code pour PowerPC 821/850/860.
-mppc64, -m620
Génère du code pour PowerPC 620/625/630.
-me200z2, -me200z4
Génère du code pour les variantes e200, e200z2 avec LSP, e200z4 avec SPE.
-me300
Génère du code pour la famille PowerPC e300.
-me500, -me500x2
Génère du code pour le cœur Motorola e500.
-me500mc
Génère du code pour le cœur Freescale e500mc.
-me500mc64
Génère du code pour le cœur Freescale e500mc64.
-me5500
Génère du code pour le cœur Freescale e5500.
-me6500
Génère du code pour le cœur Freescale e6500.
-mlsp
Active les instructions LSP. (Désactive SPE et SPE2.)
-mspe
Génère du code pour les instructions Motorola SPE. (Désactive LSP.)
-mspe2
Génère du code pour les instructions Freescale SPE2. (Désactive LSP.)
-mtitan
Génère du code pour le cœur AppliedMicro Titan.
-mppc64bridge
Génère du code pour PowerPC 64, y compris les instructions de pontage.
-mbooke
Génère du code pour BookE 32 bits.
-ma2
Générer du code pour l’architecture A2.
-maltivec
Générer du code pour les processeurs dotés d’instructions AltiVec.
-mvle
Générer du code pour les instructions VLE de Freescale PowerPC.
-mvsx
Générer du code pour les processeurs dotés d’instructions Vector-Scalar (VSX).
-mhtm
Générer du code pour les processeurs dotés d’instructions de mémoire transactionnelle matérielle.
-mpower4, -mpwr4
Générer du code pour l’architecture Power4.
-mpower5, -mpwr5, -mpwr5x
Générer du code pour l’architecture Power5.
-mpower6, -mpwr6
Générer du code pour l’architecture Power6.
-mpower7, -mpwr7
Générer du code pour l’architecture Power7.
-mpower8, -mpwr8
Générer du code pour l’architecture Power8.
-mpower9, -mpwr9
Générer du code pour l’architecture Power9.
-mpower10, -mpwr10
Générer du code pour l’architecture Power10.
-mpower11, -mpwr11
Générer du code pour l’architecture Power11.
-mfuture
Générer du code pour l’architecture « future ».
-mcell
Générer du code pour l’architecture Cell Broadband Engine.
-mcom
Générer des instructions Power/PowerPC communes.
-many
Générer du code pour n’importe quelle architecture (PWR/PWRX/PPC).
-mregnames
Autoriser les noms symboliques pour les registres.
-mno-regnames
Ne pas autoriser les noms symboliques pour les registres.
-mrelocatable
Prise en charge de l’option -mrelocatable de GCC.
-mrelocatable-lib
Prise en charge de l’option -mrelocatable-lib de GCC.
-memb
Définir le bit PPC\_EMB dans les drapeaux ELF.
-mlittle, -mlittle-endian, -le
Générer du code pour une machine en ordre little endian.
-mbig, -mbig-endian, -be
Générer du code pour une machine en ordre big endian.
-nops=count
Si une directive d’alignement insère plus de « nops » que « count », placer une branche au début pour ignorer l’exécution des « nops ».
Les options suivantes sont disponibles lorsque as est configuré pour un processeur RISC-V.
-fpic
-fPIC
Générer du code indépendant de la position.
-fno-pic
Ne pas générer de code indépendant de la position (par défaut).
-march=ISA|Profiles|Profiles_ISA
Sélectionner l’ISA de base, comme spécifié par ISA ou Profiles ou Profiles\_ISA. Par exemple, -march=rv32ima, -march=RVI20U64, -march=RVI20U64_d. Si cette option et les attributs d’architecture ne sont pas définis, l’assembleur vérifiera le paramètre de configuration par défaut --with-arch=ISA.
-misa-spec=ISAspec
Sélectionner la version par défaut de la spécification ISA. Si la version de l’ISA n’est pas définie par -march, l’assembleur aide à définir la version en fonction de la spécification choisie par défaut. Si cette option n’est pas définie, l’assembleur vérifiera le paramètre de configuration par défaut --with-isa-spec=ISAspec.
-mpriv-spec=PRIVspec
Sélectionner la version de la spécification privilégiée. Nous pouvons décider si le CSR est valide ou non en fonction de la spécification choisie. Si cette option et les attributs de privilèges ne sont pas définis, l’assembleur vérifiera le paramètre de configuration par défaut --with-priv-spec=PRIVspec.
-mabi=ABI
Sélectionne l’ABI, qui est soit « ilp32 » soit « lp64 », éventuellement suivi de « f », « d » ou « q » pour indiquer une convention d’appel à virgule flottante de simple précision, double précision ou quadruple précision, ou aucun, ou « e » pour indiquer une convention d’appel à virgule flottante logicielle (« e » indique une ABI RVE à virgule flottante logicielle).
-mrelax
Tirer parti des optimisations du lieur pour réduire le nombre d’instructions nécessaires pour
matérialiser les adresses des symboles. (par défaut)
-mno-relax
Ne pas effectuer d’optimisations du lieur.
-march-attr
Générer le contenu par défaut pour la section d’attribut ELF RISC-V si les directives
.attribute ne sont pas définies. Cette section est utilisée pour enregistrer les informations
dont un lieur ou un chargeur d’exécution a besoin pour vérifier la compatibilité. Ces
informations incluent la chaîne ISA, les exigences d’alignement de la pile, les accès mémoire
non alignés et les versions principale, secondaire et de révision des spécifications privilégiées.
-mno-arch-attr
Ne pas générer la section d’attribut ELF RISC-V par défaut si les directives .attribute ne
sont pas définies.
-mcsr-check
Activer la vérification des CSR pour les CSR dépendants de l’ISA et les CSR en lecture seule.
Les CSR dépendants de l’ISA ne sont valides que lorsque l’ISA spécifique est définie. Les CSR
en lecture seule ne peuvent pas être écrits par les instructions CSR.
-mno-csr-check
Ne pas effectuer de vérification des CSR.
-mlittle-endian
Générer du code pour une machine little endian.
-mbig-endian
Générer du code pour une machine big endian.
Consultez les pages d’informations pour la documentation des options spécifiques RX.
Les options suivantes sont disponibles lorsque `as` est configuré pour la famille de processeurs
s390.
-m31
-m64
Sélectionner la taille des mots, soit 31/32 bits, soit 64 bits.
-mesa
-mzarch
Sélectionner le mode d’architecture, soit l’architecture Enterprise System (esa), soit le
mode z/Architecture (zarch).
-march=processor
Spécifier la variante de processeur s390 cible, 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
Autoriser ou interdire les noms symboliques pour les registres.
-mwarn-areg-zero
Afficher un avertissement chaque fois que l’opérande du registre de base ou d’index a été
spécifié mais qu’il a une valeur de zéro.
-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch
Contrôle si l’assembleur effectue ou non des vérifications de type de nom de registre et
génère ou non un message d’avertissement en cas de non-correspondance avec le type de
registre de l’opérande. La valeur par défaut (qui peut être restaurée en utilisant l’argument
`relaxed`) consiste à effectuer des vérifications de type de nom de registre assouplies, ce
qui autorise l’utilisation des noms des registres à virgule flottante (FPR) `%f0` à `%f15`
comme arguments des opérandes de registre vectoriel (VR) et des noms de registre vectoriel
(VR) `%v0` à `%v15` comme arguments des opérandes de registre à virgule flottante (FPR). Cela
est acceptable car les FPR sont intégrés dans la moitié inférieure des VR. En utilisant
l’argument `strict`, des vérifications strictes du type de nom de registre sont effectuées.
L’argument `no`, qui est équivalent à `-mno-warn-regtype-mismatch`, désactive toutes les
vérifications de type de nom de registre.
Les options suivantes sont disponibles lorsque `as` est configuré pour un processeur TMS320C6000.
-march=arch
Active (uniquement) les instructions de l'architecture arch. Par défaut, toutes les instructions sont autorisées.
Les valeurs suivantes pour arch sont acceptées : « c62x », « c64x », « c64x+ », « c67x », « c67x+ », « c674x ».
-mdsbt
-mno-dsbt
L'option -mdsbt fait que l'assembleur génère l'attribut « Tag\_ABI\_DSBT » avec une valeur de 1, indiquant que le code utilise l'adressage DSBT. L'option -mno-dsbt, qui est la valeur par défaut, fait que l'attribut a une valeur de 0, indiquant que le code n'utilise pas l'adressage DSBT. L'éditeur de liens émettra un avertissement si des objets de types différents (DSBT et non-DSBT) sont liés ensemble.
-mpid=no
-mpid=near
-mpid=far
L'option -mpid= fait que l'assembleur génère l'attribut « Tag\_ABI\_PID » avec une valeur indiquant la forme d'adressage des données utilisée par le code. -mpid=no, qui est la valeur par défaut, indique un adressage des données dépendant de la position, -mpid=near indique un adressage indépendant de la position avec des accès GOT utilisant l'adressage DP proche, et -mpid=far indique un adressage indépendant de la position avec des accès GOT utilisant l'adressage DP éloigné. L'éditeur de liens émettra un avertissement si des objets créés avec des paramètres différents de cette option sont liés ensemble.
-mpic
-mno-pic
L'option -mpic fait que l'assembleur génère l'attribut « Tag\_ABI\_PIC » avec une valeur de 1 indiquant que le code utilise un adressage de code indépendant de la position. L'option « -mno-pic », qui est la valeur par défaut, fait que l'attribut a une valeur de 0, indiquant un adressage de code dépendant de la position. L'éditeur de liens émettra un avertissement si des objets de types différents (dépendant de la position et indépendant de la position) sont liés ensemble.
-mbig-endian
-mlittle-endian
Génère du code pour l'endianness spécifiée. La valeur par défaut est little-endian.
Les options suivantes sont disponibles lorsque as est configuré pour un processeur TILE-Gx.
-m32 | -m64
Sélectionne la taille du mot, soit 32 bits, soit 64 bits.
-EB | -EL
Sélectionne l'endianness, soit big-endian (-EB), soit little-endian (-EL).
L'option suivante est disponible lorsque as est configuré pour un processeur Visium.
-mtune=arch
Cette option spécifie l'architecture cible. Si une tentative est faite pour assembler une instruction qui ne s'exécutera pas sur l'architecture cible, l'assembleur émettra un message d'erreur.
Les noms suivants sont reconnus : « mcm24 », « mcm », « gr5 », « gr6 ».
Les options suivantes sont disponibles lorsque as est configuré pour un processeur Xtensa.
--text-section-literals | --no-text-section-literals
Contrôle le traitement des pools de littéraux. La valeur par défaut est --no-text-section-literals, qui place les littéraux dans des sections distinctes du fichier de sortie. Cela permet de placer le pool de littéraux dans une RAM/ROM de données. Avec --text-section-literals, les littéraux sont insérés dans la section de texte afin de les maintenir aussi près que possible de leurs références. Cela peut être nécessaire pour les fichiers d'assemblage volumineux, où les littéraux seraient sinon hors de portée des instructions « L32R » dans la section de texte. Les littéraux sont regroupés dans des pools suivant les directives « .literal_position » ou précédant les instructions « ENTRY ». Ces options affectent uniquement les littéraux référencés via les instructions PC-relatives « L32R »; les littéraux pour les instructions de mode absolu « L32R » sont gérés séparément.
--auto-litpools | --no-auto-litpools
Contrôle le traitement des pools de littéraux. La valeur par défaut est --no-auto-litpools, ce qui, en
l'absence de --text-section-literals, place les littéraux dans des sections distinctes du fichier de sortie.
Cela permet de placer le pool de littéraux dans une RAM/ROM de données. Avec --auto-litpools, les
littéraux sont insérés dans la section de texte afin de les maintenir aussi proches que possible de
leurs références ; les directives explicites ".literal_position" ne sont pas nécessaires. Cela peut être
nécessaire pour les fonctions très volumineuses, où un seul pool de littéraux au début de la
fonction peut ne pas être accessible par les instructions "L32R" à la fin. Ces options n'affectent que
les littéraux référencés via les instructions "L32R" relatives à la position du programme ; les littéraux
pour le mode absolu des instructions "L32R" sont gérés séparément. Lorsqu'il est utilisé conjointement
avec --text-section-literals, --auto-litpools prévaut.
--absolute-literals | --no-absolute-literals
Indique à l'assembleur si les instructions "L32R" utilisent un adressage absolu ou relatif à la
position du programme. Si le processeur inclut l'option d'adressage absolu, la valeur par défaut est
d'utiliser les relocalisations "L32R" absolues. Sinon, seules les relocalisations "L32R" relatives à la
position du programme peuvent être utilisées.
--target-align | --no-target-align
Active ou désactive l'alignement automatique afin de réduire les pénalités de branche au prix d'une
taille de code accrue. Cette optimisation est activée par défaut. Notez que l'assembleur alignera
toujours les instructions telles que "LOOP" qui ont des exigences d'alignement fixes.
--longcalls | --no-longcalls
Active ou désactive la transformation des instructions d'appel afin de permettre des appels sur une
plage d'adresses plus étendue. Cette option doit être utilisée lorsque les cibles d'appel peuvent
potentiellement être hors de portée. Cela peut dégrader à la fois la taille du code et les performances,
mais l'éditeur de liens peut généralement optimiser la surcharge inutile lorsque l'appel se trouve
finalement dans la plage. La valeur par défaut est --no-longcalls.
--transform | --no-transform
Active ou désactive toutes les transformations d'instructions Xtensa par l'assembleur, y compris à la
fois la relaxation et l'optimisation. La valeur par défaut est --transform ; --no-transform ne doit
être utilisé que dans les cas rares où les instructions doivent être exactement telles qu'elles sont
spécifiées dans le code source. L'utilisation de --no-transform entraîne des erreurs pour les opérandes
d'instructions hors plage.
--rename-section oldname=newname
Renomme la section oldname en newname. Cette option peut être utilisée plusieurs fois pour renommer
plusieurs sections.
--trampolines | --no-trampolines
Active ou désactive la transformation des instructions de saut afin de permettre des sauts sur une
plage d'adresses plus étendue. Cette option doit être utilisée lorsque les cibles de saut peuvent
potentiellement être hors de portée. En l'absence de tels sauts, cette option n'affecte pas la taille du
code ni les performances. La valeur par défaut est --trampolines.
--abi-windowed | --abi-call0
Choisissez la balise ABI à écrire dans la section « .xtensa.info ». La balise ABI indique l’ABI du code assembleur. Un avertissement est émis par l’éditeur de liens lors d’une tentative de liaison de fichiers objets avec des balises ABI incohérentes. L’ABI par défaut est choisie par la configuration du cœur Xtensa.
Les options suivantes sont disponibles lorsque « as » est configuré pour un processeur Z80.
@chapter Fonctionnalités spécifiques à Z80
Options de ligne de commande
-march=CPU[-EXT...][+EXT...]
Cette option spécifie le processeur cible. L’assembleur émettra un message d’erreur si une tentative est faite pour assembler une instruction qui ne s’exécutera pas sur le processeur cible. Les noms de processeur suivants sont reconnus : « z80 », « z180 », « ez80 », « gbz80 », « z80n », « r800 ». En plus du jeu d’instructions de base, l’assembleur peut être configuré pour accepter certains mnémoniques d’extension. Par exemple, « -march=z180+sli+infc » étend z180 avec les instructions SLI et IN F,(C). Les extensions suivantes sont actuellement prises en charge : « full » (toutes les instructions connues), « adl » (mode ADL CPU par défaut, uniquement eZ80), « sli » (instruction connue sous le nom de SLI, SLL ou SL1), « xyhl » (instructions avec les moitiés des registres d’index : IXL, IXH, IYL, IYH), « xdcb » (instructions comme RotOp (II+d),R et BitOp n,(II+d),R), « infc » (instruction IN F,(C) ou IN (C)), « outc0 » (instruction OUT (C),0). Notez que plutôt qu’étendre un jeu d’instructions de base, les mnémoniques d’extension commençant par « - » révoquent la fonctionnalité respective : « -march=z80-full+xyhl » supprime d’abord toutes les extensions par défaut et ajoute la prise en charge des moitiés de registres d’index uniquement.
Si cette option n’est pas spécifiée, « -march=z80+xyhl+infc » est supposé.
-local-prefix=prefix
Marquez toutes les étiquettes avec le préfixe spécifié comme locales. Mais une telle étiquette peut être marquée explicitement comme globale dans le code. Cette option ne modifie pas le préfixe d’étiquette locale par défaut « .L », elle ajoute simplement un nouveau préfixe.
-colonless
Acceptez les étiquettes sans deux-points. Tous les symboles au début d’une ligne sont traités comme des étiquettes.
-sdcc
Acceptez le code assembleur produit par SDCC.
-fp-s=FORMAT
Format des nombres à virgule flottante de simple précision. Par défaut : ieee754 (32 bits).
-fp-d=FORMAT
Format des nombres à virgule flottante de double précision. Par défaut : ieee754 (64 bits).
VOIR AUSSI
gcc(1), ld(1) et les entrées Info pour binutils et ld.
COPYRIGHT
Copyright (c) 1991-2025 Free Software Foundation, Inc.
La permission est accordée pour copier, distribuer et/ou modifier ce document aux termes de la GNU Free Documentation License, Version 1.3 ou toute version ultérieure publiée par la Free Software Foundation ; sans sections invariantes, sans textes de couverture et sans textes de quatrième de couverture. Une copie de la licence est incluse dans la section intitulée « GNU Free Documentation License ».