AS - der portable GNU-Assembler.
SYNOPSIS
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 ...]
ZIEL
Ziel-AArch64-Optionen: [-EB|-EL] [-mabi=ABI]
Ziel-Alpha-Optionen: [-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]
Ziel-ARC-Optionen: [-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]
Ziel-ARM-Optionen: [-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]
Ziel-Blackfin-Optionen: [-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]
Ziel-BPF-Optionen: [-EL] [-EB]
Ziel-CRIS-Optionen: [--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
Ziel-C-SKY-Optionen: [-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]
Ziel-D10V-Optionen: [-O]
Ziel-D30V-Optionen: [-O|-n|-N]
Ziel-EPIPHANY-Optionen: [-mepiphany|-mepiphany16]
Ziel-H8/300-Optionen: [-h-tick-hex]
Ziel-i386-Optionen: [--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]
Ziel-IA-64-Optionen: [-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]
Ziel-IP2K-Optionen: [-mip2022|-mip2022ext]
Ziel-M32C-Optionen: [-m32c|-m16c] [-relax] [-h-tick-hex]
Ziel-M32R-Optionen: [--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]
Ziel-M680X0-Optionen: [-l] [-m68000|-m68010|-m68020|...]
Ziel-M68HC11-Optionen: [-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]
Ziel-MCORE-Optionen: [-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]
Ziel-Meta-Optionen: [-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] Ziel-MICROBLAZE-Optionen: [-mlittle-endian] [-mbig-endian]
Ziel-MIPS-Optionen: [-nocpp] [-EL] [-EB] [-O[optimierungsstufe]] [-g[debugstufe]] [-G nummer] [-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=codierung] [-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]
Ziel-MMIX-Optionen: [--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]
Ziel-NDS32-Optionen: [-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]
Ziel-PDP11-Optionen: [-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]
Ziel-picoJava-Optionen: [-mb|-me]
Ziel-PowerPC-Optionen: [-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]
Ziel-PRU-Optionen: [-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
Ziel-RISC-V-Optionen: [-fpic|-fPIC|-fno-pic] [-march=ISA|Profiles|Profiles_ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]
Ziel-RL78-Optionen: [-mg10] [-m32bit-doubles|-m64bit-doubles]
Ziel-RX-Optionen: [-mlittle-endian|-mbig-endian] [-m32bit-doubles|-m64bit-doubles] [-muse-conventional-section-names] [-msmall-data-limit] [-mpid] [-mrelax] [-mint-register=number] [-mgcc-abi|-mrx-abi]
Ziel-s390-Optionen: [-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]
Ziel-SCORE-Optionen: [-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]
Ziel-SPARC-Optionen: [-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]
Ziel-TIC54X-Optionen:
[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
[-merrors-to-file
Ziel-TIC6X-Optionen: [-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]
Ziel-TILE-Gx-Optionen: [-m32|-m64][-EB][-EL]
Ziel-Visium-Optionen: [-mtune=arch]
Ziel-Xtensa-Optionen: [--[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]
Ziel-Z80-Optionen: [-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]
BESCHREIBUNG
GNU as ist eigentlich eine Familie von Assemblern. Wenn Sie den GNU-Assembler auf einer Architektur verwenden (oder verwendet haben), sollten Sie eine ziemlich ähnliche Umgebung finden, wenn Sie ihn auf einer anderen Architektur verwenden. Jede Version hat viel gemeinsam mit den anderen, einschließlich Objektdateiformaten, den meisten Assembler-Direktiven (oft Pseudo-Ops genannt) und der Assemblersyntax.
as ist in erster Linie dazu gedacht, die Ausgabe des GNU-C-Compilers "gcc" für die Verwendung durch den Linker "ld" zu assemblieren. Nichtsdestotrotz haben wir versucht, as so zu gestalten, dass es alles korrekt assembliert, was auch andere Assembler für dieselbe Maschine assemblieren würden. Alle Ausnahmen sind explizit dokumentiert. Das bedeutet nicht, dass as immer die gleiche Syntax wie ein anderer Assembler für dieselbe Architektur verwendet; zum Beispiel wissen wir von mehreren inkompatiblen Versionen der 680x0-Assemblersprache.
Jedes Mal, wenn Sie as ausführen, assembliert es genau ein Quellprogramm. Das Quellprogramm besteht aus einer oder mehreren Dateien. (Die Standardeingabe ist ebenfalls eine Datei.)
Sie geben as eine Befehlszeile mit null oder mehr Eingabedateinamen. Die Eingabedateien werden von links nach rechts gelesen. Ein Befehlszeilenargument (an beliebiger Stelle), das keine besondere Bedeutung hat, wird als Eingabedateiname behandelt.
Wenn Sie as keine Dateinamen angeben, versucht es, eine einzelne Eingabedatei von der Standardeingabe von as zu lesen, was normalerweise Ihr Terminal ist. Möglicherweise müssen Sie Strg+D eingeben, um as mitzuteilen, dass es kein Programm mehr zum Assemblieren gibt.
Verwenden Sie --, wenn Sie die Standardeingabedatei explizit in Ihrer Befehlszeile angeben müssen.
Wenn die Quelle leer ist, erzeugt as eine kleine, leere Objektdatei.
as kann Warnungen und Fehlermeldungen in die Standardfehlerausgabe (normalerweise Ihr Terminal) schreiben. Dies sollte nicht passieren, wenn ein Compiler as automatisch ausführt. Warnungen melden eine getroffene Annahme, damit as mit dem Assemblieren eines fehlerhaften Programms fortfahren kann; Fehler melden ein schwerwiegendes Problem, das das Assemblieren stoppt.
Wenn Sie as über den GNU-C-Compiler aufrufen, können Sie die Option -Wa verwenden, um Argumente an den Assembler weiterzugeben. Die Assemblerargumente müssen durch Kommas voneinander getrennt werden (und von -Wa). Zum Beispiel:
gcc -c -g -O -Wa,-alh,-L file.c
Dadurch werden zwei Optionen an den Assembler übergeben: -alh (eine Auflistung in die Standardausgabe mit Quellcode in High-Level- und Assemblersprache ausgeben) und -L (lokale Symbole in der Symboltabelle beibehalten).
Normalerweise müssen Sie diesen -Wa-Mechanismus nicht verwenden, da viele Compiler-Befehlszeilenoptionen automatisch vom Compiler an den Assembler übergeben werden. (Sie können das GNU-Compiler-Driver mit der Option -v aufrufen, um genau zu sehen, welche Optionen er an jeden Kompilierungsschritt weitergibt, einschließlich des Assemblers.)
OPTIONEN
@file Liest Befehlszeilenoptionen aus der Datei. Die gelesenen Optionen werden anstelle der ursprünglichen @file-Option eingefügt. Wenn die Datei nicht existiert oder nicht gelesen werden kann, wird die Option wörtlich behandelt und nicht entfernt.
Optionen in der Datei sind durch Leerzeichen getrennt. Ein Leerzeichen kann in einer Option enthalten sein, indem die gesamte Option entweder in einfache oder doppelte Anführungszeichen gesetzt wird. Jedes Zeichen (einschließlich eines Backslash) kann enthalten sein, indem das einzuschließende Zeichen mit einem Backslash versehen wird. Die Datei kann selbst zusätzliche @file-Optionen enthalten; alle solchen Optionen werden rekursiv verarbeitet.
-a[cdghilmns]
Aktiviert die Ausgabe von Listing-Informationen, und zwar auf verschiedene Arten:
-ac Unterdrückt bedingte Anweisungen, die als falsch bewertet werden.
-ad Unterdrückt Debugging-Direktiven.
-ag Fügt allgemeine Informationen hinzu, wie z.B. Version und übergebene Optionen.
-ah Fügt den Quellcode auf hoher Ebene hinzu.
-al Fügt den Assembler-Code hinzu.
-ali
Fügt den Assembler-Code zusammen mit GINSN hinzu.
-am Fügt die Makro-Erweiterungen hinzu.
-an Unterdrückt die Verarbeitung von Formeln.
-as Fügt Symbole hinzu.
=file
Legt den Namen der Listing-Datei fest.
Sie können diese Optionen kombinieren; verwenden Sie zum Beispiel -aln, um eine Assembler-Listung ohne Formelverarbeitung zu erstellen. Die Option =file muss, falls verwendet, die letzte sein. Allein steht -a standardmäßig für -ahls.
--alternate
Beginnt im alternativen Makromodus.
--compress-debug-sections
Komprimiert DWARF-Debugging-Abschnitte mit zlib unter Verwendung von SHF_COMPRESSED aus der ELF ABI. Die resultierende Objektdatei ist möglicherweise nicht mit älteren Linkern und Objektdateidienstprogrammen kompatibel. Beachten Sie, dass ein Abschnitt nicht komprimiert wird, wenn die Komprimierung ihn tatsächlich größer machen würde.
--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd
Diese Optionen steuern, wie DWARF-Debugging-Abschnitte komprimiert werden. --compress-debug-sections=none ist äquivalent zu --nocompress-debug-sections. --compress-debug-sections=zlib und --compress-debug-sections=zlib-gabi sind äquivalent zu --compress-debug-sections. --compress-debug-sections=zlib-gnu komprimiert DWARF-Debugging-Abschnitte unter Verwendung des veralteten zlib-gnu-Formats. Die Debugging-Abschnitte werden in .zdebug umbenannt. --compress-debug-sections=zstd komprimiert DWARF-Debugging-Abschnitte unter Verwendung von zstd. Beachten Sie, dass ein Abschnitt nicht komprimiert und nicht umbenannt wird, wenn die Komprimierung ihn tatsächlich größer machen würde.
--nocompress-debug-sections
Komprimiert DWARF-Debugging-Abschnitte nicht. Dies ist normalerweise die Standardeinstellung für alle Ziele, aber eine Konfigurationszeitoption kann verwendet werden, um dies zu überschreiben.
-D Aktiviert das Debugging in zielspezifischen Backends, falls unterstützt. Andernfalls wird es ignoriert. Selbst wenn es ignoriert wird, wird diese Option zur Kompatibilität mit Skripten akzeptiert, die andere Assembler aufrufen.
--debug-prefix-map old=new
Wenn Dateien im Verzeichnis "old" assembliert werden, werden Debugging-Informationen so gespeichert, dass sie sich so verhalten, als ob sie sich im Verzeichnis "new" befinden würden.
--defsym sym=value
Definiert das Symbol "sym" auf den Wert "value", bevor die Eingabedatei assembliert wird. "value" muss eine ganzzahlige Konstante sein. Wie in C zeigt ein führendes "0x" einen hexadezimalen Wert an, und ein führendes "0" zeigt einen oktalen Wert an. Der Wert des Symbols kann innerhalb einer Quelldatei über die Verwendung eines ".set"-Pseudo-Operators überschrieben werden.
--dump-config
Zeigt an, wie der Assembler konfiguriert ist, und beendet sich dann.
--elf-stt-common=no
--elf-stt-common=yes
Diese Optionen steuern, ob der ELF-Assembler gemeinsame Symbole mit dem Typ "STT_COMMON" generieren soll. Die Standardeinstellung kann über eine Konfigurationsoption --enable-elf-stt-common gesteuert werden.
--emit-local-absolute
Gibt sogar vordefinierte (lokale) absolute Symbole an die ausgehende Symboltabelle aus. Beachten Sie, dass dies nicht das genaue Gegenteil von --strip-local-absolute ist.
--emulation=name
Wenn der Assembler so konfiguriert ist, dass er mehrere verschiedene Zielkonfigurationen unterstützt, kann diese Option verwendet werden, um die gewünschte Form auszuwählen.
-f "fast"---überspringt die Vorverarbeitung von Leerzeichen und Kommentaren (geht davon aus, dass die Quelle eine Compiler-Ausgabe ist).
-g
--gen-debug
Generiert Debug-Informationen für jede Assembler-Quellzeile unter Verwendung des bevorzugten Debug-Formats des Ziels. Derzeit bedeutet dies entweder STABS, ECOFF oder DWARF2. Wenn das Debug-Format DWARF ist, wird ein Abschnitt ".debug_info" und ".debug_line" nur dann ausgegeben, wenn die Assemblerdatei nicht selbst einen solchen erzeugt.
--gstabs
Generiert STABS-Debugging-Informationen für jede Assembler-Zeile. Dies kann beim Debuggen von Assembler-Code helfen, wenn der Debugger dies unterstützt.
--gstabs+
Generiert STABS-Debugging-Informationen für jede Assembler-Zeile, mit GNU-Erweiterungen, die wahrscheinlich nur von GDB unterstützt werden und die andere Debugger zum Absturz bringen oder dazu führen könnten, dass sie sich weigern, Ihr Programm zu lesen. Dies kann beim Debuggen von Assembler-Code helfen. Derzeit ist die einzige GNU-Erweiterung der Speicherort des aktuellen Arbeitsverzeichnisses zum Zeitpunkt der Assemblierung.
--gdwarf-2
Generiert DWARF2-Debugging-Informationen für jede Assembler-Zeile. Dies kann beim Debuggen von Assembler-Code helfen, wenn der Debugger dies unterstützt. Beachten Sie - diese Option wird nur von einigen Zielen unterstützt, nicht von allen.
--gdwarf-3
Diese Option ist die gleiche wie die Option --gdwarf-2, mit dem Unterschied, dass sie die Möglichkeit der Generierung zusätzlicher Debug-Informationen gemäß Version 3 der DWARF-Spezifikation ermöglicht. Beachten Sie - die Aktivierung dieser Option garantiert nicht die Generierung zusätzlicher Informationen; die Entscheidung, dies zu tun, wird pro Ziel getroffen.
--gdwarf-4
Diese Option ist die gleiche wie die Option --gdwarf-2, mit dem Unterschied, dass sie die Möglichkeit der Generierung zusätzlicher Debug-Informationen gemäß Version 4 der DWARF-Spezifikation ermöglicht. Beachten Sie - die Aktivierung dieser Option garantiert nicht die Generierung zusätzlicher Informationen; die Entscheidung, dies zu tun, wird pro Ziel getroffen.
--gdwarf-5
Diese Option ist die gleiche wie die Option --gdwarf-2, mit dem Unterschied, dass sie die Möglichkeit der Generierung zusätzlicher Debug-Informationen gemäß Version 5 der DWARF-Spezifikation ermöglicht. Beachten Sie - die Aktivierung dieser Option garantiert nicht die Generierung zusätzlicher Informationen; die Entscheidung, dies zu tun, wird pro Ziel getroffen.
--gdwarf-sections
Anstatt einen Abschnitt .debug_line zu erstellen, werden eine Reihe von Abschnitten .debug_line.foo erstellt, wobei foo der Name des entsprechenden Codeabschnitts ist. Beispielsweise wird ein Codeabschnitt namens .text.func seine DWARF-Zeilennummerinformationen in einen Abschnitt namens .debug_line.text.func platzieren. Wenn der Codeabschnitt einfach .text genannt wird, wird der Debug-Zeilenabschnitt immer noch einfach .debug_line genannt, ohne ein Suffix.
--gdwarf-cie-version=version
Steuert, welche Version der DWARF Common Information Entries (CIEs) generiert wird. Wenn diese Option nicht angegeben wird, ist der Standardwert Version 1, obwohl einige Ziele diesen Standardwert ändern können. Andere mögliche Werte für Version sind 3 oder 4.
--generate-missing-build-notes=yes
--generate-missing-build-notes=no
Diese Optionen steuern, ob der ELF-Assembler GNU Build-Attribut-Notizen generieren soll, falls diese in den Eingabequellen nicht vorhanden sind. Der Standardwert kann über die Konfigurationsoption --enable-generate-build-notes gesteuert werden.
--gsframe
--gsframe
--gsframe=no
--gsframe=yes
Erstellt einen .sframe-Abschnitt aus CFI-Direktiven. Die explizite Option --gsframe=yes verhält sich genauso wie --gsframe. Die Generierung kann mit --gsframe=no unterdrückt werden. Der Standardwert kann über eine Konfigurationsoption --enable-default-sframe gesteuert werden.
--hash-size N
Wird ignoriert. Wird zur Kompatibilität mit anderen Assemblern unterstützt.
--help
Gibt eine Zusammenfassung der Befehlszeilenoptionen aus und beendet das Programm.
--target-help
Gibt eine Zusammenfassung aller zielspezifischen Optionen aus und beendet das Programm.
--info
Unterdrückt keine Informationsmeldungen.
--no-info
Unterdrückt Informationsmeldungen.
-I dir
Fügt das Verzeichnis dir der Suchliste für ".include"-Direktiven hinzu.
-J
Gibt keine Warnung bei vorzeichenbehafteten Überläufen aus.
-K
Gibt Warnungen aus, wenn Differenztabellen für lange Verschiebungen geändert werden.
-L
--keep-locals
Behält lokale Symbole in der Symboltabelle. Diese Symbole beginnen mit system-spezifischen lokalen Label-Präfixen, typischerweise .L für ELF-Systeme oder L für traditionelle a.out-Systeme.
--listing-lhs-width=number
Setzt die maximale Breite in Wörtern der Ausgabedatenspalte für ein Assembler-Listing auf number.
--listing-lhs-width2=number
Setzt die maximale Breite in Wörtern der Ausgabedatenspalte für Fortsetzungszeilen in einem Assembler-Listing auf number.
--listing-rhs-width=number
Setzt die maximale Breite einer Eingabezeile, wie sie in einem Listing angezeigt wird, auf number Bytes.
--listing-cont-lines=number
Setzt die maximale Anzahl der in einem Listing für eine einzelne Eingabezeile ausgegebenen Zeilen auf number +
--multibyte-handling=allow
--multibyte-handling=warn
--multibyte-handling=warn-sym-only
--multibyte-handling=warn_sym_only
Steuert, wie der Assembler Multibyte-Zeichen in der Eingabe behandelt. Der Standardwert (der durch die Verwendung des Arguments "allow" wiederhergestellt werden kann) ist, solche Zeichen ohne Beschwerde zuzulassen. Durch die Verwendung des Arguments "warn" generiert der Assembler eine Warnmeldung, wenn ein Multibyte-Zeichen gefunden wird. Durch die Verwendung des Arguments "warn-sym-only" wird nur dann eine Warnung generiert, wenn ein Symbol mit einem Namen definiert wird, der Multibyte-Zeichen enthält. (Referenzen auf undefinierte Symbole generieren keine Warnung).
--no-pad-sections
Verhindert, dass der Assembler das Ende von Ausgabesektionen auf die Ausrichtung dieser Sektion auffüllt. Standardmäßig werden die Sektionen aufgefüllt, dies kann jedoch Speicher verschwenden, was auf Systemen mit begrenzten Speicherressourcen unerwünscht sein kann.
-o objfile
Gibt den Namen der Objektdatei an, die vom Assembler erzeugt wird.
-R Fasst die Datensektion in die Textsektion zusammen.
--reduce-memory-overheads
Wird ignoriert. Wird aus Gründen der Kompatibilität mit Tools unterstützt, die die gleiche Option sowohl an den Assembler als auch an den Linker übergeben.
--scfi=experimental
Diese Option steuert, ob der Assembler CFI (Control Flow Information) für manuell erstellten Code generieren soll. Wenn der Eingabecode bereits einige synthetisierbare CFI-Direktiven enthält, ignoriert der Assembler diese und gibt eine Warnung aus. Beachten Sie, dass "--scfi=experimental" nicht für Compiler-generierten Code, einschließlich Inline-Assembler, verwendet werden soll. Diese experimentelle Unterstützung ist noch in der Entwicklung. Nur System V AMD64 ABI wird unterstützt.
Jede Eingabefunktion in der Assembler-Datei muss mit der ".type"-Direktive beginnen und sollte idealerweise mit einer ".size"-Direktive abgeschlossen werden. Bei Verwendung von SCFI löst jede ".type"-Direktive einen neuen FDE (Function Descriptor Entry) im Assembler aus. Dies bedeutet, dass mit jeder ".type"-Direktive ein vorheriger Block von Anweisungen, falls vorhanden, als separate FDE abgeschlossen wird.
--sectname-subst
Berücksichtigt Substitutionssequenzen in Sektionsnamen.
--size-check=error
--size-check=warning
Gibt eine Fehlermeldung oder eine Warnung für ungültige ELF-.size-Direktiven aus.
--statistics
Gibt den maximalen Speicherplatz (in Bytes) und die Gesamtzeit (in Sekunden) an, die für die Assemblierung benötigt wurden.
--strip-local-absolute
Entfernt lokale absolute Symbole aus der ausgehenden Symboltabelle.
-v
--verbose
Gibt die Version des Assemblers aus.
--version
-version
Gibt die Version des Assemblers aus und beendet das Programm.
-W
--no-warn
Unterdrückt Warnmeldungen.
--warn
Unterdrückt keine Warnmeldungen oder behandelt sie als Fehler.
--fatal-warnings
Behandelt Warnungen als Fehler.
-w Ignoriert.
-x Ignoriert.
-Z Generiert eine Objektdatei, auch wenn Fehler aufgetreten sind.
-- | Dateien ...
Standardeingabe oder Quelldateien, die assembliert werden sollen.
Die folgenden Optionen stehen zur Verfügung, wenn as für den 64-Bit-Modus der ARM-Architektur (AArch64) konfiguriert ist.
-EB Diese Option gibt an, dass die Ausgabe, die vom Assembler generiert wird, als für einen Big-Endian-Prozessor ausgelegt ist.
-EL Diese Option gibt an, dass die Ausgabe, die vom Assembler generiert wird, als für einen Little-Endian-Prozessor ausgelegt ist.
-mabi=abi
Gibt die ABI (Application Binary Interface) an, die der Quellcode verwendet. Die gültigen Argumente sind: "ilp32" und "lp64", was bestimmt, ob die generierte Objektdatei im ELF32- oder ELF64-Format erstellt wird. Standardmäßig ist "lp64" eingestellt.
-mcpu=prozessor[+erweiterung...]
Diese Option gibt den Zielprozessor an. Der Assembler gibt eine Fehlermeldung aus, wenn versucht wird, eine Anweisung zu assemblieren, die auf dem Zielprozessor nicht ausgeführt werden kann. Die folgenden Prozessornamen werden unterstützt: "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" und "cortex-x4". Der spezielle Name "all" kann verwendet werden, um dem Assembler zu erlauben, Anweisungen zu akzeptieren, die für jeden unterstützten Prozessor gültig sind, einschließlich aller optionalen Erweiterungen.
Zusätzlich zum grundlegenden Befehlssatz kann der Assembler so konfiguriert werden, dass er verschiedene Erweiterungs-Mnemonika akzeptiert oder einschränkt, die den Prozessor erweitern.
Wenn einige Implementierungen eines bestimmten Prozessors eine Erweiterung haben können, werden diese Erweiterungen automatisch aktiviert. Folglich müssen Sie normalerweise keine zusätzlichen Erweiterungen angeben.
-march=architektur[+erweiterung...]
Diese Option gibt die Zielarchitektur an. Der Assembler gibt eine Fehlermeldung aus, wenn versucht wird, eine Anweisung zu assemblieren, die auf der Zielarchitektur nicht ausgeführt wird. Die folgenden Architekturbezeichnungen werden erkannt: "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" und "armv9.5-a".
Wenn sowohl -mcpu als auch -march angegeben sind, verwendet der Assembler die Einstellung für -mcpu. Wenn keine von beiden angegeben ist, verwendet der Assembler standardmäßig -mcpu=all.
Die Architektur-Option kann mit denselben Erweiterungsoptionen für den Befehlssatz wie die Option -mcpu erweitert werden. Im Gegensatz zu -mcpu sind Erweiterungen nicht immer standardmäßig aktiviert.
-mverbose-error
Diese Option aktiviert ausführliche Fehlermeldungen für AArch64 gas. Diese Option ist standardmäßig aktiviert.
-mno-verbose-error
Diese Option deaktiviert ausführliche Fehlermeldungen in AArch64 gas.
-menable-sysreg-checking
Diese Option aktiviert Fehlermeldungen, die ausgegeben werden, wenn versucht wird, einen Systemregisterzugriff zu assemblieren, der auf der Zielarchitektur nicht ausgeführt wird.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen Alpha-Prozessor konfiguriert ist.
-mcpu
Diese Option gibt den Zielprozessor an. Wenn versucht wird, eine Anweisung zu assemblieren, die auf dem Zielprozessor nicht ausgeführt wird, kann der Assembler die Anweisung entweder als Makro erweitern oder eine Fehlermeldung ausgeben. Diese Option entspricht der Direktive ".arch".
Die folgenden Prozessorbezeichnungen werden erkannt: 21064, "21064a", 21066, 21068, 21164, "21164a", "21164pc", 21264, "21264a", "21264b", "ev4", "ev5", "lca45", "ev5", "ev56", "pca56", "ev6", "ev67", "ev68". Die spezielle Bezeichnung "all" kann verwendet werden, um dem Assembler zu ermöglichen, Anweisungen zu akzeptieren, die für jeden Alpha-Prozessor gültig sind.
Um die bestehende Praxis in OSF/1 in Bezug auf ".arch" und die bestehende Praxis innerhalb von MILO (dem Linux ARC-Bootloader) zu unterstützen, ermöglichen die nummerierten Prozessornamen (z. B. 21064) die prozessorspezifischen PALcode-Instruktionen, während die "elektro-vlasic"-Namen (z. B. "ev4") dies nicht tun.
-mdebug
-no-mdebug
Aktiviert oder deaktiviert die Generierung der ".mdebug"-Encapsulation für Stabs-Direktiven und Prozedurdeskriptoren. Standardmäßig wird ".mdebug" automatisch aktiviert, wenn die erste Stabs-Direktive gefunden wird.
-relax
Diese Option erzwingt, dass alle Relokationen in die Objektdatei geschrieben werden, anstatt Speicherplatz zu sparen und einige Relokationen zur Assemblierzeit aufzulösen. Beachten Sie, dass diese Option nicht alle Symbolarithmetiken in die Objektdatei überträgt, da nicht alle Symbolarithmetiken dargestellt werden können. Die Option kann jedoch in bestimmten Anwendungen nützlich sein.
-replace
-noreplace
Aktiviert oder deaktiviert die Optimierung von Prozeduraufrufen, sowohl bei der Assemblierung als auch zur Linkzeit. Diese Optionen sind nur für VMS-Ziele verfügbar, und "-replace" ist die Standardeinstellung. Siehe Abschnitt 4.1 des OpenVMS Linker Utility Manual.
-g Diese Option wird verwendet, wenn der Compiler Debug-Informationen generiert. Wenn gcc mipstfile verwendet, um Debug-Informationen für ECOFF zu generieren, müssen lokale Labels an die Objektdatei weitergegeben werden. Andernfalls hat diese Option keine Auswirkungen.
-Gsize
Ein lokales gemeinsames Symbol, das größer als die angegebene Größe ist, wird in ".bss" platziert, während kleinere Symbole in ".sbss" platziert werden.
-F
-32addr
Diese Optionen werden zur Abwärtskompatibilität ignoriert.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen ARC-Prozessor konfiguriert ist.
-mcpu=cpu
Diese Option wählt die Kernprozessorvariante aus.
-EB | -EL
Wählen Sie entweder Big-Endian (-EB) oder Little-Endian (-EL) aus.
-mcode-density
Aktiviert Code-Dichte-Erweiterungsanweisungen.
Die folgenden Optionen stehen zur Verfügung, wenn as für die ARM-Prozessorfamilie konfiguriert ist.
-mcpu=processor[+extension...]
Geben Sie an, welche ARM-Prozessorvariante das Ziel ist.
-march=architecture[+extension...]
Geben Sie an, welche ARM-Architekturvariante vom Ziel verwendet wird.
-mfpu=floating-point-format
Wählen Sie die Floating-Point-Architektur aus, die das Ziel ist.
-mfloat-abi=abi
Wählen Sie die Floating-Point-ABI aus, die verwendet wird.
-mthumb
Aktiviert die reine Thumb-Befehlsdecodierung.
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
Wählen Sie die verwendete Prozeduraufrufkonvention aus.
-EB | -EL
Wählen Sie entweder Big-Endian (-EB) oder Little-Endian (-EL) aus.
-mthumb-interwork
Geben Sie an, dass der Code mit der Berücksichtigung der Interaktion zwischen Thumb- und ARM-Code generiert wurde.
-mccs
Aktiviert den CodeComposer Studio-Assembler-Syntaxkompatibilitätsmodus.
-k Geben Sie an, dass PIC-Code generiert wurde.
Die folgenden Optionen stehen zur Verfügung, wenn as für die Blackfin-Prozessorfamilie konfiguriert ist.
-mcpu=processor[-sirevision]
Diese Option gibt den Zielprozessor an. Die optionale Sirevision wird im Assembler nicht verwendet. Hier ist sie so, dass GCC seine "-mcpu="-Option einfach weitergeben kann. Der Assembler gibt eine Fehlermeldung aus, wenn versucht wird, eine Anweisung zu assemblieren, die auf dem Zielprozessor nicht ausgeführt wird. Die folgenden Prozessornamen werden erkannt: "bf504", "bf506", "bf512", "bf514", "bf516", "bf518", "bf522", "bf523", "bf524", "bf525", "bf526", "bf527", "bf531", "bf532", "bf533", "bf534", "bf535" (noch nicht implementiert), "bf536", "bf537", "bf538", "bf539", "bf542", "bf542m", "bf544", "bf544m", "bf547", "bf547m", "bf548", "bf548m", "bf549", "bf549m", "bf561" und "bf592".
-mfdpic
Für die FDPIC ABI assemblieren.
-mno-fdpic
-mnopic
-mfdpic deaktivieren.
Die folgenden Optionen stehen zur Verfügung, wenn `as` für die Linux-Kernel-BPF-Prozessorfamilie konfiguriert ist.
@chapter BPF-spezifische Funktionen
BPF-Optionen
-EB Diese Option gibt an, dass der Assembler Big-Endian-eBPF ausgeben soll.
-EL Diese Option gibt an, dass der Assembler Little-Endian-eBPF ausgeben soll.
-mdialect=dialect
Diese Option gibt die zu erkennende Assemblersprache an. Der Assembler unterstützt „normal“ und „pseudoc“.
-misa-spec=spec
Diese Option gibt die zu verwendende Version des BPF-Befehlssatzes beim Assemblieren an. Die unterstützten BPF-ISA-Versionen sind v1, v2, v3 und v4.
Der Wert `xbpf` kann angegeben werden, um zusätzliche Befehle zu erkennen, die von GCC für Testzwecke verwendet werden. Beachten Sie jedoch, dass dies kein gültiges BPF ist.
-mno-relax
Diese Option weist den Assembler an, keine Befehle zu entspannen.
Beachten Sie, dass, wenn keine Endianness-Option in der Befehlszeile angegeben wird, die Host-Endianness verwendet wird.
Weitere Informationen finden Sie in den Info-Seiten für die CRIS-spezifischen Optionen.
Die folgenden Optionen stehen zur Verfügung, wenn `as` für die C-SKY-Prozessorfamilie konfiguriert ist.
-march=archname
Für die Architektur `archname` assemblieren. Die Option `--help` listet die gültigen Werte für `archname` auf.
-mcpu=cpuname
Für die Architektur `cpuname` assemblieren. Die Option `--help` listet die gültigen Werte für `cpuname` auf.
-EL
-mlittle-endian
Little-Endian-Ausgabe generieren.
-EB
-mbig-endian
Big-Endian-Ausgabe generieren.
-fpic
-pic
Positionsunabhängigen Code generieren.
-mljump
-mno-ljump
Transformation der Kurzsprungbefehle „jbf“, „jbt“ und „jbr“ in „jmpi“ aktivieren/deaktivieren. Diese Option gilt nur für V2-Prozessoren. Sie wird bei CK801- und CK802-Zielen ignoriert, die den Befehl „jmpi“ nicht unterstützen, und für andere Prozessoren standardmäßig aktiviert.
-mbranch-stub
-mno-branch-stub
„R_CKCORE_PCREL_IMM26BY2“-Relokationen für „bsr“-Befehle an den Linker weitergeben.
Diese Option ist nur für Bare-Metal-C-SKY-V2-ELF-Ziele verfügbar, wo sie standardmäßig aktiviert ist. Sie kann nicht in Code verwendet werden, der dynamisch gegen gemeinsam genutzte Bibliotheken verlinkt wird.
-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr
Transformation der „jbsr“-Befehle in „bsr“ aktivieren/deaktivieren. Diese Option ist immer aktiviert (und `-mno-force2bsr` wird ignoriert) für CK801/CK802-Ziele. Sie ist auch immer aktiviert, wenn `-mbranch-stub` aktiv ist.
-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr
Aktiviert/deaktiviert die Transformation von „jsri“-Instruktionen in „bsr“. Diese Option ist standardmäßig aktiviert.
-mnolrw
-mno-lrw
Aktiviert/deaktiviert die Transformation von „lrw“-Instruktionen in ein „movih“/„ori“-Paar.
-melrw
-mno-elrw
Aktiviert/deaktiviert erweiterte „lrw“-Instruktionen. Diese Option ist standardmäßig für CK800-Serien-Prozessoren aktiviert.
-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func
Aktiviert/deaktiviert die Platzierung von Literal-Pools nach jeder Funktion.
-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br
Aktiviert/deaktiviert die Platzierung von Literal-Pools nach bedingungslosen Sprüngen. Diese Option ist standardmäßig aktiviert.
-mistack
-mno-istack
Aktiviert/deaktiviert Interrupt-Stack-Instruktionen. Diese Option ist standardmäßig für CK801-, CK802- und CK802-Prozessoren aktiviert.
Die folgenden Optionen aktivieren explizit bestimmte optionale Instruktionen. Diese Funktionen werden auch implizit aktiviert, indem mit „-mcpu“ ein Prozessor angegeben wird, der diese unterstützt.
-mhard-float
Aktiviert Hardware-Gleitkomma-Instruktionen.
-mmp
Aktiviert Multiprocessor-Instruktionen.
-mcp
Aktiviert Coprozessor-Instruktionen.
-mcache
Aktiviert Cache-Prefetch-Instruktion.
-msecurity
Aktiviert C-SKY-Sicherheitsinstruktionen.
-mtrust
Aktiviert C-SKY-Vertrauensinstruktionen.
-mdsp
Aktiviert DSP-Instruktionen.
-medsp
Aktiviert erweiterte DSP-Instruktionen.
-mvdsp
Aktiviert Vektor-DSP-Instruktionen.
Die folgenden Optionen stehen zur Verfügung, wenn „as“ für einen Epiphany-Prozessor konfiguriert ist.
-mepiphany
Gibt an, dass sowohl 32- als auch 16-Bit-Instruktionen zulässig sind. Dies ist das Standardverhalten.
-mepiphany16
Beschränkt die zulässigen Instruktionen auf das 16-Bit-Set.
Die folgenden Optionen stehen zur Verfügung, wenn „as“ für einen H8/300-Prozessor konfiguriert ist. @chapter H8/300-spezifische Funktionen
Optionen
Die Renesas H8/300-Version von „as“ hat eine maschinenspezifische Option:
-h-tick-hex
Unterstützt H’00-Format-Hexadezimalzahlen zusätzlich zum 0x00-Format.
-mach=name
Legt die H8300-Maschinenvariante fest. Die folgenden Maschinennamen werden erkannt: „h8300h“, „h8300hn“, „h8300s“, „h8300sn“, „h8300sx“ und „h8300sxn“.
Die folgenden Optionen stehen zur Verfügung, wenn „as“ für einen i386-Prozessor konfiguriert ist.
--32 | --x32 | --64
Wählt die Wortgröße aus, entweder 32 Bit oder 64 Bit. --32 impliziert die Intel i386-Architektur, während --x32 und --64 die AMD x86-64-Architektur mit 32-Bit- bzw. 64-Bit-Wortgröße implizieren.
Diese Optionen sind nur mit dem ELF-Objektdateiformat verfügbar und erfordern, dass die erforderliche BFD-Unterstützung enthalten ist (auf einer 32-Bit-Plattform müssen Sie --enable-64-bit-bfd konfigurieren, um die 64-Bit-Verwendung zu aktivieren und x86-64 als Zielplattform zu verwenden).
-n Standardmäßig ersetzt x86 GAS mehrere NOP-Instruktionen, die für die Ausrichtung innerhalb von Codeabschnitten verwendet werden, durch mehr-Byte-NOP-Instruktionen wie leal 0(%esi,1),%esi. Dieser Schalter deaktiviert die Optimierung, wenn explizit ein einzelnes Byte NOP (0x90) als Füllbyte für die Ausrichtung angegeben wird.
--divide
Auf SVR4-basierten Plattformen wird das Zeichen / als Kommentarzeichen behandelt, was bedeutet, dass es nicht in Ausdrücken verwendet werden kann. Die Option --divide wandelt / in ein normales Zeichen um. Dies deaktiviert / nicht am Anfang einer Zeile, die einen Kommentar startet, oder die Verwendung von # zum Starten eines Kommentars.
-march=CPU[+EXTENSION...]
Diese Option gibt den Zielprozessor an. Der Assembler gibt eine Fehlermeldung aus, wenn versucht wird, eine Anweisung zu assemblieren, die auf dem Zielprozessor nicht ausgeführt werden kann. Die folgenden Prozessornamen werden erkannt: "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" und "generic64".
Zusätzlich zum Basissatz von Anweisungen kann der Assembler angewiesen werden, verschiedene Erweiterungsmnemoniken zu akzeptieren. Zum Beispiel erweitert "-march=i686+sse4+vmx" i686 mit sse4 und vmx. Die folgenden Erweiterungen werden derzeit unterstützt: 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" und "padlock". Beachten Sie, dass diese Erweiterungsmnemoniken mit "no" versehen werden können, um die jeweilige (und alle abhängigen) Funktionalität zu deaktivieren. Beachten Sie außerdem, dass die Suffixe, die in "-march=avx10.<N>" zulässig sind, eine Vektorlängenbeschränkung erzwingen, d. h., obwohl dies ansonsten "aktivierende" Optionen sind, deaktiviert die Verwendung dieser Suffixe alle Anweisungen mit breiteren Vektor- oder Maskenregisteroperanden.
Wenn die Direktive ".arch" zusammen mit -march verwendet wird, hat die Direktive ".arch" Vorrang.
-mtune=CPU
Diese Option gibt einen Prozessor an, für den optimiert werden soll. Wenn sie zusammen mit der Option -march verwendet wird, werden nur Anweisungen des durch die Option -march angegebenen Prozessors generiert.
Gültige CPU-Werte entsprechen der Prozessorliste von -march=CPU.
-moperand-check=none
-moperand-check=warning
-moperand-check=error
Diese Optionen steuern, ob der Assembler bestimmte Befehlsoperanden oder Operandenkombinationen überprüfen soll. Ein Beispiel für eine Anweisung, bei der die Operandengröße nicht aus ihren Operanden abgeleitet werden kann und auch nicht durch ein Anweisungssuffix angegeben wurde. -moperand-check=none verhindert, dass der Assembler diese Prüfungen durchführt. -moperand-check=warning lässt den Assembler eine Warnung ausgeben, wenn die jeweiligen Prüfungen fehlschlagen, was die Standardeinstellung ist. -moperand-check=error lässt den Assembler einen Fehler ausgeben, wenn die jeweiligen Prüfungen fehlschlagen.
-msse2avx
Diese Option gibt an, dass der Assembler SSE-Anweisungen mit VEX-Präfix kodieren soll, was die Verfügbarkeit von AVX erfordert. SSE-Anweisungen, die erweiterte GPRs verwenden, werden mit dem EVEX-Präfix kodiert, was die Verfügbarkeit von AVX512 oder AVX10 erfordert.
-muse-unaligned-vector-move
Diese Option gibt an, dass der Assembler ausgerichtete Vektorverschiebungen als unausgerichtete Vektorverschiebungen kodieren soll.
-msse-check=none
-msse-check=warning
-msse-check=error
Diese Optionen steuern, ob der Assembler SSE-Anweisungen überprüfen soll. -msse-check=none verhindert, dass der Assembler SSE-Anweisungen überprüft, was die Standardeinstellung ist. -msse-check=warning lässt den Assembler eine Warnung für jede SSE-Anweisung ausgeben. -msse-check=error lässt den Assembler einen Fehler für jede SSE-Anweisung ausgeben.
-mavxscalar=128
-mavxscalar=256
Diese Optionen steuern, wie der Assembler skalare AVX-Anweisungen kodieren soll. -mavxscalar=128 kodiert skalare AVX-Anweisungen mit einer Vektorlänge von 128 Bit, was die Standardeinstellung ist. -mavxscalar=256 kodiert skalare AVX-Anweisungen mit einer Vektorlänge von 256 Bit.
WARNUNG: Nicht für Produktionscode verwenden - aufgrund von CPU-Fehlern funktioniert der resultierende Code möglicherweise nicht auf bestimmten Modellen.
-mvexwig=0
-mvexwig=1
Diese Optionen steuern, wie der Assembler VEX.W-ignorierte (WIG) VEX-Anweisungen kodieren soll. -mvexwig=0 kodiert WIG VEX-Anweisungen mit vex.w = 0, was die Standardeinstellung ist. -mvexwig=1 kodiert WIG EVEX-Anweisungen mit vex.w = 1.
WARNUNG: Verwenden Sie dies nicht für Produktionscode, da der resultierende Code aufgrund von CPU-Fehlern möglicherweise nicht auf bestimmten Modellen funktioniert.
-mevexlig=128
-mevexlig=256
-mevexlig=512
Diese Optionen steuern, wie der Assembler LIG-EVEX-Anweisungen (Length-Ignored) codieren soll. -mevexlig=128 codiert LIG-EVEX-Anweisungen mit einer Vektorlänge von 128 Bit, was die Standardeinstellung ist. -mevexlig=256 und -mevexlig=512 codieren LIG-EVEX-Anweisungen mit einer Vektorlänge von 256 bzw. 512 Bit.
-mevexwig=0
-mevexwig=1
Diese Optionen steuern, wie der Assembler WIG-EVEX-Anweisungen (W-Ignored) codieren soll. -mevexwig=0 codiert WIG-EVEX-Anweisungen mit evex.w = 0, was die Standardeinstellung ist. -mevexwig=1 codiert WIG-EVEX-Anweisungen mit evex.w = 1.
-mmnemonic=att
-mmnemonic=intel
Diese Option gibt die Anweisungsmnemonik zum Abgleichen von Anweisungen an. Die Direktiven ".att_mnemonic" und ".intel_mnemonic" haben Vorrang.
-msyntax=att
-msyntax=intel
Diese Option gibt die Anweisungssyntax bei der Verarbeitung von Anweisungen an. Die Direktiven ".att_syntax" und ".intel_syntax" haben Vorrang.
-mnaked-reg
Diese Option gibt an, dass Register kein vorangestelltes "%"-Zeichen benötigen. Die Direktiven ".att_syntax" und ".intel_syntax" haben Vorrang.
-madd-bnd-prefix
Diese Option zwingt den Assembler, allen Sprüngen das BND-Präfix hinzuzufügen, auch wenn dieses im Quellcode nicht explizit angegeben wurde.
-mno-shared
Auf dem ELF-Ziel optimiert der Assembler normalerweise nicht-PLT-Relokationen für definierte, nicht-schwache globale Sprungziele mit Standard-Sichtbarkeit. Die Option -mshared weist den Assembler an, Code zu generieren, der in einer gemeinsam genutzten Bibliothek verwendet werden kann, in der alle nicht-schwachen globalen Sprungziele mit Standard-Sichtbarkeit überschrieben werden können. Der resultierende Code ist etwas größer. Diese Option wirkt sich nur auf die Behandlung von Sprunganweisungen aus.
-mbig-obj
Auf dem PE/COFF-Ziel erzwingt diese Option die Verwendung des großen Objektdateiformats, das mehr als 32768 Abschnitte ermöglicht.
-momit-lock-prefix=no
-momit-lock-prefix=yes
Diese Optionen steuern, wie der Assembler das Lock-Präfix codieren soll. Diese Option ist als Workaround für Prozessoren gedacht, die bei Verwendung des Lock-Präfixes Fehler aufweisen. Diese Option kann nur sicher mit Single-Core-, Single-Thread-Computern verwendet werden. -momit-lock-prefix=yes lässt alle Lock-Präfixe aus. -momit-lock-prefix=no codiert das Lock-Präfix wie gewohnt, was die Standardeinstellung ist.
-mfence-as-lock-add=no
-mfence-as-lock-add=yes
Diese Optionen steuern, wie der Assembler lfence, mfence und sfence codieren soll. -mfence-as-lock-add=yes codiert lfence, mfence und sfence als lock addl $0x0, (%rsp) im 64-Bit-Modus und lock addl $0x0, (%esp) im 32-Bit-Modus. -mfence-as-lock-add=no codiert lfence, mfence und sfence wie gewohnt, was die Standardeinstellung ist.
-mrelax-relocations=no
-mrelax-relocations=yes
Diese Optionen steuern, ob der Assembler Relax-Relokationen, R_386_GOT32X, im 32-Bit-Modus oder R_X86_64_GOTPCRELX und R_X86_64_REX_GOTPCRELX im 64-Bit-Modus generieren soll. -mrelax-relocations=yes generiert Relax-Relokationen. -mrelax-relocations=no generiert keine Relax-Relokationen.
-mtls-check=no
-mtls-check=yes
Diese Optionen steuern, ob der Assembler TLS-Relokationen überprüft. -mtls-check=yes überprüft TLS-Relokationen. -mtls-check=no überprüft keine TLS-Relokationen. Der Standardwert kann über eine Konfigurationsoption --enable-x86-tls-check gesteuert werden.
-malign-branch-boundary=NUM
Diese Option steuert, wie der Assembler Sprünge an Segmentpräfixen oder NOP ausrichtet. NUM muss eine Zweierpotenz sein. Es sollte 0 oder nicht weniger als 16 sein. Sprünge werden innerhalb einer NUM-Byte-Grenze ausgerichtet. -malign-branch-boundary=0, was der Standardwert ist, richtet Sprünge nicht aus.
-malign-branch=TYPE[+TYPE...]
Diese Option gibt die Arten von Sprüngen an, die ausgerichtet werden sollen. TYPE ist eine Kombination aus jcc, was bedingte Sprünge ausrichtet, fused, was verschmolzene bedingte Sprünge ausrichtet, jmp, was unbedingte Sprünge ausrichtet, call, was Funktionsaufrufe ausrichtet, ret, was Rücksprünge ausrichtet, indirect, was indirekte Sprünge und Funktionsaufrufe ausrichtet. Der Standard ist -malign-branch=jcc+fused+jmp.
-malign-branch-prefix-size=NUM
Diese Option gibt die maximale Anzahl von Präfixen in einer Anweisung an, um Sprünge auszurichten. NUM sollte zwischen 0 und 5 liegen. Der Standardwert für NUM ist 5.
-mlbranches-within-32B-boundaries
Diese Option richtet bedingte Sprünge, verschmolzene bedingte Sprünge und unbedingte Sprünge innerhalb einer 32-Byte-Grenze mit bis zu 5 Segmentpräfixen in einer Anweisung aus. Sie entspricht -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. Der Standardwert richtet Sprünge nicht aus.
-mlfence-after-load=no
-mlfence-after-load=yes
Diese Optionen steuern, ob der Assembler nach Ladeanweisungen lfence generiert. -mlfence-after-load=yes generiert lfence. -mlfence-after-load=no generiert kein lfence, was der Standardwert ist.
-mlfence-before-indirect-branch=none
-mlfence-before-indirect-branch=all
-mlfence-before-indirect-branch=register
-mlfence-before-indirect-branch=memory
Diese Optionen steuern, ob der Assembler vor indirekten, nahen Sprunganweisungen lfence generiert. -mlfence-before-indirect-branch=all generiert lfence vor indirekten, nahen Sprüngen über Register und gibt eine Warnung vor indirekten, nahen Sprüngen über Speicher aus. Es setzt auch implizit -mlfence-before-ret=shl, wenn kein explizites -mlfence-before-ret angegeben ist. -mlfence-before-indirect-branch=register generiert lfence vor indirekten, nahen Sprüngen über Register. -mlfence-before-indirect-branch=memory gibt eine Warnung vor indirekten, nahen Sprüngen über Speicher aus. -mlfence-before-indirect-branch=none generiert kein lfence und gibt keine Warnung aus, was der Standardwert ist. Beachten Sie, dass kein lfence vor indirekten, nahen Sprüngen über Register generiert wird, wenn -mlfence-after-load=yes gesetzt ist, da lfence nach dem Laden des Sprungzielregisters generiert wird.
-mlfence-before-ret=none
-mlfence-before-ret=shl
-mlfence-before-ret=or
-mlfence-before-ret=yes
-mlfence-before-ret=not
Diese Optionen steuern, ob der Assembler vor ret eine lfence-Instruktion generieren soll.
-mlfence-before-ret=or generiert eine or-Instruktion mit lfence.
-mlfence-before-ret=shl/yes generiert eine shl-Instruktion mit lfence.
-mlfence-before-ret=not generiert eine not-Instruktion mit lfence. -mlfence-before-ret=none
generiert keine lfence-Instruktion, was die Standardeinstellung ist.
-mx86-used-note=no
-mx86-used-note=yes
Diese Optionen steuern, ob der Assembler die GNU_PROPERTY_X86_ISA_1_USED- und GNU_PROPERTY_X86_FEATURE_2_USED-GNU-Eigenschaftsnotizen generieren soll. Die Standardeinstellung kann über die --enable-x86-used-note-Konfigurationsoption gesteuert werden.
-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz
Diese Optionen steuern, wie der Assembler SAE-spezifische EVEX-Instruktionen codiert. -mevexrcig=rne codiert die RC-Bits der EVEX-Instruktion mit 00, was die Standardeinstellung ist. -mevexrcig=rd, -mevexrcig=ru und -mevexrcig=rz codieren SAE-spezifische EVEX-Instruktionen mit den RC-Bits 01, 10 bzw. 11.
-mamd64
-mintel64
Diese Option gibt an, dass der Assembler nur AMD64- oder Intel64-ISAs im 64-Bit-Modus akzeptieren soll. Standardmäßig werden sowohl AMD64- als auch Intel64-ISAs akzeptiert.
-O0 | -O | -O1 | -O2 | -Os
Optimiert die Instruktionscodierung durch Verwendung kleinerer Instruktionen. -O und -O1 codieren 64-Bit-Register-Load-Instruktionen mit 64-Bit-Immediate als 32-Bit-Register-Load-Instruktionen mit 31-Bit- oder 32-Bit-Immediates, codieren 64-Bit-Register-Clear-Instruktionen mit 32-Bit-Register-Clear-Instruktionen, codieren 256-Bit-/512-Bit-VEX/EVEX-Vektor-Register-Clear-Instruktionen mit 128-Bit-VEX-Vektor-Register-Clear-Instruktionen, codieren 128-Bit-/256-Bit-EVEX-Vektor-Register-Load-/Store-Instruktionen mit VEX-Vektor-Register-Load-/Store-Instruktionen und codieren 128-Bit-/256-Bit-EVEX-gepackte Integer-logische Instruktionen mit 128-Bit-/256-Bit-VEX-gepackten Integer-logischen Instruktionen.
-O2 enthält die -O1-Optimierung und codiert außerdem 256-Bit-/512-Bit-EVEX-Vektor-Register-Clear-Instruktionen mit 128-Bit-EVEX-Vektor-Register-Clear-Instruktionen. Im 64-Bit-Modus werden VEX-codierte Instruktionen mit kommutativen Quelloperanden auch so geändert, dass ihre Quelloperanden vertauscht werden, wenn dies die Verwendung der 2-Byte-VEX-Präfixform anstelle der 3-Byte-Form ermöglicht. Bestimmte Formen von AND sowie OR mit demselben (Register-)Operand, der zweimal angegeben wird, werden ebenfalls in TEST geändert.
-Os beinhaltet -O2-Optimierung sowie die Codierung von 16-Bit-, 32-Bit- und 64-Bit-Registertests mit
einem unmittelbaren Wert als 8-Bit-Registertest mit einem unmittelbaren Wert. -O0 schaltet diese Optimierung aus.
Die folgenden Optionen stehen zur Verfügung, wenn as für die Ubicom IP2K-Serie konfiguriert ist.
-mip2022ext
Gibt an, dass die erweiterten IP2022-Instruktionen zulässig sind.
-mip2022
Stellt das Standardverhalten wieder her, das die zulässigen Instruktionen auf die grundlegenden
IP2022-Instruktionen beschränkt.
Die folgenden Optionen stehen zur Verfügung, wenn as für die Renesas M32C- und M16C-Prozessoren konfiguriert ist.
-m32c
M32C-Instruktionen assemblieren.
-m16c
M16C-Instruktionen assemblieren (Standard).
-relax
Unterstützung für Link-Zeit-Relaxationen aktivieren.
-h-tick-hex
Unterstützung für Hex-Konstanten im H'00-Format zusätzlich zum 0x00-Format.
Die folgenden Optionen stehen zur Verfügung, wenn as für die Renesas M32R (ehemals Mitsubishi M32R)-Serie konfiguriert ist.
--m32rx
Gibt an, welcher Prozessor in der M32R-Familie das Ziel ist. Standardmäßig ist dies normalerweise der M32R,
aber diese Option ändert dies zu M32RX.
--warn-explicit-parallel-conflicts oder --Wp
Gibt Warnmeldungen aus, wenn fragwürdige parallele Konstrukte gefunden werden.
--no-warn-explicit-parallel-conflicts oder --Wnp
Gibt keine Warnmeldungen aus, wenn fragwürdige parallele Konstrukte gefunden werden.
Die folgenden Optionen stehen zur Verfügung, wenn as für die Motorola 68000-Serie konfiguriert ist.
-l Verkürzt die Referenzen auf undefinierte Symbole auf ein Wort anstatt auf zwei.
-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
Gibt an, welcher Prozessor der 68000-Familie das Ziel ist. Standardmäßig ist dies normalerweise der 68020,
aber dies kann zur Konfigurationszeit geändert werden.
-m68881 | -m68882 | -mno-68881 | -mno-68882
Die Zielmaschine verfügt (oder nicht) über einen Floating-Point-Copro Prozessor. Standardmäßig wird
für 68020, 68030 und cpu32 davon ausgegangen, dass ein Coprozessor vorhanden ist. Obwohl der
basale 68000 nicht mit dem 68881 kompatibel ist, kann eine Kombination aus beiden angegeben werden,
da es möglich ist, die Coprozessor-Instruktionen mit dem Hauptprozessor zu emulieren.
-m68851 | -mno-68851
Die Zielmaschine verfügt (oder nicht) über einen Memory-Management-Unit-Copro Prozessor. Standardmäßig
wird für 68020 und höher davon ausgegangen, dass eine MMU vorhanden ist.
Für Details zu den PDP-11-maschineabhängigen Funktionsoptionen siehe PDP-11-Optionen.
-mpic | -mno-pic
Generiert positionsunabhängigen (oder positionabhängigen) Code. Standardmäßig ist -mpic.
-mall
-mall-extensions
Aktiviert alle Erweiterungen des Befehlssatzes. Dies ist der Standard.
-mno-extensions
Deaktiviert alle Erweiterungen des Befehlssatzes.
-mextension | -mno-extension
Aktiviert (oder deaktiviert) eine bestimmte Erweiterung des Befehlssatzes.
-mcpu
Aktiviert die Erweiterungen des Befehlssatzes, die von einer bestimmten CPU unterstützt werden, und deaktiviert alle anderen Erweiterungen.
-mmachine
Aktiviert die Erweiterungen des Befehlssatzes, die von einem bestimmten Maschinenmodell unterstützt werden, und deaktiviert alle anderen Erweiterungen.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen picoJava-Prozessor konfiguriert ist.
-mb Generiert eine Ausgabe im „Big-Endian“-Format.
-ml Generiert eine Ausgabe im „Little-Endian“-Format.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen PRU-Prozessor konfiguriert ist.
-mlink-relax
Geht davon aus, dass ld die LDI32-Instruktionen optimieren würde, indem es die oberen 16 Bits des
Ausdrucks überprüft. Wenn diese alle Nullen sind, würde ld die LDI32-Instruktion zu einer einzelnen
LDI-Instruktion kürzen. In diesem Fall gibt as DIFF-Relokationen für verschiedene Ausdrücke aus.
-mno-link-relax
Geht davon aus, dass ld die LDI32-Instruktionen nicht optimieren würde. Folglich werden keine DIFF-Relokationen ausgegeben.
-mno-warn-regname-label
Unterdrückt die Warnung, wenn ein Label-Name mit einem Registernamen übereinstimmt. In der Regel möchten Assembler-Programmierer, dass diese Warnung ausgegeben wird. C-Compiler möchten dies möglicherweise deaktivieren.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen MIPS-Prozessor konfiguriert ist.
-G num
Diese Option setzt die maximale Größe eines Objekts, auf das mit dem „gp“-Register implizit verwiesen werden kann. Sie wird nur für Ziele akzeptiert, die das ECOFF-Format verwenden, wie z. B. ein DECstation, auf dem Ultrix ausgeführt wird. Der Standardwert ist 8.
-EB Generiert eine Ausgabe im „Big-Endian“-Format.
-EL Generiert eine Ausgabe im „Little-Endian“-Format.
-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips32r3
-mips32r5
-mips32r6
-mips64
-mips64r2
-mips64r3
-mips64r5
-mips64r6
Generiert Code für eine bestimmte MIPS-Instruktionssatzarchitektur. -mips1 ist ein Alias für -march=r3000, -mips2 ist ein Alias für -march=r6000, -mips3 ist ein Alias für -march=r4000 und -mips4 ist ein Alias für -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5 und -mips64r6 entsprechen den generischen MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5 und MIPS64 Release 6 ISA-Prozessoren.
-march=cpu
Generiert Code für eine bestimmte MIPS-CPU.
-mtune=cpu
Plant und optimiert für eine bestimmte MIPS-CPU.
-mfix7000
-mno-fix7000
Fügt NOPs ein, wenn das Lesen des Zielregisters einer mfhi- oder mflo-Instruktion in den folgenden zwei
Instruktionen erfolgt.
-mfix-rm7000
-mno-fix-rm7000
Fügt NOPs ein, wenn einer dmult- oder dmultu-Instruktion eine Ladeinstruktion folgt.
-mfix-r5900
-mno-fix-r5900
Versucht nicht, die vorherige Instruktion in den Verzögerungsbereich einer am Ende einer kurzen Schleife von sechs oder weniger Instruktionen platzierten Branch-Instruktion zu planen, und plant stattdessen immer eine „nop“-Instruktion dorthin. Der Fehler in der kurzen Schleife verursacht unter bestimmten Bedingungen, dass Schleifen nur einmal oder zweimal ausgeführt werden, aufgrund eines Hardwarefehlers im R5900-Chip.
-mdebug
-no-mdebug
Veranlasst, dass die Stabs-ähnliche Debugausgabe in eine ECOFF-ähnliche .mdebug-Sektion anstelle der
Standard-ELF-.stabs-Sektionen geschrieben wird.
-mpdr
-mno-pdr
Steuert die Generierung von ".pdr"-Abschnitten.
-mgp32
-mfp32
Normalerweise werden die Registergrößen aus der ISA und dem ABI abgeleitet, aber diese Flags erzwingen eine bestimmte Gruppe von Registern, die immer als 32 Bit breit behandelt werden. -mgp32 steuert die Größe der Allzweckregister und -mfp32 steuert die Größe der Gleitkommaregister.
-mgp64
-mfp64
Normalerweise werden die Registergrößen aus der ISA und dem ABI abgeleitet, aber diese Flags erzwingen eine bestimmte Gruppe von Registern, die immer als 64 Bit breit behandelt werden. -mgp64 steuert die Größe der Allzweckregister und -mfp64 steuert die Größe der Gleitkommaregister.
-mfpxx
Die Registergrößen werden normalerweise aus der ISA und dem ABI abgeleitet, aber die Verwendung dieses Flags in Kombination mit -mabi=32 aktiviert eine ABI-Variante, die korrekt mit Gleitkommaregistern funktioniert, die 32 oder 64 Bit breit sind.
-modd-spreg
-mno-odd-spreg
Aktiviert die Verwendung von Gleitkommaoperationen auf ungeradzahligen Einzelpräzisionsregistern, wenn dies von der ISA unterstützt wird. -mfpxx impliziert -mno-odd-spreg, andernfalls ist die Standardeinstellung -modd-spreg.
-mips16
-no-mips16
Generiert Code für den MIPS 16-Prozessor. Dies entspricht dem Einfügen von ".module mips16" am Anfang der Assemblerdatei. -no-mips16 deaktiviert diese Option.
-mmips16e2
-mno-mips16e2
Aktiviert die Verwendung von MIPS16e2-Anweisungen im MIPS16-Modus. Dies entspricht dem Einfügen von ".module mips16e2" am Anfang der Assemblerdatei. -mno-mips16e2 deaktiviert diese Option.
-mmicromips
-mno-micromips
Generiert Code für den microMIPS-Prozessor. Dies entspricht dem Einfügen von ".module micromips" am Anfang der Assemblerdatei. -mno-micromips deaktiviert diese Option. Dies entspricht dem Einfügen von ".module nomicromips" am Anfang der Assemblerdatei.
-msmartmips
-mno-smartmips
Aktiviert die SmartMIPS-Erweiterung für den MIPS32-Befehlssatz. Dies entspricht dem Einfügen von ".module smartmips" am Anfang der Assemblerdatei. -mno-smartmips deaktiviert diese Option.
-mips3d
-no-mips3d
Generiert Code für die MIPS-3D-anwendungsspezifische Erweiterung. Dies teilt dem Assembler mit, MIPS-3D-Anweisungen zu akzeptieren. -no-mips3d deaktiviert diese Option.
-mdmx
-no-mdmx
Generiert Code für die MDMX-anwendungsspezifische Erweiterung. Dies teilt dem Assembler mit, MDMX-Anweisungen zu akzeptieren. -no-mdmx deaktiviert diese Option.
-mdsp
-mno-dsp
Generiert Code für die DSP Release 1-anwendungsspezifische Erweiterung. Dies teilt dem Assembler mit, DSP Release 1-Anweisungen zu akzeptieren. -mno-dsp deaktiviert diese Option.
-mdspr2
-mno-dspr2
Generiert Code für die DSP Release 2-anwendungsspezifische Erweiterung. Diese Option impliziert -mdsp. Dies teilt dem Assembler mit, DSP Release 2-Anweisungen zu akzeptieren. -mno-dspr2 deaktiviert diese Option.
-mdspr3
-mno-dspr3
Generiert Code für die DSP Release 3-anwendungsspezifische Erweiterung. Diese Option impliziert -mdsp und -mdspr2. Dies teilt dem Assembler mit, DSP Release 3-Anweisungen zu akzeptieren. -mno-dspr3 deaktiviert diese Option.
-mmsa
-mno-msa
Generiert Code für die MIPS SIMD-Architekturerweiterung. Dies weist den Assembler an, MSA-Instruktionen zu akzeptieren. -mno-msa schaltet diese Option aus.
-mxpa
-mno-xpa
Generiert Code für die MIPS eXtended Physical Address (XPA)-Erweiterung. Dies weist den Assembler an, XPA-Instruktionen zu akzeptieren. -mno-xpa schaltet diese Option aus.
-mmt
-mno-mt
Generiert Code für die MT Application Specific Extension. Dies weist den Assembler an, MT-Instruktionen zu akzeptieren. -mno-mt schaltet diese Option aus.
-mmcu
-mno-mcu
Generiert Code für die MCU Application Specific Extension. Dies weist den Assembler an, MCU-Instruktionen zu akzeptieren. -mno-mcu schaltet diese Option aus.
-mcrc
-mno-crc
Generiert Code für die MIPS Cyclic Redundancy Check (CRC)-Application Specific Extension. Dies weist den Assembler an, CRC-Instruktionen zu akzeptieren. -mno-crc schaltet diese Option aus.
-mginv
-mno-ginv
Generiert Code für die Global INValidate (GINV)-Application Specific Extension. Dies weist den Assembler an, GINV-Instruktionen zu akzeptieren. -mno-ginv schaltet diese Option aus.
-mloongson-mmi
-mno-loongson-mmi
Generiert Code für die Loongson MultiMedia Extensions Instructions (MMI)-Application Specific Extension. Dies weist den Assembler an, MMI-Instruktionen zu akzeptieren. -mno-loongson-mmi schaltet diese Option aus.
-mloongson-cam
-mno-loongson-cam
Generiert Code für die Loongson Content Address Memory (CAM)-Instruktionen. Dies weist den Assembler an, Loongson CAM-Instruktionen zu akzeptieren. -mno-loongson-cam schaltet diese Option aus.
-mloongson-ext
-mno-loongson-ext
Generiert Code für die Loongson EXTensions (EXT)-Instruktionen. Dies weist den Assembler an, Loongson EXT-Instruktionen zu akzeptieren. -mno-loongson-ext schaltet diese Option aus.
-mloongson-ext2
-mno-loongson-ext2
Generiert Code für die Loongson EXTensions R2 (EXT2)-Instruktionen. Diese Option impliziert -mloongson-ext. Dies weist den Assembler an, Loongson EXT2-Instruktionen zu akzeptieren. -mno-loongson-ext2 schaltet diese Option aus.
-minsn32
-mno-insn32
Verwendet nur 32-Bit-Instruktionscodierungen beim Generieren von Code für den microMIPS-Prozessor. Diese Option verhindert die Verwendung von 16-Bit-Instruktionen. Dies entspricht dem Platzieren von ".set insn32" am Anfang der Assembly-Datei. -mno-insn32 schaltet diese Option aus. Dies entspricht dem Platzieren von ".set noinsn32" am Anfang der Assembly-Datei. Standardmäßig ist -mno-insn32 ausgewählt, sodass alle Anweisungen verwendet werden können.
--construct-floats
--no-construct-floats
Die Option --no-construct-floats deaktiviert die Erstellung von Double-Width-Gleitkomma-Konstanten, indem die beiden Hälften des Werts in die beiden Single-Width-Gleitkomma-Register geladen werden, aus denen das Double-Width-Register besteht. Standardmäßig ist --construct-floats aktiviert, wodurch die Erstellung dieser Gleitkomma-Konstanten ermöglicht wird.
--relax-branch
--no-relax-branch
Die Option --relax-branch aktiviert die Entspannung von Branches, die außerhalb des zulässigen Bereichs liegen. Standardmäßig ist --no-relax-branch aktiviert, was dazu führt, dass Branches, die außerhalb des zulässigen Bereichs liegen, einen Fehler auslösen.
-mignore-branch-isa
-mno-ignore-branch-isa
Ignoriert Branch-Prüfungen auf ungültige Übergänge zwischen ISA-Modi. Die Semantik von Branches sieht keinen ISA-Moduswechsel vor, daher muss in den meisten Fällen der ISA-Modus, für den ein Branch codiert wurde, mit dem ISA-Modus des Ziel-Labels des Branchs übereinstimmen. GAS verfügt daher über implementierte Prüfungen, die in der Branch-Assemblierung überprüfen, ob die beiden ISA-Modi übereinstimmen. -mignore-branch-isa deaktiviert diese Prüfungen. Standardmäßig ist -mno-ignore-branch-isa aktiviert, was dazu führt, dass jeder ungültige Branch, der einen Übergang zwischen ISA-Modi erfordert, einen Fehler auslöst.
-mnan=encoding
Wählt zwischen der IEEE 754-2008 (-mnan=2008) oder dem Legacy- (-mnan=legacy) NaN-Kodierungsformat. Letzteres ist die Standardeinstellung.
--emulation=name
Diese Option wurde früher verwendet, um zwischen ELF- und ECOFF-Ausgabe für Ziele wie IRIX 5 zu wechseln, die beide unterstützten. Die MIPS-ECOFF-Unterstützung wurde in GAS 2.24 entfernt, so dass die Option jetzt kaum noch einen Zweck erfüllt. Sie wird aus Gründen der Abwärtskompatibilität beibehalten.
Die verfügbaren Konfigurationsnamen sind: mipself, mipslelf und mipsbelf. Die Auswahl von mipself hat jetzt keine Auswirkungen, da die Ausgabe immer ELF ist. mipslelf und mipsbelf wählen die Little- und Big-Endian-Ausgabe, aber -EL und -EB sind jetzt die bevorzugten Optionen.
-nocpp
as ignoriert diese Option. Sie wird der Kompatibilität mit den nativen Tools zuliebe akzeptiert.
--trap
--no-trap
--break
--no-break
Steuert, wie mit Multiplikationsüberlauf und Division durch Null umgegangen werden soll. --trap oder --no-break (die Synonyme sind) lösen eine Trap-Exception aus (und funktionieren nur für Instruction Set Architecture Level 2 und höher); --break oder --no-trap (ebenfalls Synonyme und die Standardeinstellung) lösen eine Break-Exception aus.
-n Wenn diese Option verwendet wird, gibt as jedes Mal eine Warnung aus, wenn sie eine Nop-Anweisung aus einem Makro generiert.
Die folgenden Optionen sind verfügbar, wenn as für einen LoongArch-Prozessor konfiguriert ist.
-fpic
-fPIC
Generiert positionsunabhängigen Code.
-fno-pic
Generiert keinen positionsunabhängigen Code (Standard).
Die folgenden Optionen sind verfügbar, wenn as für einen Meta-Prozessor konfiguriert ist.
"-mcpu=metac11"
Generiert Code für Meta 1.1.
"-mcpu=metac12"
Generiert Code für Meta 1.2.
"-mcpu=metac21"
Generiert Code für Meta 2.1.
"-mfpu=metac21"
Ermöglicht die Verwendung der FPU-Hardware von Meta 2.1.
Weitere Informationen finden Sie in den Info-Seiten für die MMIX-spezifischen Optionen.
Die folgenden Optionen sind verfügbar, wenn as für einen NDS32-Prozessor konfiguriert ist.
"-O1"
Optimiert für Leistung.
"-Os"
Optimiert für Speicherplatz.
"-EL"
Erzeugt Little-Endian-Daten.
"-EB"
Erzeugt Little-Endian-Daten.
"-mpic"
Generiert PIC.
"-mno-fp-as-gp-relax"
Unterdrückt die FP-als-GP-Entspannung für diese Datei.
"-mb2bb-relax"
Back-to-Back-Branch-Optimierung.
"-mno-all-relax"
Unterdrückt alle Relaxationen für diese Datei.
"-march=<arch name>"
Erstellt Code für die Architektur
"-mbaseline=<baseline>"
Erstellt Code für die Baseline
"-mfpu-freg=FREG"
Gibt eine FPU-Konfiguration an.
"0 8 SP / 4 DP Register"
"1 16 SP / 8 DP Register"
"2 32 SP / 16 DP Register"
"3 32 SP / 32 DP Register"
"-mabi=abi"
Gibt eine ABI-Version
"-m[no-]mac"
Aktiviert/Deaktiviert die Unterstützung für Multiplikationsbefehle.
"-m[no-]div"
Aktiviert/Deaktiviert die Unterstützung für Divisionsbefehle.
"-m[no-]16bit-ext"
Aktiviert/Deaktiviert die 16-Bit-Erweiterung.
"-m[no-]dx-regs"
Aktiviert/Deaktiviert die Register d0/d1.
"-m[no-]perf-ext"
Aktiviert/Deaktiviert die Performance-Erweiterung.
"-m[no-]perf2-ext"
Aktiviert/Deaktiviert die Performance-Erweiterung 2.
"-m[no-]string-ext"
Aktiviert/Deaktiviert die String-Erweiterung.
"-m[no-]reduced-regs"
Aktiviert/Deaktiviert die Konfiguration mit reduzierten Registern (GPR16).
"-m[no-]audio-isa-ext"
Aktiviert/Deaktiviert die AUDIO ISA-Erweiterung.
"-m[no-]fpu-sp-ext"
Aktiviert/Deaktiviert die FPU SP-Erweiterung.
"-m[no-]fpu-dp-ext"
Aktiviert/Deaktiviert die FPU DP-Erweiterung.
"-m[no-]fpu-fma"
Aktiviert/Deaktiviert FPU-Befehle für die verschmolzene Multiplikation und Addition.
"-mall-ext"
Aktiviert alle Erweiterungen und die Unterstützung für Befehle.
Die folgenden Optionen stehen zur Verfügung, wenn der Assembler für einen PowerPC-Prozessor konfiguriert ist.
-a32
Generiert ELF32 oder XCOFF32.
-a64
Generiert ELF64 oder XCOFF64.
-K PIC
Setzt EF_PPC_RELOCATABLE_LIB in den ELF-Flags.
-mpwrx | -mpwr2
Generiert Code für POWER/2 (RIOS2).
-mpwr
Generiert Code für POWER (RIOS1).
-m601
Generiert Code für PowerPC 601.
-mppc, -mppc32, -m603, -m604
Generiert Code für PowerPC 603/604.
-m403, -m405
Generiert Code für PowerPC 403/405.
-m440
Generiert Code für PowerPC 440. BookE und einige 405-Befehle.
-m464
Generiert Code für PowerPC 464.
-m476
Generiert Code für PowerPC 476.
-m7400, -m7410, -m7450, -m7455
Generiert Code für PowerPC 7400/7410/7450/7455.
-m750cl, -mgekko, -mbroadway
Generiert Code für PowerPC 750CL/Gekko/Broadway.
-m821, -m850, -m860
Generiert Code für PowerPC 821/850/860.
-mppc64, -m620
Generiert Code für PowerPC 620/625/630.
-me200z2, -me200z4
Generiert Code für e200-Varianten, e200z2 mit LSP, e200z4 mit SPE.
-me300
Generiert Code für die PowerPC e300-Familie.
-me500, -me500x2
Generiert Code für den Motorola e500 Core Complex.
-me500mc
Generiert Code für den Freescale e500mc Core Complex.
-me500mc64
Generiert Code für den Freescale e500mc64 Core Complex.
-me5500
Generiert Code für den Freescale e5500 Core Complex.
-me6500
Generiert Code für den Freescale e6500 Core Complex.
-mlsp
Aktiviert LSP-Befehle. (Deaktiviert SPE und SPE2.)
-mspe
Generiert Code für Motorola SPE-Befehle. (Deaktiviert LSP.)
-mspe2
Generiert Code für Freescale SPE2-Befehle. (Deaktiviert LSP.)
-mtitan
Generiert Code für den AppliedMicro Titan Core Complex.
-mppc64bridge
Generiert Code für PowerPC 64, einschließlich Bridge-Befehle.
-mbooke
Generiert Code für 32-Bit BookE.
-ma2
Generiert Code für die A2-Architektur.
-maltivec
Generiert Code für Prozessoren mit AltiVec-Instruktionen.
-mvle
Generiert Code für Freescale PowerPC VLE-Instruktionen.
-mvsx
Generiert Code für Prozessoren mit Vector-Scalar (VSX)-Instruktionen.
-mhtm
Generiert Code für Prozessoren mit Hardware Transactional Memory-Instruktionen.
-mpower4, -mpwr4
Generiert Code für die Power4-Architektur.
-mpower5, -mpwr5, -mpwr5x
Generiert Code für die Power5-Architektur.
-mpower6, -mpwr6
Generiert Code für die Power6-Architektur.
-mpower7, -mpwr7
Generiert Code für die Power7-Architektur.
-mpower8, -mpwr8
Generiert Code für die Power8-Architektur.
-mpower9, -mpwr9
Generiert Code für die Power9-Architektur.
-mpower10, -mpwr10
Generiert Code für die Power10-Architektur.
-mpower11, -mpwr11
Generiert Code für die Power11-Architektur.
-mfuture
Generiert Code für die 'future'-Architektur.
-mcell
Generiert Code für die Cell Broadband Engine-Architektur.
-mcom
Generiert Power/PowerPC-gemeinsame Instruktionen.
-many
Generiert Code für jede Architektur (PWR/PWRX/PPC).
-mregnames
Erlaubt symbolische Namen für Register.
-mno-regnames
Erlaubt keine symbolischen Namen für Register.
-mrelocatable
Unterstützung für die GCC-Option -mrelocatable.
-mrelocatable-lib
Unterstützung für die GCC-Option -mrelocatable-lib.
-memb
Setzt das PPC_EMB-Bit in ELF-Flags.
-mlittle, -mlittle-endian, -le
Generiert Code für eine Little-Endian-Maschine.
-mbig, -mbig-endian, -be
Generiert Code für eine Big-Endian-Maschine.
-nops=count
Wenn eine Ausrichtungsanweisung mehr als 'count' NOPs einfügt, wird am Anfang ein Sprung eingefügt, um die Ausführung der NOPs zu überspringen.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen RISC-V-Prozessor konfiguriert ist.
-fpic
-fPIC
Generiert positionsunabhängigen Code.
-fno-pic
Generiert keinen positionsunabhängigen Code (Standard).
-march=ISA|Profiles|Profiles_ISA
Wählt die Basis-ISA aus, wie durch ISA oder Profiles oder Profiles_ISA angegeben. Zum Beispiel: -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. Wenn diese Option und die Architekturattribute nicht gesetzt sind, überprüft der Assembler die Standardkonfigurationseinstellung --with-arch=ISA.
-misa-spec=ISAspec
Wählt die Standard-ISA-Spezifikationsversion aus. Wenn die Version von ISA nicht durch -march festgelegt wird, hilft der Assembler dabei, die Version entsprechend der ausgewählten Standardspezifikation festzulegen. Wenn diese Option nicht gesetzt ist, überprüft der Assembler die Standardkonfigurationseinstellung --with-isa-spec=ISAspec.
-mpriv-spec=PRIVspec
Wählt die privilegierte Spezifikationsversion aus. Wir können entscheiden, ob das CSR gültig ist oder nicht, basierend auf der ausgewählten Spezifikation. Wenn diese Option und die Privilegattribute nicht gesetzt sind, überprüft der Assembler die Standardkonfigurationseinstellung --with-priv-spec=PRIVspec.
-mabi=ABI
Wählt die ABI aus, die entweder "ilp32" oder "lp64" ist, optional gefolgt von "f", "d" oder "q", um eine Gleitkomma-Aufrufkonvention mit einfacher, doppelter oder vierfacher Genauigkeit anzugeben, oder keine oder "e", um die Soft-Float-Aufrufkonvention anzugeben ("e" gibt eine Soft-Float-RVE-ABI an).
-mrelax
Nutzen Sie Linker-Relaxationen, um die Anzahl der Anweisungen, die zur Materialisierung von Symboladressen erforderlich sind, zu reduzieren. (Standard)
-mno-relax
Führen Sie keine Linker-Relaxationen durch.
-march-attr
Generieren Sie den Standardinhalt für den RISC-V-ELF-Attributabschnitt, falls die `.attribute`-Direktiven nicht gesetzt sind. Dieser Abschnitt wird verwendet, um Informationen zu speichern, die ein Linker oder ein Laufzeit-Lader zur Kompatibilitätsprüfung benötigt. Diese Informationen umfassen die ISA-Zeichenkette, die Stapel-Ausrichtungsanforderung, den Zugriff auf nicht ausgerichteten Speicher und die Haupt-, Neben- und Revisionsversion der privilegierten Spezifikation.
-mno-arch-attr
Generieren Sie nicht den Standard-RISC-V-ELF-Attributabschnitt, wenn die `.attribute`-Direktiven nicht gesetzt sind.
-mcsr-check
Aktivieren Sie die CSR-Prüfung für die ISA-abhängigen CSRs und die schreibgeschützten CSRs. Die ISA-abhängigen CSRs sind nur gültig, wenn die spezifische ISA gesetzt ist. In die schreibgeschützten CSRs darf nicht mit den CSR-Anweisungen geschrieben werden.
-mno-csr-check
Führen Sie keine CSR-Prüfung durch.
-mlittle-endian
Generieren Sie Code für eine Little-Endian-Maschine.
-mbig-endian
Generieren Sie Code für eine Big-Endian-Maschine.
Weitere Informationen finden Sie in den Info-Seiten für die Dokumentation der RX-spezifischen Optionen.
Die folgenden Optionen stehen zur Verfügung, wenn `as` für die S390-Prozessor-Familie konfiguriert ist.
-m31
-m64
Wählen Sie die Wortgröße aus, entweder 31/32 Bit oder 64 Bit.
-mesa
-mzarch
Wählen Sie den Architekturmodus aus, entweder die Enterprise System Architecture (ESA) oder den z/Architecture-Modus (Zarch).
-march=prozessor
Geben Sie an, welche S390-Prozessorvariante das Ziel ist: g5 (oder arch3), g6, z900 (oder arch5), z990 (oder arch6), z9-109, z9-ec (oder arch7), z10 (oder arch8), z196 (oder arch9), zEC12 (oder arch10), z13 (oder arch11), z14 (oder arch12), z15 (oder arch13), z16 (oder arch14) oder z17 (oder arch15).
-mregnames
-mno-regnames
Erlauben oder verbieten Sie symbolische Namen für Register.
-mwarn-areg-zero
Warnen Sie, wenn der Operand für ein Basis- oder Indexregister angegeben wurde, aber den Wert Null hat.
-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch
Steuert, ob der Assembler Registername-Typprüfungen durchführt und eine Warnmeldung generiert, wenn es eine Abweichung zwischen dem Registertyp und dem Operandenregistertyp gibt. Standardmäßig (was durch die Verwendung des Arguments `relaxed` wiederhergestellt werden kann) werden entspannte Registername-Typprüfungen durchgeführt, die es ermöglichen, Gleitkommaregister (FPR)-Namen `%f0` bis `%f15` als Argument für Vektorregister (VR)-Operanden anzugeben und Vektorregister (VR)-Namen `%v0` bis `%v15` als Argument für Gleitkommaregister (FPR)-Operanden anzugeben. Dies ist akzeptabel, da die FPRs in die untere Hälfte der VRs eingebettet sind. Durch die Verwendung des Arguments `strict` werden strenge Registername-Typprüfungen durchgeführt. Das Argument `no`, das äquivalent zu `-mno-warn-regtype-mismatch` ist, deaktiviert alle Registername-Typprüfungen.
Die folgenden Optionen stehen zur Verfügung, wenn `as` für einen TMS320C6000-Prozessor konfiguriert ist.
-march=arch
Aktiviert (nur) Befehle aus der Architektur „arch“. Standardmäßig sind alle Befehle zulässig.
Die folgenden Werte für „arch“ werden akzeptiert: „c62x“, „c64x“, „c64x+“, „c67x“, „c67x+“, „c674x“.
-mdsbt
-mno-dsbt
Die Option -mdsbt bewirkt, dass der Assembler das Attribut „Tag_ABI_DSBT“ mit dem Wert 1 generiert, was angibt, dass der Code DSBT-Adressierung verwendet. Die Option -mno-dsbt, die Standardeinstellung, bewirkt, dass das Tag den Wert 0 hat, was angibt, dass der Code keine DSBT-Adressierung verwendet. Der Linker gibt eine Warnung aus, wenn Objekte unterschiedlichen Typs (DSBT und nicht-DSBT) miteinander verknüpft werden.
-mpid=no
-mpid=near
-mpid=far
Die Option -mpid= bewirkt, dass der Assembler das Attribut „Tag_ABI_PID“ mit einem Wert generiert, der die Form der Datenadressierung angibt, die vom Code verwendet wird. -mpid=no, die Standardeinstellung, gibt positionsabhängige Datenadressierung an, -mpid=near gibt positionsunabhängige Adressierung mit GOT-Zugriffen unter Verwendung von Near-DP-Adressierung an, und -mpid=far gibt positionsunabhängige Adressierung mit GOT-Zugriffen unter Verwendung von Far-DP-Adressierung an. Der Linker gibt eine Warnung aus, wenn Objekte mit unterschiedlichen Einstellungen dieser Option miteinander verknüpft werden.
-mpic
-mno-pic
Die Option -mpic bewirkt, dass der Assembler das Attribut „Tag_ABI_PIC“ mit dem Wert 1 generiert, was angibt, dass der Code positionsunabhängige Codeadressierung verwendet. Die Option -mno-pic, die Standardeinstellung, bewirkt, dass das Tag den Wert 0 hat, was positionsabhängige Codeadressierung angibt. Der Linker gibt eine Warnung aus, wenn Objekte unterschiedlichen Typs (positionsabhängig und positionsunabhängig) miteinander verknüpft werden.
-mbig-endian
-mlittle-endian
Generiert Code für die angegebene Endianness. Standardmäßig wird Little-Endian verwendet.
Die folgenden Optionen sind verfügbar, wenn „as“ für einen TILE-Gx-Prozessor konfiguriert ist.
-m32 | -m64
Wählt die Wortgröße entweder 32 Bit oder 64 Bit aus.
-EB | -EL
Wählt die Endianness entweder Big-Endian (-EB) oder Little-Endian (-EL) aus.
Die folgende Option ist verfügbar, wenn „as“ für einen Visium-Prozessor konfiguriert ist.
-mtune=arch
Diese Option gibt die Zielarchitektur an. Wenn versucht wird, eine Anweisung zu assemblieren, die auf der Zielarchitektur nicht ausgeführt werden kann, gibt der Assembler eine Fehlermeldung aus.
Die folgenden Namen werden erkannt: „mcm24“, „mcm“, „gr5“, „gr6“.
Die folgenden Optionen sind verfügbar, wenn „as“ für einen Xtensa-Prozessor konfiguriert ist.
--text-section-literals | --no-text-section-literals
Steuert die Behandlung von Literal-Pools. Standardmäßig ist --no-text-section-literals eingestellt, wodurch Literale in separate Abschnitte in der Ausgabedatei platziert werden. Dadurch kann der Literal-Pool in einem Daten-RAM/ROM platziert werden. Mit --text-section-literals werden die Literale in den Textabschnitt eingefügt, um sie so nah wie möglich an ihren Referenzen zu halten. Dies kann für große Assemblerdateien erforderlich sein, bei denen die Literale andernfalls außerhalb der Reichweite der „L32R“-Anweisungen im Textabschnitt liegen würden. Literale werden in Pools gruppiert, die auf „.literal_position“-Direktiven oder vor „ENTRY“-Anweisungen folgen. Diese Optionen wirken sich nur auf Literale aus, auf die über PC-relative „L32R“-Anweisungen verwiesen wird. Literale für absolute Modus-„L32R“-Anweisungen werden separat behandelt.
--auto-litpools | --no-auto-litpools
Steuert die Behandlung von Literal-Pools. Standardmäßig ist --no-auto-litpools aktiviert, was bedeutet, dass Literale in der Abwesenheit von --text-section-literals in separaten Abschnitten der Ausgabedatei platziert werden. Dies ermöglicht, dass der Literal-Pool in einem Daten-RAM/ROM platziert wird. Mit --auto-litpools werden die Literale in den Textabschnitt eingefügt, um sie so nah wie möglich an ihren Referenzen zu halten; explizite Direktiven ".literal_position" sind nicht erforderlich. Dies kann für sehr große Funktionen erforderlich sein, bei denen ein einzelner Literal-Pool am Anfang der Funktion möglicherweise nicht durch "L32R"-Instruktionen am Ende erreichbar ist. Diese Optionen beeinflussen nur Literale, auf die über PC-relative "L32R"-Instruktionen referenziert wird; Literale für absolute "L32R"-Instruktionen werden separat behandelt. Wenn sie zusammen mit --text-section-literals verwendet werden, hat --auto-litpools Vorrang.
--absolute-literals | --no-absolute-literals
Gibt an, ob "L32R"-Instruktionen absolute oder PC-relative Adressierung verwenden. Wenn der Prozessor die Option für absolute Adressierung enthält, ist die Standardeinstellung die Verwendung von absoluten "L32R"-Relokationen. Andernfalls können nur PC-relative "L32R"-Relokationen verwendet werden.
--target-align | --no-target-align
Aktiviert oder deaktiviert die automatische Ausrichtung, um Sprungstrafen zu reduzieren, was jedoch zu einem erhöhten Codevolumen führen kann. Diese Optimierung ist standardmäßig aktiviert. Beachten Sie, dass der Assembler Anweisungen wie "LOOP", die feste Ausrichtungsanforderungen haben, immer ausrichtet.
--longcalls | --no-longcalls
Aktiviert oder deaktiviert die Transformation von Aufrufanweisungen, um Aufrufe über einen größeren Adressbereich hinweg zu ermöglichen. Diese Option sollte verwendet werden, wenn die Aufruferziele potenziell außerhalb des Bereichs liegen können. Dies kann sowohl die Codegröße als auch die Leistung beeinträchtigen, aber der Linker kann in der Regel den unnötigen Overhead optimieren, wenn sich ein Aufruf innerhalb des Bereichs befindet. Standardmäßig ist --no-longcalls aktiviert.
--transform | --no-transform
Aktiviert oder deaktiviert alle Assembler-Transformationen von Xtensa-Instruktionen, einschließlich sowohl Relaxation als auch Optimierung. Standardmäßig ist --transform aktiviert; --no-transform sollte nur in den seltenen Fällen verwendet werden, in denen die Anweisungen genau so sein müssen, wie sie in der Assembler-Quelle angegeben sind. Die Verwendung von --no-transform führt dazu, dass Anweisungen mit Operanden außerhalb des Bereichs zu Fehlern führen.
--rename-section oldname=newname
Benennt den Abschnitt "oldname" in "newname" um. Diese Option kann mehrmals verwendet werden, um mehrere Abschnitte umzubenennen.
--trampolines | --no-trampolines
Aktiviert oder deaktiviert die Transformation von Sprunganweisungen, um Sprünge über einen größeren Adressbereich hinweg zu ermöglichen. Diese Option sollte verwendet werden, wenn die Sprungziele potenziell außerhalb des Bereichs liegen können. Wenn keine solchen Sprünge vorhanden sind, hat diese Option keinen Einfluss auf die Codegröße oder Leistung. Standardmäßig ist --trampolines aktiviert.
--abi-windowed | --abi-call0
Wählen Sie das ABI-Tag aus, das in den Abschnitt „.xtensa.info“ geschrieben wird. Das ABI-Tag gibt das ABI des Assemblierungscodes an. Der Linker gibt eine Warnung aus, wenn versucht wird, Objektdateien mit inkonsistenten ABI-Tags zu verknüpfen. Das Standard-ABI wird durch die Xtensa-Kernkonfiguration ausgewählt.
Die folgenden Optionen stehen zur Verfügung, wenn as für einen Z80-Prozessor konfiguriert ist.
@chapter Z80-spezifische Funktionen
Befehlszeilenoptionen
-march=CPU[-EXT...][+EXT...]
Diese Option gibt den Zielprozessor an. Der Assembler gibt eine Fehlermeldung aus, wenn versucht wird, eine Anweisung zu assemblieren, die auf dem Zielprozessor nicht ausgeführt werden kann. Die folgenden Prozessornamen werden erkannt: „z80“, „z180“, „ez80“, „gbz80“, „z80n“, „r800“.
Zusätzlich zum Basissatz von Anweisungen kann der Assembler so konfiguriert werden, dass er einige Erweiterungs-Mnemonics akzeptiert. Zum Beispiel erweitert -march=z180+sli+infc z180 um die SLI-Anweisungen und IN F,(C). Die folgenden Erweiterungen werden derzeit unterstützt: „full“ (alle bekannten Anweisungen), „adl“ (ADL-CPU-Modus standardmäßig, nur eZ80), „sli“ (Anweisung, die als SLI, SLL oder SL1 bekannt ist), „xyhl“ (Anweisungen mit Hälften der Indexregister: IXL, IXH, IYL, IYH), „xdcb“ (Anweisungen wie RotOp (II+d),R und BitOp n,(II+d),R), „infc“ (Anweisung IN F,(C) oder IN (C)), „outc0“ (Anweisung OUT (C),0). Beachten Sie, dass die Erweiterungs-Mnemonics, die mit „-“ beginnen, anstelle einer Erweiterung des Basissatzes von Anweisungen die jeweilige Funktionalität entfernen: -march=z80-full+xyhl entfernt zuerst alle Standarderweiterungen und fügt dann nur die Unterstützung für Indexregisterhälften hinzu.
Wenn diese Option nicht angegeben ist, wird -march=z80+xyhl+infc angenommen.
-local-prefix=Präfix
Markieren Sie alle mit dem angegebenen Präfix versehenen Labels als lokal. Ein solches Label kann jedoch explizit im Code als global gekennzeichnet werden. Diese Option ändert nicht das Standardpräfix für lokale Labels „.L“, sondern fügt nur ein neues hinzu.
-colonless
Akzeptieren Sie Label ohne Doppelpunkt. Alle Symbole am Zeilenanfang werden als Label behandelt.
-sdcc
Akzeptieren Sie von SDCC generierten Assembler-Code.
-fp-s=FORMAT
Format für Gleitkommazahlen mit einfacher Genauigkeit. Standard: ieee754 (32 Bit).
-fp-d=FORMAT
Format für Gleitkommazahlen mit doppelter Genauigkeit. Standard: ieee754 (64 Bit).
SIEHE AUCH
gcc(1), ld(1) und die Info-Einträge für binutils und ld.
URHEBERRECHT
Copyright (c) 1991-2025 Free Software Foundation, Inc.
Es wird die Erlaubnis erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.3 oder einer späteren Version, die von der Free Software Foundation veröffentlicht wird, zu kopieren, zu verteilen und/oder zu modifizieren; ohne unveränderliche Abschnitte, ohne Texte auf dem Umschlag und ohne Texte auf der Rückseite. Eine Kopie der Lizenz ist in dem Abschnitt mit dem Titel „GNU Free Documentation License“ enthalten.