as AS - přenosný GNU assembler.
as [-a[cdghlns][=file]] [--alternate] [--compress-debug-sections] [--nocompress-debug-sections] [-D] [--dump-config] [--debug-prefix-map old=new] [--defsym sym=val] [--elf-stt-common=[no|yes]] [--emulation=name] [-f] [-g] [--gstabs] [--gstabs+] [--gdwarf-<N>] [--gdwarf-sections] [--gdwarf-cie-version=VERSION] [--generate-missing-build-notes=[no|yes]] [--gsframe] [--hash-size=N] [--help] [--target-help] [-I dir] [-J] [-K] [--keep-locals] [-L] [--listing-lhs-width=NUM] [--listing-lhs-width2=NUM] [--listing-rhs-width=NUM] [--listing-cont-lines=NUM] [--multibyte-handling=[allow|warn|warn-sym-only]] [--no-pad-sections] [-o objfile] [-R] [--sectname-subst] [--size-check=[error|warning]] [--statistics] [-v] [-version] [--version] [-W] [--warn] [--fatal-warnings] [-w] [-x] [-Z] [@FILE] [target-options] [--|files ...]
Cílit na možnosti AArch64:
[-EB|-EL] [-mabi=ABI]
Možnosti cílení alfa:
[-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]
Možnosti cílového ARC:
[-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]
Cílové možnosti 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]
Možnosti cílení Blackfin:
[-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]
Možnosti cílového BPF:
[-EL] [-EB]
Cílové možnosti CRIS:
[--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
Cílové možnosti 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]
Cílové možnosti D10V:
[-O]
Cílové možnosti D30V:
[-O|-n|-N]
Možnosti cílení EPIPHANY:
[-mepiphany|-mepiphany16]
Cílové možnosti H8/300:
[-h-tick-hex]
Cílové možnosti i386:
[--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]
Možnosti cíle 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]
Možnosti cílení IP2K:
[-mip2022|-mip2022ext]
Cílové možnosti M32C:
[-m32c|-m16c] [-relax] [-h-tick-hex]
Možnosti cílení M32R:
[--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]
Možnosti cílení M680X0:
[-l] [-m68000|-m68010|-m68020|...]
Možnosti cílení 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]
Možnosti cílení MCORE:
[-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]
Možnosti cílení metadat:
[-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu]
Cílové možnosti MICROBLAZE:
Možnosti cílového MIPS:
[-nocpp] [-EL] [-EB] [-O[optimization level]] [-g[debug level]] [-G num] [-KPIC] [-call_shared] [-non_shared] [-xgot [-mvxworks-pic] [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32] [-mfp64] [-mgp64] [-mfpxx] [-modd-spreg] [-mno-odd-spreg] [-march=CPU] [-mtune=CPU] [-mips1] [-mips2] [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2] [-mips32r3] [-mips32r5] [-mips32r6] [-mips64] [-mips64r2] [-mips64r3] [-mips64r5] [-mips64r6] [-construct-floats] [-no-construct-floats] [-mignore-branch-isa] [-mno-ignore-branch-isa] [-mnan=encoding] [-trap] [-no-break] [-break] [-no-trap] [-mips16] [-no-mips16] [-mmips16e2] [-mno-mips16e2] [-mmicromips] [-mno-micromips] [-msmartmips] [-mno-smartmips] [-mips3d] [-no-mips3d] [-mdmx] [-no-mdmx] [-mdsp] [-mno-dsp] [-mdspr2] [-mno-dspr2] [-mdspr3] [-mno-dspr3] [-mmsa] [-mno-msa] [-mxpa] [-mno-xpa] [-mmt] [-mno-mt] [-mmcu] [-mno-mcu] [-mcrc] [-mno-crc] [-mginv] [-mno-ginv] [-mloongson-mmi] [-mno-loongson-mmi] [-mloongson-cam] [-mno-loongson-cam] [-mloongson-ext] [-mno-loongson-ext] [-mloongson-ext2] [-mno-loongson-ext2] [-minsn32] [-mno-insn32] [-mfix7000] [-mno-fix7000] [-mfix-rm7000] [-mno-fix-rm7000] [-mfix-vr4120] [-mno-fix-vr4120] [-mfix-vr4130] [-mno-fix-vr4130] [-mfix-r5900] [-mno-fix-r5900] [-mdebug] [-no-mdebug] [-mpdr] [-mno-pdr]
Cílové možnosti MMIX:
[--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]
Možnosti cílení Nios II:
[-relax-all] [-relax-section] [-no-relax] [-EB] [-EL]
Cílové možnosti 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]
Cílové možnosti PDP11:
[-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]
Možnosti cílení picoJava:
[-mb|-me]
Možnosti cílového 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] [-msolaris|-mno-solaris] [-nops=count]
Cílové možnosti PRU:
[-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
Cílové možnosti RISC-V:
[-fpic|-fPIC|-fno-pic] [-march=ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]
Možnosti cílení RL78:
[-mg10] [-m32bit-doubles|-m64bit-doubles]
Možnosti cíleného příjmu:
[-mlittle-endian|-mbig-endian] [-m32bit-doubles|-m64bit-doubles] [-muse-conventional-section-names] [-msmall-data-limit] [-mpid] [-mrelax] [-mint-register=number] [-mgcc-abi|-mrx-abi]
Možnosti cílení s390:
[-m31|-m64] [-mesa|-mzarch] [-march=CPU] [-mregnames|-mno-regnames] [-mwarn-areg-zero]
Možnosti cílového SKORE:
[-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]
Možnosti cílení 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]
Cílit možnosti TIC54X:
[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] [-merrors-to-file <filename>|-me <filename>]
Možnosti cílení TIC6X:
[-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]
Možnosti cílení TILE-Gx:
[-m32|-m64][-EB][-EL]
Možnosti cílení Visium:
[-mtune=arch]
Možnosti cílení 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]
Možnosti cílení Z80:
[-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]
GNU as je skutečně rodina assemblerů. Pokud používáte (nebo jste používali) assembler GNU na jedné architektuře, měli byste najít poměrně podobné prostředí, když jej používáte na jiné architektuře. Každá verze má mnoho společného s ostatními, včetně formátů objektových souborů, většiny direktiv assembleru (často nazývaných pseudo-ops) a syntaxe assembleru.
as je primárně určen k sestavení výstupu kompilátoru GNU C gcc pro použití linkerem ld. Přesto jsme se snažili jako správně sestavit vše, co by sestavili ostatní montážníci na stejném stroji. Jakékoli výjimky jsou výslovně zdokumentovány. To neznamená, že jako vždy používá stejnou syntaxi jako jiný assembler pro stejnou architekturu; například známe několik nekompatibilních verzí syntaxe assembleru 680x0.
Při každém spuštění jako se sestaví přesně jeden zdrojový program. Zdrojový program se skládá z jednoho nebo více souborů. (Standardní vstup je také soubor.)
Zadáte jako příkazový řádek, který nemá žádný nebo více názvů vstupních souborů. Vstupní soubory se čtou (od levého názvu souboru doprava). Argument příkazového řádku (na libovolné pozici), který nemá žádný zvláštní význam, se považuje za název vstupního souboru.
Pokud nezadáte as žádné názvy souborů, pokusí se přečíst jeden vstupní soubor ze standardního vstupu as, což je normálně váš terminál. Možná budete muset napsat ctl-D, abyste sdělili, že protože již není k sestavení žádný program.
Pokud potřebujete explicitně pojmenovat standardní vstupní soubor v příkazovém řádku, použijte --.
Pokud je zdroj prázdný, as vytvoří malý prázdný objektový soubor.
as může zapisovat varování a chybové zprávy do standardního chybového souboru (obvykle váš terminál). To by se nemělo stávat, když kompilátor běží jako automaticky. Varování hlásí předpoklad učiněný tak, aby as mohl pokračovat v sestavování chybného programu; chyby hlásí vážný problém, který zastaví montáž.
Pokud vyvoláváte as prostřednictvím kompilátoru GNU C, můžete použít volbu -Wa k předání argumentů do assembleru. Argumenty assembleru musí být od sebe (a -Wa) odděleny čárkami. Například:
gcc -c -g -O -Wa,-alh,-L file.c
Tím se assembleru předají dvě možnosti: -alh (vyšle výpis na standardní výstup s vysokou úrovní a zdrojem sestavení) a -L (zachovat místní symboly v tabulce symbolů ).
Obvykle tento mechanismus -Wa nemusíte používat, protože mnoho možností příkazového řádku kompilátoru je automaticky předáno assembleru kompilátorem. (Můžete zavolat ovladač kompilátoru GNU s volbou -v, abyste přesně viděli, jaké možnosti předává každému průchodu kompilace, včetně assembleru.)
Přečtěte si možnosti příkazového řádku ze souboru. Načtené volby se vloží místo původní volby @soubor. Pokud soubor neexistuje nebo jej nelze číst, bude s volbou zacházeno doslovně a nebude odstraněna. Možnosti v souboru jsou odděleny mezerou. Znak mezery může být zahrnut do možnosti tak, že celou možnost obklopíte jednoduchými nebo dvojitými uvozovkami. Jakýkoli znak (včetně zpětného lomítka) může být zahrnut tak, že před znak, který má být zahrnut zpětným lomítkem, lze zahrnout předponu. Samotný soubor může obsahovat další možnosti @soubor; všechny takové možnosti budou zpracovány rekurzivně.
Zapněte záznamy mnoha různými způsoby:
vynechat nepravdivé kondicionály
vynechat direktivy pro ladění
obsahovat obecné informace, jako je verze a předané možnosti
obsahovat zdroj na vysoké úrovni
včetně montáže
zahrnout makro rozšíření
vynechat zpracování formulářů
zahrnout symboly
nastavte název souboru výpisu
Tyto možnosti můžete kombinovat; například pro výpis sestav bez zpracování formulářů použijte -aln. Možnost =soubor, pokud je použita, musí být poslední. Samotný -a je výchozí -ahls.
Začněte v alternativním režimu makra.
Komprimujte sekce ladění DWARF pomocí zlib pomocí SHF_COMPRESSED z ELF ABI. Výsledný objektový soubor nemusí být kompatibilní se staršími linkery a obslužnými programy objektového souboru. Všimněte si, že pokud by komprese udělala danou sekci větší, pak není komprimována.
Tyto možnosti řídí, jak jsou komprimovány sekce ladění DWARF. --compress-debug-sections=none je ekvivalentní --nocompress-debug-sections. --compress-debug-sections=zlib a --compress-debug-sections=zlib-gabi jsou ekvivalentní --compress-debug-sections silný>. --compress-debug-sections=zlib-gnu komprimuje sekce ladění DWARF pomocí zastaralého formátu zlib-gnu. Sekce ladění jsou přejmenovány tak, aby začínaly .zdebug. --compress-debug-sections=zstd komprimuje sekce ladění DWARF pomocí zstd. Poznámka - pokud by komprese skutečně udělala sekci větší, pak se nekomprimuje ani nepřejmenuje.
Nekomprimujte sekce ladění DWARF. Toto je obvykle výchozí nastavení pro všechny cíle kromě x86/x86_64, ale k přepsání lze použít možnost konfigurace času.
Pokud je podporováno, povolte odhalování v koncových serverech specifických pro cíl. Jinak ignorováno. I když je tato možnost ignorována, je přijata kvůli kompatibilitě skriptu s voláním jiných assemblerů.
Při sestavování souborů v adresáři staré zaznamenejte informace o ladění, které je popisují jako nové.
Před sestavením vstupního souboru definujte symbol sym jako hodnotu. hodnota musí být celočíselná konstanta. Stejně jako v C, počáteční 0x označuje hexadecimální hodnotu a počáteční 0 označuje osmičkovou hodnotu. Hodnotu symbolu lze uvnitř zdrojového souboru přepsat pomocí pseudo-op .set.
Zobrazí, jak je nakonfigurován assembler, a poté se ukončí.
Tyto možnosti řídí, zda má assembler ELF generovat společné symboly s typem STT_COMMON. Výchozí nastavení lze ovládat pomocí možnosti konfigurace --enable-elf-stt-common.
Pokud je assembler nakonfigurován pro podporu více různých cílových konfigurací, lze tuto volbu použít k výběru požadovaného formuláře.
rychle --- přeskočit mezery a předběžné zpracování komentářů (předpokládejme, že zdrojem je výstup kompilátoru).
Generujte informace o ladění pro každý zdrojový řádek assembleru pomocí libovolného formátu ladění, který cíl preferuje. To aktuálně znamená buď STABS, ECOFF nebo DWARF2. Když je formát ladění DWARF, pak se sekce .debug_info a .debug_line vygenerují pouze tehdy, když soubor sestavy sám žádnou nevygeneruje.
Generovat stabs ladicí informace pro každý řádek assembleru. To může pomoci při ladění kódu assembleru, pokud to ladicí program zvládne.
Generujte stabs ladicí informace pro každý řádek assembleru, s GNU rozšířeními, která pravděpodobně zvládne pouze gdb, a která by mohla způsobit pád jiných debuggerů nebo odmítnout číst váš program. To může pomoci při ladění kódu assembleru. V současné době je jediným rozšířením GNU umístění aktuálního pracovního adresáře v době sestavování.
Generujte ladicí informace DWARF2 pro každý řádek assembleru. To může pomoci při ladění kódu assembleru, pokud to ladicí program zvládne. Poznámka --- tuto možnost podporují pouze některé cíle, ne všechny.
Tato možnost je stejná jako možnost --gdwarf-2, kromě toho, že umožňuje generování dalších ladicích informací podle verze 3 specifikace DWARF. Poznámka – povolení této možnosti nezaručuje generování jakýchkoli dalších informací, výběr je na základě cíle.
Tato možnost je stejná jako možnost --gdwarf-2, kromě toho, že umožňuje generování dalších ladicích informací podle verze 4 specifikace DWARF. Poznámka – povolení této možnosti nezaručuje generování jakýchkoli dalších informací, výběr je na základě cíle.
Tato možnost je stejná jako možnost --gdwarf-2, kromě toho, že umožňuje generování dalších ladicích informací podle verze 5 specifikace DWARF. Poznámka – povolení této možnosti nezaručuje generování jakýchkoli dalších informací, výběr je na základě cíle.
Namísto vytvoření sekce .debug_line vytvořte řadu sekcí .debug_line.foo, kde foo je název odpovídající sekce kódu. Například sekce kódu nazvaná .text.func bude mít informaci o čísle trpasličího řádku umístěnou do sekce nazvané .debug_line.text.func. Pokud se sekce kódu jmenuje pouze .text, pak se sekce ladícího řádku bude stále nazývat pouze .debug_line bez jakékoli přípony.
Kontrolujte, která verze DWARF Common Information Entries (CIE) se vytváří. Pokud tento příznak není specifikován, výchozí je verze 1, ačkoli některé cíle mohou toto výchozí nastavení změnit. Další možné hodnoty pro verze jsou 3 nebo 4.
Tyto volby řídí, zda má assembler ELF generovat poznámky k atributům GNU Build, pokud ve vstupních zdrojích žádné nejsou. Výchozí nastavení lze ovládat pomocí možnosti konfigurace --enable-generate-build-notes.
Vytvořte sekci .sframe z direktiv CFI.
Ignorováno. Podporováno pro kompatibilitu příkazového řádku s jinými assemblery.
Vytiskněte souhrn možností příkazového řádku a ukončete.
Vytiskněte souhrn všech možností specifických pro cíl a ukončete.
Přidejte adresář dir do seznamu pro vyhledávání direktiv .include.
Nevarujte před podepsaným přetečením.
Vydávat varování, když se rozdílové tabulky změnily kvůli dlouhým posunům.
Udržujte (v tabulce symbolů) místní symboly. Tyto symboly začínají předponami lokálních štítků specifických pro daný systém, obvykle .L pro systémy ELF nebo L pro tradiční systémy a.out.
Nastavte maximální šířku, slovy, sloupce výstupních dat pro výpis assembleru na číslo.
Nastavte maximální šířku, slovy, sloupce výstupních dat pro pokračování řádků ve výpisu assembleru na číslo.
Nastavte maximální šířku vstupního zdrojového řádku, jak je zobrazena ve výpisu, na počet bajtů.
Nastavte maximální počet řádků vytištěných ve výpisu na jeden řádek vstupu na číslo + 1.
Řídí, jak assembler zpracovává vícebajtové znaky na vstupu. Výchozí (které lze obnovit pomocí argumentu allow) je povolit takové znaky bez stížností. Použití argumentu warn způsobí, že assembler vygeneruje varovnou zprávu, kdykoli narazí na jakýkoli vícebajtový znak. Použití argumentu warn-sym-only způsobí, že se varování vygeneruje pouze v případě, že je symbol definován s názvem, který obsahuje vícebajtové znaky. (Odkazy na nedefinované symboly nevygenerují varování).
Zastavte assembler pro odsazení konců výstupních sekcí podle zarovnání této sekce. Výchozím nastavením je vyplnění sekcí, ale to může plýtvat místem, které může být potřeba u cílů, které mají omezená paměť.
Pojmenujte výstup objektového souboru z jako objfile.
Přeložte datovou část do textové části.
Ignorováno. Podporováno pro kompatibilitu s nástroji, které používají stejnou možnost pro assembler i linker.
Čest substituční sekvence v názvech sekcí.
Vydejte chybu nebo varování pro neplatnou direktivu ELF .size.
Vytiskněte maximální prostor (v bajtech) a celkový čas (v sekundách) využitý sestavou.
Odstraňte místní absolutní symboly z tabulky odchozích symbolů.
Vytiskněte verzi jako.
Vytiskněte verzi jako a ukončete.
Potlačit varovné zprávy.
Považujte varování za chyby.
Nepotlačujte varovné zprávy ani je nepovažujte za chyby.
Ignorováno.
Ignorováno.
Vygenerujte soubor objektu i po chybách.
Standardní vstup nebo zdrojové soubory k sestavení.
Následující možnosti jsou dostupné, když je nakonfigurován pro 64bitový režim architektury ARM (AArch64).
Tato možnost určuje, že výstup generovaný assemblerem by měl být označen jako kódovaný pro procesor big-endian.
Tato možnost určuje, že výstup generovaný assemblerem by měl být označen jako kódovaný pro procesor little-endian.
Určete, které ABI používá zdrojový kód. Rozpoznané argumenty jsou: ilp32 a lp64, které rozhodují o generovaném objektovém souboru ve formátu ELF32 a ELF64. Výchozí hodnota je lp64.
Tato volba určuje cílový procesor. Assembler vydá chybovou zprávu, pokud je učiněn pokus sestavit instrukci, která se na cílovém procesoru nevykoná. Jsou rozpoznány následující názvy procesorů: 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-a710 , ares, exynos-m1, falkor, neoverse-n1, neoverse- n2, neoverse-e1, neoverse-v1, qdf24xx, saphira, thunderx , vulcan, xgene1 xgene2, cortex-r82, cortex-x1 a cortex-x2.
Speciální název all může být použit k tomu, aby assembler mohl přijímat instrukce platné pro jakýkoli podporovaný procesor, včetně všech volitelných rozšíření. Kromě základní instrukční sady lze assembleru říci, aby přijal nebo omezil různé rozšiřující mnemotechnické pomůcky, které rozšiřují procesor. Pokud některé implementace konkrétního procesoru mohou mít rozšíření, pak jsou tato rozšíření automaticky povolena. V důsledku toho obvykle nebudete muset zadávat žádná další rozšíření.
Tato možnost určuje cílovou architekturu. Assembler vydá chybovou zprávu, pokud je učiněn pokus sestavit instrukci, která se na cílové architektuře neprovede. Jsou rozpoznány následující názvy architektur: armv8-a, armv8.1-a, armv8.2-a, armv8.3 -a, armv8.4-a armv8.5-a, armv8.6-a, armv8. 7-a, armv8.8-a, armv8-r, armv9-a, armv9.1- a, armv9.2-a a armv9.3-a. Pokud jsou zadány -mcpu i -march, assembler použije nastavení pro -mcpu. Pokud není zadáno ani jedno, assembler použije jako výchozí -mcpu=all. Volbu architektury lze rozšířit stejnými možnostmi rozšíření instrukční sady jako možnost -mcpu. Na rozdíl od -mcpu nejsou rozšíření ve výchozím nastavení vždy povolena,
Tato možnost umožňuje podrobné chybové zprávy pro plyn AArch64. Tato možnost je ve výchozím nastavení povolena.
Tato možnost zakáže podrobné chybové zprávy v plynu AArch64.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor Alpha.
Tato volba určuje cílový procesor. Pokud dojde k pokusu sestavit instrukci, která se na cílovém procesoru nespustí, může assembler buď instrukci rozšířit jako makro, nebo vydat chybovou zprávu. Tato možnost je ekvivalentní direktivě .arch. Jsou rozpoznány následující názvy procesorů: 21064, 21064a, 21066, 21068, 21164, 21164a, 21164pc, 21264, 21264a, 21264b, ev4, ev5, lca45, ev5, ev56, pca56 , ev6, ev67, ev68. Speciální název all může být použit k tomu, aby assembler mohl přijímat instrukce platné pro jakýkoli Alpha procesor. Abychom podpořili stávající praxi v OSF/1 s ohledem na .arch a stávající praxi v rámci MILO (zavaděč Linux ARC), očíslované názvy procesorů (např. 21064) povolit instrukce PALcode specifické pro procesor, zatímco elektro-vlasické názvy (např. ev4) nikoli.
Povolí nebo zakáže generování zapouzdření .mdebug pro direktivy stabs a popisovače procedur. Výchozí nastavení je automaticky povolit .mdebug, když je vidět první direktiva stabs.
Tato možnost vynutí uložení všech přemístění do souboru objektu namísto úspory místa a vyřešení některých přemístění v době sestavování. Všimněte si, že tato volba nerozšíří všechny aritmetiky symbolů do souboru objektu, protože ne všechny aritmetiky symbolů mohou být reprezentovány. Tato možnost však může být stále užitečná ve specifických aplikacích.
Povolí nebo zakáže optimalizaci volání procedur, a to jak při sestavení, tak v době propojení. Tyto možnosti jsou dostupné pouze pro cíle VMS a -replace je výchozí. Viz část 1.4.1 OpenVMS Linker Utility Manual.
Tato možnost se používá, když kompilátor generuje informace o ladění. Když gcc používá ke generování ladicích informací pro ECOFF mips-tfile, musí být do souboru objektu předány místní štítky. Jinak tato možnost nemá žádný účinek.
Místní společný symbol větší než velikost je umístěn v .bss, zatímco menší symboly jsou umístěny v .sbss.
Tyto možnosti jsou kvůli zpětné kompatibilitě ignorovány.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor ARC.
Tato možnost vybírá variantu základního procesoru.
Vyberte výstup big-endian (-EB) nebo little-endian (-EL).
Povolit pokyny pro rozšíření hustoty kódu.
Následující možnosti jsou dostupné, když je nakonfigurován pro rodinu procesorů ARM.
Určete, která varianta procesoru ARM je cílová.
Určete, kterou variantu architektury ARM používá cíl.
Vyberte, která architektura s pohyblivou řádovou čárkou je cíl.
Vyberte, které ABI s plovoucí řádovou čárkou se používá.
Povolit dekódování instrukcí pouze pro palec.
Vyberte, která konvence volání procedur se používá.
Vyberte výstup big-endian (-EB) nebo little-endian (-EL).
Uveďte, že kód byl vygenerován s ohledem na spolupráci mezi kódem Thumb a ARM.
Zapne režim kompatibility syntaxe sestavení CodeComposer Studio.
Uveďte, že byl vygenerován PIC kód.
Následující možnosti jsou dostupné, když je nakonfigurován pro rodinu procesorů Blackfin.
Tato volba určuje cílový procesor. Volitelná sirevision se v assembleru nepoužívá. Je zde taková, že GCC může snadno předat svou volbu -mcpu=. Assembler vydá chybovou zprávu, pokud je učiněn pokus sestavit instrukci, která se na cílovém procesoru nevykoná. Jsou rozpoznány následující názvy procesorů: bf504, bf506, bf512, bf514, bf516, bf518, bf522, bf523, bf524, bf525, bf526, bf527, bf531, bf532, bf533, bf534 , bf535 (zatím neimplementováno), bf536, bf537, bf538, bf539 , bf542, bf542m, bf544, bf544m, bf547, bf547m , bf548, bf548m, bf549, bf549m, bf561, a bf592.
Sestavte pro FDPIC ABI.
Zakázat -mfdpic.
Následující možnosti jsou dostupné, když je nakonfigurován pro rodinu procesorů BPF s jádrem Linuxu.
@kapitola Funkce závislé na BPF
Tato volba určuje, že assembler by měl vydávat big-endian eBPF.
Tato volba určuje, že assembler by měl vydávat little-endian eBPF.
Všimněte si, že pokud není v příkazovém řádku zadána žádná volba endianness, použije se hostitelská endianness. Dokumentaci možností specifických pro CRIS naleznete na informačních stránkách.
Následující možnosti jsou dostupné, když je nakonfigurován pro rodinu procesorů C-SKY.
Sestavte pro architekturu archname. Možnost --help uvádí platné hodnoty pro archname.
Sestavení pro architekturu cpuname. Možnost --help uvádí platné hodnoty pro cpuname.
Generovat výstup typu little-endian.
Generujte výstup big-endian.
Vygenerujte kód nezávislý na pozici.
Povolí/zakáže transformaci krátkých instrukcí větve jbf, jbt a jbr na jmpi. Tato možnost je pouze pro procesory V2. Je ignorován na cílech CK801 a CK802, které nepodporují instrukci jmpi, a pro ostatní procesory je standardně povolen.
Předejte přes R_CKCORE_PCREL_IMM26BY2 přemístění pro instrukce bsr do linkeru. Tato možnost je dostupná pouze pro kovové terče C-SKY V2 ELF, kde je ve výchozím nastavení povolena. Nelze jej použít v kódu, který bude dynamicky propojen se sdílenými knihovnami.
Povolí/zakáže transformaci instrukcí jbsr na bsr. Tato možnost je vždy povolena (a -mno-force2bsr je ignorována) pro cíle CK801/CK802. Je také vždy povoleno, když je aktivní -mbranch-stub.
Povolí/zakáže transformaci instrukcí jsri na bsr. Tato možnost je ve výchozím nastavení povolena.
Povolí/zakáže transformaci instrukcí lrw na pár movih/ori.
Povolit/zakázat rozšířené instrukce lrw. Tato možnost je standardně povolena pro procesory řady CK800.
Povolit/zakázat umístění doslovných fondů po každé funkci.
Povolit/zakázat umístění doslovných fondů po nepodmíněných větvích. Tato možnost je ve výchozím nastavení povolena.
Povolit/zakázat instrukce zásobníku přerušení. Tato možnost je standardně povolena na procesorech CK801, CK802 a CK802.
Následující možnosti explicitně umožňují určité volitelné pokyny. Tyto funkce jsou také povoleny implicitně pomocí -mcpu= k určení procesoru, který je podporuje.
Povolit pokyny pro tvrdé plavání.
Povolit víceprocesorové instrukce.
Povolit instrukce koprocesoru.
Povolit instrukce předběžného načtení mezipaměti.
Povolte bezpečnostní pokyny C-SKY.
Povolit pokyny důvěryhodnosti C-SKY.
Povolit instrukce DSP.
Povolit rozšířené instrukce DSP.
Povolit vektorové instrukce DSP.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor Epiphany.
Určuje, že jsou povoleny 32bitové i 16bitové instrukce. Toto je výchozí chování.
Omezuje povolené instrukce pouze na 16bitovou sadu.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor H8/300. @kapitola Závislé funkce H8/300
Verze as Renesas H8/300 má jednu možnost závislou na počítači:
Kromě stylu 0x00 podporuje hexadecimální konstanty stylu H'00.
Nastavuje variantu stroje H8300. Jsou rozpoznány následující názvy počítačů: h8300h, h8300hn, h8300s, h8300sn, h8300sx a h8300sxn.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor i386.
Vyberte velikost slova, buď 32 bitů nebo 64 bitů. --32 implikuje architekturu Intel i386, zatímco --x32 a --64 implikuje architekturu AMD x86-64 s 32bitovou nebo 64-bitovou architekturou bitová velikost slova. Tyto možnosti jsou dostupné pouze s formátem objektového souboru ELF a vyžadují, aby byla zahrnuta nezbytná podpora BFD (na 32bitové platformě musíte přidat --enable-64-bit-bfd, abyste nakonfigurovali povolení 64bitového použití a použijte x86-64 jako cílovou platformu).
Ve výchozím nastavení x86 GAS nahrazuje více instrukcí nop používaných pro zarovnání v sekcích kódu vícebajtovými instrukcemi nop, jako je leal 0(%esi,1),%esi. Tento přepínač zakáže optimalizaci, pokud je jednobajtový nop (0x90) explicitně zadán jako výplňový bajt pro zarovnání.
Na platformách odvozených od SVR4 je znak / považován za znak komentáře, což znamená, že jej nelze použít ve výrazech. Možnost --divide změní / na normální znak. Toto nezakáže / na začátku řádku začínajícího komentářem ani neovlivní použití # pro zahájení komentáře.
Tato volba určuje cílový procesor. Assembler vydá chybovou zprávu, pokud je učiněn pokus sestavit instrukci, která se na cílovém procesoru nevykoná. Jsou rozpoznány následující názvy procesorů: i8086, i186, i286, i386, i486, i586, i686, pentium, pentiumpro, pentiumii, pentiumiii, pentium4, prescott, nocona, core, core2 , corei7, iamcu, k6, k6_2, athlon, opteron , k8, amdfam10, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, btver1, btver2, generic32 a generic64. Kromě základní instrukční sady lze assembleru říci, aby akceptoval různé rozšiřující mnemotechnické pomůcky. Například -march=i686+sse4+vmx rozšiřuje i686 o sse4 a vmx.
Aktuálně jsou podporována následující rozšíření: 8087, 287, 387, 687, cmov, fxsr, mmx, sse, sse2, sse3, sse4a, ssse3, sse4.1, sse4.2, sse4, avx , avx2, adx, rdseed, prfchw, smap, mpx, sha, rdpid, ptwrite, cet, gfni, vaes, vpclmulqdq, prefetchwt1, clflushopt, se1, clwb, movdiri, movdir64b, enqcmd, serialize, tsxldtrk, kl, widekl, hreset, avx512f, avx512cd, avx512er, avx512pf, avx512vl, avx512bw, avx512dq, avx512ifma, avx512vbmi, avx512_4fmaps, avx512_4vnniw, avx512_vpopcntdq, avx512_vbmi2, avx512_vnni, avx512_bitalg, avx512_vp2intersect, tdx, avx512_bf16, avx_vnni , avx512_fp16, prefetchi, avx_ifma, avx_vnni_int8, cmpccxadd, wrmsrns , msrlist, avx_ne_convert, rao_int, amx_int8, amx_bf16, amx_fp16, amx_tile, vmx, vmfunc, smx, xsave, xsaveopt, xsavec, xsaves, aes, pclmul, fsgsbase, rdrnd, f16c, bmi2, fma, movbe, ept, lzcnt, popcnt, hle, rtm, tsx, invpcid, clflush, mwaitx, clzero, wbnoinvd, pconfig, waitpkg, uintr, cldemote, rdpru, mcommit, sev_es, lwp, fma4, xop, cx16 , syscall, rdtscp, 3dnow, 3dnowa, sse4a, sse5 , snp, invlpgb, tlbsync, svme a visací zámek.
Všimněte si, že tyto mnemotechnické pomůcky rozšíření mohou mít předponu no, aby se zrušila příslušná (a všechny závislé) funkce. Když je direktiva .arch použita s -march, bude mít přednost direktiva .arch.
Tato volba určuje procesor, pro který se má optimalizovat. Při použití ve spojení s volbou -march budou generovány pouze instrukce procesoru určeného volbou -march. Platné hodnoty CPU jsou totožné se seznamem procesorů -march=CPU.
Tato volba určuje, že assembler by měl kódovat instrukce SSE s předponou VEX.
Tato volba určuje, že assembler by měl kódovat zarovnaný vektorový pohyb jako nezarovnaný vektorový pohyb.
Tyto možnosti určují, zda má assembler kontrolovat instrukce SSE. -msse-check=none způsobí, že assembler nebude kontrolovat instrukce SSE, což je výchozí nastavení. -msse-check=warning způsobí, že assembler vydá varování pro jakoukoli instrukci SSE. -msse-check=chyba způsobí, že assembler vydá chybu pro jakoukoli instrukci SSE.
Tyto možnosti řídí, jak by měl assembler kódovat skalární instrukce AVX. -mavxscalar=128 zakóduje skalární instrukce AVX s délkou vektoru 128 bitů, což je výchozí nastavení. -mavxscalar=256 zakóduje skalární instrukce AVX s délkou vektoru 256 bitů. VAROVÁNÍ: Toto nepoužívejte pro produkční kód – kvůli chybám CPU nemusí výsledný kód na některých modelech fungovat.
Tyto možnosti řídí, jak by měl assembler kódovat instrukce VEX ignorované VEX.W (WIG). -mvexwig=0 zakóduje instrukce WIG VEX s vex.w=0, což je výchozí hodnota. -mvexwig=1 zakóduje instrukce WIG EVEX s vex.w=1. VAROVÁNÍ: Toto nepoužívejte pro produkční kód – kvůli chybám CPU nemusí výsledný kód pracovat na určitých modelech.
Tyto možnosti řídí, jak by měl assembler kódovat instrukce EVEX ignorované délky (LIG). -mevexlig=128 zakóduje instrukce LIG EVEX s délkou vektoru 128 bitů, což je výchozí nastavení. -mevexlig=256 a -mevexlig=512 zakódují instrukce LIG EVEX s 256bitovou a 512bitovou délkou vektoru. .
Tyto volby řídí, jak by měl assembler kódovat w-ignorované (WIG) instrukce EVEX. -mevexwig=0 zakóduje instrukce WIG EVEX s evex.w=0, což je výchozí hodnota. -mevexwig=1 zakóduje instrukce WIG EVEX s evex.w=1.
Tato volba specifikuje mnemotechnickou pomůcku pro porovnávání instrukcí. Direktivy .att_mnemonic a .intel_mnemonic budou mít přednost.
Tato volba specifikuje syntaxi instrukce při zpracování instrukcí. Direktivy .att_syntax a .intel_syntax budou mít přednost.
Tato možnost určuje, že registry nevyžadují prefix %. Direktivy .att_syntax a .intel_syntax budou mít přednost.
Tato volba nutí assembler přidat BND prefix do všech větví, i když takový prefix nebyl explicitně specifikován ve zdrojovém kódu.
Na cíli ELF assembler normálně optimalizuje ne-PLT relokace proti definovaným neslabým globálním cílům větví s výchozí viditelností. Volba -mshared říká assembleru, aby vygeneroval kód, který může jít do sdílené knihovny, kde mohou být preemptovány všechny neslabé globální cíle větví s výchozí viditelností. Výsledný kód je o něco větší. Tato volba ovlivní pouze práci s instrukcemi větve.
U cíle PE/COFF si tato možnost vynutí použití formátu velkého objektu, který umožňuje více než 32 768 sekcí.
Tyto možnosti řídí, jak by měl assembler kódovat prefix zámku. Tato možnost je určena jako řešení pro procesory, které selžou na předponě zámku. Tuto možnost lze bezpečně použít pouze u jednojádrových počítačů s jedním vláknem -momit-lock-prefix=yes vynechá všechny předpony zámků. -momit-lock-prefix=no zakóduje předponu zámku jako obvykle, což je výchozí nastavení.
Tyto možnosti řídí, jak by měl assembler kódovat lfence, mfence a sfence. -mfence-as-lock-add=yes zakóduje lfence, mfence a sfence jako lock addl $0x0, (%rsp ) v 64bitovém režimu a lock addl $0x0, (%esp) v 32bitovém režimu. -mfence-as-lock-add=no zakóduje lfence, mfence a sfence jako obvykle, což je výchozí nastavení.
Tyto možnosti řídí, zda má assembler generovat relaxační relokace, R_386_GOT32X, v 32bitovém režimu, nebo R_X86_64_GOTPCRELX a R_X86_64_REX_GOTPCRELX, v 64bitovém režimu. -mrelax-relocations=yes vygeneruje relaxační přemístění. -mrelax-relocations=no nevygeneruje relaxační přemístění. Výchozí nastavení lze ovládat pomocí možnosti konfigurace --enable-x86-relax-relocations.
Tato možnost řídí, jak by měl assembler zarovnat větve s předponami segmentů nebo NOP. NUM musí být mocninou 2. Mělo by být 0 nebo ne méně než 16. Větve budou zarovnány v rámci NUM bytové hranice. -malign-branch-boundary=0, což je výchozí nastavení, nezarovnává větve.
Tato možnost určuje typy větví, které se mají zarovnat. TYPE je kombinací jcc, která zarovnává podmíněné skoky, fúze, která zarovnává sloučené podmíněné skoky, jmp, která zarovná nepodmíněné skoky, call, který zarovná volání, ret, který zarovná rets, indirect, který zarovná nepřímé skoky a volání. Výchozí hodnota je -malign-branch=jcc+fused+jmp.
Tato volba určuje maximální počet prefixů v instrukci pro zarovnání větví. NUM by mělo být mezi 0 a 5. Výchozí NUM je 5.
Tato volba zarovná podmíněné skoky, sloučené podmíněné skoky a nepodmíněné skoky v rámci hranice 32 bajtů s až 5 předponami segmentu v instrukci. Je ekvivalentní -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5<. Výchozí nezarovnává větve.
Tyto volby řídí, zda má assembler po načtení instrukcí generovat lfence. -mlfence-after-load=yes vygeneruje lfence. -mlfence-after-load=no nevygeneruje lfence, což je výchozí nastavení.
Tyto volby řídí, zda má assembler generovat lfence před nepřímými instrukcemi blízké větve. -mlfence-before-indirect-branch=all vygeneruje lfence před nepřímou blízkou pobočkou přes registr a před nepřímou blízkou pobočkou přes paměť vydá varování. Implicitně také nastavuje -mlfence-before-ret=shl, když neexistuje žádné explicitní -mlfence-before-ret=. -mlfence-before-indirect-branch=register vygeneruje lfence před nepřímou blízkou pobočkou prostřednictvím registru. -mlfence-before-indirect-branch=memory vydá varování před nepřímou blízkou větví prostřednictvím paměti. -mlfence-before-indirect-branch=none nevygeneruje ochranu ani nevydá varování, což je výchozí nastavení. Všimněte si, že lfence nebude generována před nepřímou blízkostí větve prostřednictvím registru s -mlfence-after-load=yes, protože lfence bude generována po načtení cílového registru větve.
Tyto možnosti řídí, zda má assembler generovat fenence před ret. -mlfence-before-ret=nebo vygeneruje generování nebo instrukce pomocí lfence. -mlfence-before-ret=shl/yes vygeneruje instrukce shl pomocí lfence. -mlfence-before-ret=not vygeneruje pokyn not s lfence. -mlfence-before-ret=none nevygeneruje lfence, což je výchozí nastavení.
Tyto možnosti řídí, zda má assembler generovat poznámky k vlastnostem GNU_PROPERTY_X86_ISA_1_USED a GNU_PROPERTY_X86_FEATURE_2_USED. Výchozí nastavení lze ovládat pomocí možnosti konfigurace --enable-x86-used-note.
Tyto možnosti řídí, jak by měl assembler kódovat instrukce EVEX pouze pro SAE. -mevexrcig=rne zakóduje RC bity instrukce EVEX s 00, což je výchozí nastavení. -mevexrcig=rd, -mevexrcig=ru a -mevexrcig=rz bude kódovat instrukce EVEX pouze SAE s 01, 10 a 11 bity RC, v tomto pořadí.
Tato možnost určuje, že assembler by měl přijímat pouze AMD64 nebo Intel64 ISA v 64bitovém režimu. Výchozí nastavení je přijímat běžné, pouze Intel64 a AMD64 ISA.
Optimalizujte kódování instrukce s menší velikostí instrukce. -O a -O1 kódují 64bitové instrukce načtení registru s 64bitovými okamžitými příkazy jako 32bitové instrukce načtení registru s 31bitovými nebo 32bitovými okamžitými příkazy, kódují 64 -Instrukce pro vymazání bitových registrů s 32bitovými instrukcemi pro vymazání registru, zakódujte instrukce pro vymazání 256bitových/512bitových vektorových registrů VEX/EVEX s instrukcemi pro vymazání 128bitových vektorových registrů VEX, zakódujte 128bitové/256bitové zatížení vektorového registru EVEX /store instrukce s instrukcemi načítání/ukládání vektorových registrů VEX a kódování 128bitových/256bitových logických celočíselných instrukcí EVEX s 128bitovými/256bitovými logickými celočíselnými sbalenými VEX. -O2 zahrnuje optimalizaci -O1 plus kóduje instrukce pro vymazání 256bitových/512bitových vektorových registrů EVEX s instrukcemi pro vymazání 128bitových vektorových registrů EVEX. V 64bitovém režimu instrukce kódované VEX s komutativními zdrojovými operandy budou mít také své zdrojové operandy zaměněny, pokud to umožňuje použití 2bajtové formy předpony VEX namísto 3bajtové. Určité formy AND a OR se stejným (registrovým) operandem zadaným dvakrát se také změní na TEST. -Os zahrnuje optimalizaci -O2 plus kóduje 16bitové, 32bitové a 64bitové testy registrů s okamžitým jako 8bitový test registru s okamžitým. -O0 tuto optimalizaci vypne.
Následující možnosti jsou dostupné, když je nakonfigurován pro řadu Ubicom IP2K.
Určuje, že jsou povoleny rozšířené instrukce IP2022.
Obnovuje výchozí chování, které omezuje povolené instrukce pouze na základní IP2022.
Následující možnosti jsou dostupné, když jsou nakonfigurovány pro procesory Renesas M32C a M16C.
Sestavte pokyny pro M32C.
Sestavte instrukce M16C (výchozí).
Povolit podporu pro relaxaci v době propojení.
Kromě stylu 0x00 podporuje hexadecimální konstanty stylu H'00.
Následující možnosti jsou dostupné, když je nakonfigurován pro řadu Renesas M32R (dříve Mitsubishi M32R).
Určete, který procesor v rodině M32R je cílový. Výchozí nastavení je normálně M32R, ale tato možnost jej změní na M32RX.
Vytvářejte varovné zprávy, když narazíte na pochybné paralelní konstrukce.
Nevytvářejte varovná hlášení, když narazíte na sporné paralelní konstrukce.
Následující možnosti jsou dostupné, když je nakonfigurován pro řadu Motorola 68000.
Zkraťte odkazy na nedefinované symboly na jedno slovo místo dvou.
Určete, který procesor v rodině 68000 je cílový. Výchozí hodnota je normálně 68020, ale to lze změnit v době konfigurace.
Cílový počítač má (nebo nemá) koprocesor s pohyblivou řádovou čárkou. Výchozí nastavení je předpokládat koprocesor pro 68020, 68030 a cpu32. Ačkoli základní 68000 není kompatibilní s 68881, lze specifikovat kombinaci obou, protože je možné provést emulaci instrukcí koprocesoru s hlavním procesorem.
Cílový počítač má (nebo nemá) koprocesor jednotky správy paměti. Výchozí nastavení je předpokládat MMU pro 68020 a vyšší.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor Altera Nios II.
Pokud je to možné, nahraďte identifikované větve mimo rozsah sekvencemi jmp relativními pro PC. Generované kódové sekvence jsou vhodné pro použití v pozičně nezávislém kódu, ale existuje praktický limit na rozšířený rozsah větvení kvůli délce sekvencí. Tato možnost je výchozí.
Instrukce větve, u kterých nelze určit, že jsou v dosahu, a všechny instrukce volání nahraďte sekvencemi jmp a callr (v tomto pořadí). Tato volba generuje absolutní přemístění vůči cílovým symbolům a není vhodná pro kód nezávislý na poloze.
Nenahrazujte žádné pobočky ani hovory.
Generujte výstup big-endian.
Generovat výstup typu little-endian. Toto je výchozí nastavení.
Tato možnost určuje cílovou architekturu. Assembler vydá chybovou zprávu, pokud dojde k pokusu o sestavení instrukce, která se na cílové architektuře nevykoná. Jsou rozpoznány následující názvy architektur: r1, r2. Výchozí hodnota je r1.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor PRU.
Předpokládejme, že LD by optimalizoval instrukce LDI32 kontrolou horních 16 bitů výrazu. Pokud jsou všechny nuly, pak LD zkrátí instrukci LDI32 na jediné LDI. V takovém případě as vypíše přemístění DIFF pro výrazy rozdílu.
Předpokládejme, že LD nebude optimalizovat instrukce LDI32. V důsledku toho nebudou emitovány přemístění DIFF.
Nevarujte, pokud se název štítku shoduje s názvem registru. Programátoři assembleru obvykle budou chtít, aby se toto varování zobrazilo. Kompilátory C mohou chtít toto vypnout.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor MIPS.
Tato volba nastavuje největší velikost objektu, na který lze implicitně odkazovat pomocí registru gp. Je akceptován pouze pro cíle, které používají formát ECOFF, jako je DECstation se systémem Ultrix. Výchozí hodnota je 8.
Vygenerujte výstup ve formátu big endian.
Vygenerujte výstup ve formátu little endian.
Vygenerujte kód pro konkrétní úroveň architektury MIPS Instruction Set Architecture. -mips1 je alias pro -march=r3000, -mips2 je alias pro -march=r6000, -mips3 je alias pro -march=r4000 a -mips4 je alias pro -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5, a -mips64r6 odpovídají obecným 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 a MIPS64 Vydání 6 procesorů ISA, resp.
Vygenerujte kód pro konkrétní CPU MIPS.
Naplánujte a vylaďte pro konkrétní CPU MIPS.
Způsobí vložení nops, pokud v následujících dvou instrukcích dojde ke čtení cílového registru instrukce mfhi nebo mflo.
Pokud po instrukci dmult nebo dmultu následuje instrukce načíst, způsobí vložení nops.
Nepokoušejte se naplánovat předchozí instrukci do slotu zpoždění větvené instrukce umístěné na konci krátké smyčky šesti nebo méně instrukcí a vždy tam místo toho naplánujte instrukci nop. Chyba krátké smyčky za určitých podmínek způsobí, že se smyčky provedou pouze jednou nebo dvakrát, kvůli hardwarové chybě v čipu R5900.
Způsobit, že výstup ladění ve stylu stabs přejde do sekce .mdebug ve stylu ECOFF namísto standardních sekcí .stabs ELF.
Řídí generování sekcí .pdr.
Velikosti registrů jsou normálně odvozeny z ISA a ABI, ale tyto příznaky nutí určitou skupinu registrů, aby bylo vždy zacházeno s šířkou 32 bitů. -mgp32 řídí velikost obecných registrů a -mfp32 řídí velikost registrů s pohyblivou řádovou čárkou.
Velikosti registrů jsou normálně odvozeny z ISA a ABI, ale tyto příznaky nutí určitou skupinu registrů, aby bylo vždy zacházeno s šířkou 64 bitů. -mgp64 řídí velikost obecných registrů a -mfp64 řídí velikost registrů s pohyblivou řádovou čárkou.
Velikosti registrů jsou obvykle odvozeny z ISA a ABI, ale použití tohoto příznaku v kombinaci s -mabi=32 umožňuje variantu ABI, která bude správně fungovat s registry s plovoucí desetinnou čárkou, které jsou široké 32 nebo 64 bitů. .
Povolit použití operací s plovoucí desetinnou čárkou na lichých registrech s jednoduchou přesností, pokud to ISA podporuje. -mfpxx znamená -mno-odd-spreg, jinak je výchozí nastavení -modd-spreg.
Vygenerujte kód pro procesor MIPS 16. To je ekvivalentní umístění .module mips16 na začátek souboru sestavení. -no-mips16 tuto možnost vypne.
Povolte použití instrukcí MIPS16e2 v režimu MIPS16. To je ekvivalentní umístění .module mips16e2 na začátek souboru sestavení. -mno-mips16e2 tuto možnost vypne.
Vygenerujte kód pro procesor microMIPS. To je ekvivalentní umístění .module micromips na začátek souboru sestavení. -mno-micromips tuto možnost vypne. To je ekvivalentní umístění .module nomicromips na začátek souboru sestavení.
Povolí rozšíření SmartMIPS k instrukční sadě MIPS32. To je ekvivalentní umístění .module smartmips na začátek souboru sestavení. -mno-smartmips tuto možnost vypne.
Vygenerujte kód pro rozšíření specifické pro aplikaci MIPS-3D. To říká assembleru, aby přijal instrukce MIPS-3D. -no-mips3d tuto možnost vypne.
Vygenerujte kód pro rozšíření specifické pro aplikaci MDMX. To říká assembleru, aby přijal instrukce MDMX. -no-mdmx tuto možnost vypne.
Vygenerujte kód pro rozšíření specifické pro aplikaci DSP Release 1. To říká assembleru, aby přijal instrukce DSP Release 1. -mno-dsp tuto možnost vypne.
Vygenerujte kód pro specifické rozšíření aplikace DSP Release 2. Tato možnost znamená -mdsp. To říká assembleru, aby přijal instrukce DSP Release 2. -mno-dspr2 tuto možnost vypne.
Vygenerujte kód pro specifické rozšíření aplikace DSP Release 3. Tato možnost zahrnuje -mdsp a -mdspr2. To říká assembleru, aby přijal instrukce DSP Release 3. -mno-dspr3 tuto možnost vypne.
Vygenerujte kód pro rozšíření MIPS SIMD Architecture Extension. To říká assembleru, aby přijal instrukce MSA. -mno-msa tuto možnost vypne.
Vygenerujte kód pro rozšíření MIPS eXtended Physical Address (XPA). To říká assembleru, aby přijal instrukce XPA. -mno-xpa tuto možnost vypne.
Vygenerujte kód pro rozšíření specifické pro aplikaci MT. To říká assembleru, aby přijal instrukce MT. -mno-mt tuto možnost vypne.
Vygenerujte kód pro rozšíření specifické pro aplikaci MCU. To říká assembleru, aby přijal instrukce MCU. -mno-mcu tuto možnost vypne.
Vygenerujte kód pro specifické rozšíření aplikace MIPS cyklické redundantní kontroly (CRC). To říká assembleru, aby přijal instrukce CRC. -mno-crc tuto možnost vypne.
Vygenerujte kód pro specifické rozšíření aplikace Global INValidate (GINV). To říká assembleru, aby přijal instrukce GINV. -mno-ginv tuto možnost vypne.
Vygenerujte kód pro specifické rozšíření aplikace Loongson MultiMedia extensions Instructions (MMI). To říká assembleru, aby přijal instrukce MMI. -mno-loongson-mmi tuto možnost vypne.
Vygenerujte kód pro instrukce Loongson Content Address Memory (CAM). To říká assembleru, aby přijal instrukce Loongson CAM. -mno-loongson-cam tuto možnost vypne.
Vygenerujte kód pro instrukce Loongson EXTensions (EXT). To říká assembleru, aby přijal instrukce Loongson EXT. -mno-loongson-ext tuto možnost vypne.
Vygenerujte kód pro instrukce Loongson EXTensions R2 (EXT2). Tato možnost znamená -mloongson-ext. To říká assembleru, aby přijal instrukce Loongson EXT2. -mno-loongson-ext2 tuto možnost vypne.
Při generování kódu pro procesor microMIPS používejte pouze 32bitové kódování instrukcí. Tato možnost brání použití jakýchkoli 16bitových instrukcí. To je ekvivalentní umístění .set insn32 na začátek souboru sestavení. -mno-insn32 tuto možnost vypne. To je ekvivalentní umístění .set noinsn32 na začátek souboru sestavení. Ve výchozím nastavení je vybrána možnost -mno-insn32, která umožňuje použití všech instrukcí.
Možnost --no-construct-floats zakáže konstrukci konstant s pohyblivou řádovou čárkou s dvojitou šířkou načtením dvou polovin hodnoty do dvou registrů s plovoucí desetinnou čárkou s jednoduchou šířkou, které tvoří registr s dvojitou šířkou. Ve výchozím nastavení je vybráno --construct-floats, což umožňuje konstrukci těchto konstant s pohyblivou řádovou čárkou.
Možnost --relax-branch umožňuje relaxaci větví mimo dosah. Ve výchozím nastavení je vybrána možnost --no-relax-branch, což způsobí, že všechny větve mimo rozsah způsobí chybu.
Ignorujte kontroly větví na neplatné přechody mezi režimy ISA. Sémantika větví neposkytuje přepínač režimu ISA, takže ve většině případů musí být režim ISA, pro který byla větev zakódována, stejný jako režim ISA cílového štítku větve. Proto má GAS implementovány kontroly, které ověřují v sestavení větve, že se dva režimy ISA shodují. -mignore-branch-isa tyto kontroly zakáže. Ve výchozím nastavení je vybrána možnost -mno-ignore-branch-isa, což způsobí, že jakákoli neplatná větev vyžadující přechod mezi režimy ISA způsobí chybu.
Vyberte si mezi formátem kódování IEEE 754-2008 (-mnan=2008) nebo starším (-mnan=legacy) NaN. To druhé je výchozí.
Tato možnost se dříve používala k přepínání mezi výstupem ELF a ECOFF na cílech jako IRIX 5, které podporovaly obojí. Podpora MIPS ECOFF byla v GAS 2.24 odstraněna, takže tato možnost nyní neplní žádný účel. Je zachován pro zpětnou kompatibilitu. Dostupné názvy konfigurací jsou: mipself, mipslelf a mipsbelf. Volba mipself nyní nemá žádný účinek, protože výstup je vždy ELF. mipslelf a mipsbelf vybírají výstup small- a big-endian, ale -EL a -EB jsou nyní místo toho preferované možnosti.
jako tuto možnost ignoruje. Je přijímán pro kompatibilitu s nativními nástroji.
Kontrolujte, jak se vypořádat s přetečením násobení a dělením nulou. --trap nebo --no-break (což jsou synonyma) používají výjimku pasti (a fungují pouze pro Instruction Set Architecture úrovně 2 a vyšší); --break nebo --no-trap (také synonyma a výchozí) mají výjimku přestávky.
Při použití této možnosti as vydá varování pokaždé, když vygeneruje instrukci nop z makra.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor LoongArch.
Vygenerujte kód nezávislý na pozici
Negenerovat kód nezávislý na pozici (výchozí)
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor Meta.
Vygenerujte kód pro Meta 1.1.
Vygenerujte kód pro Meta 1.2.
Vygenerujte kód pro Meta 2.1.
Povolit kódu používat hardware FPU Meta 2.1.
Dokumentaci možností specifických pro MMIX naleznete na informačních stránkách.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor NDS32.
Optimalizujte pro výkon.
Optimalizujte pro prostor.
Vytvářejte malý endian datový výstup.
Vytvářejte malý endian datový výstup.
Generovat PIC.
Potlačit relaxaci fp-as-gp pro tento soubor.
Optimalizace větví back-to-back.
U tohoto souboru potlačte veškerou relaxaci.
Sestavte pro architekturu
Sestavte pro základní linii
Zadejte konfiguraci FPU.
Zadejte verzi abi
Povolit/zakázat podporu instrukcí násobení.
Povolit/zakázat podporu pokynů pro rozdělení.
Povolit/zakázat 16bitové rozšíření
Povolit/zakázat registry d0/d1
Povolit/zakázat rozšíření výkonu
Povolit/zakázat rozšíření výkonu 2
Povolit/zakázat rozšíření řetězce
Možnost povolit/zakázat konfiguraci omezeného registru (GPR16).
Povolit/zakázat rozšíření AUDIO ISA
Povolit/zakázat rozšíření FPU SP
Povolit/zakázat rozšíření FPU DP
Povolit/zakázat FPU tavené-multiply-add instrukce
Zapněte podporu všech rozšíření a pokynů
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor PowerPC.
Vygenerujte ELF32 nebo XCOFF32.
Vygenerujte ELF64 nebo XCOFF64.
Nastavte EF_PPC_RELOCATABLE_LIB v příznakech ELF.
Vygenerujte kód pro POWER/2 (RIOS2).
Vygenerovat kód pro POWER (RIOS1)
Vygenerujte kód pro PowerPC 601.
Vygenerujte kód pro PowerPC 603/604.
Vygenerujte kód pro PowerPC 403/405.
Vygenerujte kód pro PowerPC 440. BookE a nějaké instrukce 405.
Vygenerujte kód pro PowerPC 464.
Vygenerujte kód pro PowerPC 476.
Vygenerujte kód pro PowerPC 7400/7410/7450/7455.
Vygenerujte kód pro PowerPC 750CL/Gekko/Broadway.
Vygenerujte kód pro PowerPC 821/850/860.
Vygenerujte kód pro PowerPC 620/625/630.
Vygenerujte kód pro varianty e200, e200z2 s LSP, e200z4 s SPE.
Vygenerujte kód pro rodinu PowerPC e300.
Vygenerujte kód pro komplex jádra Motorola e500.
Vygenerujte kód pro základní komplex Freescale e500mc.
Vygenerujte kód pro komplex jádra Freescale e500mc64.
Vygenerujte kód pro základní komplex Freescale e5500.
Vygenerujte kód pro základní komplex Freescale e6500.
Povolit instrukce LSP. (Zakáže SPE a SPE2.)
Vygenerujte kód pro instrukce Motorola SPE. (Zakáže LSP.)
Vygenerujte kód pro instrukce Freescale SPE2. (Zakáže LSP.)
Vygenerujte kód pro komplex jádra AppliedMicro Titan.
Vygenerujte kód pro PowerPC 64, včetně bridge insns.
Vygenerujte kód pro 32bitovou BookE.
Vygenerujte kód pro architekturu A2.
Vygenerujte kód pro procesory pomocí instrukcí AltiVec.
Vygenerujte kód pro instrukce Freescale PowerPC VLE.
Generujte kód pro procesory s vektorovými (VSX) instrukcemi.
Vygenerujte kód pro procesory s instrukcemi hardwarové transakční paměti.
Vygenerujte kód pro architekturu Power4.
Vygenerujte kód pro architekturu Power5.
Vygenerujte kód pro architekturu Power6.
Vygenerujte kód pro architekturu Power7.
Vygenerujte kód pro architekturu Power8.
Vygenerujte kód pro architekturu Power9.
Vygenerujte kód pro architekturu Power10.
Vygenerujte kód pro „budoucí“ architekturu.
Vygenerujte kód pro architekturu Cell Broadband Engine.
Vygenerujte kód společné instrukce Power/PowerPC.
Generujte kód pro jakoukoli architekturu (PWR/PWRX/PPC).
Povolit symbolické názvy pro registry.
Nepovolovat symbolické názvy pro registry.
Podpora pro volbu -mrelocatable GCC.
Podpora pro volbu -mrelocatable-lib GCC.
Nastavte bit PPC_EMB v příznacích ELF.
Vygenerujte kód pro stroj little endian.
Vygenerujte kód pro stroj big endian.
Vygenerujte kód pro Solaris.
Negenerujte kód pro Solaris.
Pokud direktiva zarovnání vloží více než count nops, umístěte větev na začátek, abyste vynechali provádění nops.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor RISC-V.
Vygenerujte kód nezávislý na pozici
Negenerovat kód nezávislý na pozici (výchozí)
Vyberte základní isa podle specifikace ISA. Například -march=rv32ima. Pokud tato možnost a atributy architektury nejsou nastaveny, pak assembler zkontroluje výchozí nastavení konfigurace --with-arch=ISA.
Vyberte výchozí verzi isa spec. Pokud verze ISA není nastavena pomocí -march, pak assembler pomůže nastavit verzi podle výchozí zvolené specifikace. Pokud tato možnost není nastavena, pak assembler zkontroluje výchozí nastavení konfigurace --with-isa-spec=ISAspec.
Vyberte verzi privilegované specifikace. O tom, zda je CSR platná či nikoli, se můžeme rozhodnout podle zvolené specifikace. Pokud tato možnost a atributy oprávnění nejsou nastaveny, pak assembler zkontroluje výchozí nastavení konfigurace --with-priv-spec=PRIVspec.
Vybere ABI, což je buď ilp32 nebo lp64, volitelně následované f, d nebo q pro označení konvence volání s jednoduchou přesností, dvojitou přesností nebo čtyřnásobnou přesností, nebo žádné pro označení konvence volání s měkkým plovoucí čárkou. . Také za ilp32 může volitelně následovat e pro označení RVE ABI, které je vždy soft-float.
Využijte uvolnění linkerů ke snížení počtu instrukcí potřebných k materializaci adres symbolů. (výchozí)
Nedělejte relaxaci linkeru.
Pokud nejsou nastaveny direktivy .attribute, vygenerujte výchozí obsah pro sekci atributů riscv elf. Tato část se používá k zaznamenání informací, které linker nebo runtime loader potřebuje ke kontrole kompatibility. Tyto informace zahrnují řetězec ISA, požadavek na zarovnání zásobníku, nezarovnané přístupy k paměti a hlavní, vedlejší a revizní verzi privilegované specifikace.
Negenerujte výchozí sekci atributu riscv elf, pokud nejsou nastaveny direktivy .attribute.
Povolte kontrolu CSR pro CRS závislé na ISA a CSR pouze pro čtení. CSR závislé na ISA jsou platné pouze v případě, že je nastaven konkrétní ISA. CSR pouze pro čtení nelze zapsat pomocí instrukcí CSR.
Neprovádějte kontrolu CSR.
Vygenerujte kód pro stroj little endian.
Vygenerujte kód pro stroj big endian.
Viz informační stránky pro dokumentaci specifických možností RX.
Následující možnosti jsou dostupné, když je nakonfigurován pro rodinu procesorů s390.
Vyberte velikost slova, buď 31/32 bitů nebo 64 bitů.
Vyberte režim architektury, buď Enterprise System Architecture (esa) nebo režim z/Architecture (zarch).
Určete, která varianta procesoru s390 je cílová, g5 (nebo arch3), g6, z900 (nebo arch5), z990 (nebo arch6), z9-109, z9-ec ( nebo arch7), z10 (nebo arch8), z196 (nebo arch9) , zEC12 (nebo arch10), z13 (nebo arch11), z14 ( nebo arch12), z15 (nebo arch13) nebo z16 (nebo arch14 ).
Povolit nebo zakázat symbolické názvy pro registry.
Varovat vždy, když byl zadán operand pro základní nebo indexový registr, ale vyhodnocen jako nula.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor TMS320C6000.
Povolit (pouze) instrukce z architektury arch. Ve výchozím nastavení jsou všechny pokyny povoleny. Jsou přijímány následující hodnoty arch: c62x, c64x, c64x+, c67x , c67x+, c674x.
Možnost -mdsbt způsobí, že assembler vygeneruje atribut Tag_ABI_DSBT s hodnotou 1, což znamená, že kód používá adresování DSBT. Možnost -mno-dsbt, výchozí, způsobí, že značka bude mít hodnotu 0, což znamená, že kód nepoužívá adresování DSBT. Linker vydá varování, pokud jsou vzájemně propojeny objekty různého typu (DSBT a non-DSBT).
Možnost -mpid= způsobí, že assembler vygeneruje atribut Tag_ABI_PID s hodnotou udávající formu adresování dat, kterou kód používá. -mpid=no, výchozí, označuje adresování dat závislé na poloze, -mpid=near označuje adresování nezávislé na poloze s přístupy GOT pomocí adresování blízkých DP a -mpid=far označuje adresování nezávislé na poloze s přístupy GOT pomocí vzdáleného adresování DP. Pokud jsou objekty sestavené s různými nastaveními této možnosti propojeny, linker vydá varování.
Možnost -mpic způsobí, že assembler vygeneruje atribut Tag_ABI_PIC s hodnotou 1, což znamená, že kód používá adresování kódu nezávislé na pozici, -mno Volba -pic, výchozí, způsobí, že tag bude mít hodnotu 0, což znamená adresování kódu závislé na poloze. Linker vydá varování, pokud jsou vzájemně propojeny objekty různého typu (závislé na poloze a nezávislé na poloze).
Vygenerujte kód pro zadanou endianness. Výchozí hodnota je little-endian.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor TILE-Gx.
Vyberte velikost slova, buď 32 bitů nebo 64 bitů.
Vyberte endianness, buď big-endian (-EB) nebo little-endian (-EL).
Následující možnost je k dispozici, když je nakonfigurována pro procesor Visium.
Tato možnost určuje cílovou architekturu. Pokud dojde k pokusu sestavit instrukci, která se na cílové architektuře nevykoná, assembler vydá chybovou zprávu. Jsou rozpoznány následující názvy: mcm24 mcm gr5 gr6
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor Xtensa.
Kontrolujte léčbu doslovných bazénů. Výchozí hodnota je --no-text-section-literals, která umístí literály do samostatných sekcí ve výstupním souboru. To umožňuje umístit doslovný fond do datové paměti RAM/ROM. Pomocí --text-section-literals jsou literály v textové sekci proloženy, aby byly co nejblíže svým odkazům. To může být nutné pro velké soubory sestavení, kde by literály jinak byly mimo rozsah instrukcí L32R v textové sekci. Literály jsou seskupeny do skupin podle direktiv .literal_position nebo předchozích pokynů ENTRY. Tyto volby ovlivní pouze literály odkazované prostřednictvím instrukcí L32R relativních pro PC; literály pro absolutní režim instrukce L32R jsou zpracovávány samostatně.
Kontrolujte léčbu doslovných bazénů. Výchozí hodnota je --no-auto-litpools, která při absenci --text-section-literals umístí literály do samostatných sekcí ve výstupním souboru. To umožňuje umístit doslovný fond do datové paměti RAM/ROM. U --auto-litpools jsou literály v textové sekci roztroušeny, aby byly co nejblíže svým odkazům, explicitní direktivy .literal_position nejsou vyžadovány. To může být nutné u velmi rozsáhlých funkcí, kde jednotlivý fond literálů na začátku funkce nemusí být dosažitelný pomocí instrukcí L32R na konci. Tyto volby ovlivní pouze literály odkazované prostřednictvím instrukcí L32R relativních pro PC; literály pro absolutní režim instrukce L32R jsou zpracovávány samostatně. Při použití společně s --text-section-literals má přednost --auto-litpools.
Sdělte assembleru, zda instrukce L32R používají absolutní nebo PC-relativní adresování. Pokud procesor obsahuje možnost absolutního adresování, výchozí je použití absolutních přemístění L32R. Jinak lze použít pouze přemístění L32R relativní k počítači.
Povolte nebo zakažte automatické zarovnání, abyste snížili penalizaci za větvení s určitými náklady na velikost kódu. Tato optimalizace je ve výchozím nastavení povolena. Všimněte si, že assembler vždy zarovná instrukce jako LOOP, které mají pevné požadavky na zarovnání.
Povolte nebo zakažte transformaci instrukcí volání, abyste umožnili volání přes větší rozsah adres. Tato možnost by se měla použít, když mohou být cíle volání potenciálně mimo dosah. Může to snížit velikost kódu i výkon, ale linker může obecně optimalizovat zbytečnou režii, když volání skončí v dosahu. Výchozí hodnota je --no-longcalls.
Povolí nebo zakáže všechny asemblerové transformace instrukcí Xtensa, včetně relaxace a optimalizace. Výchozí hodnota je --transform; --no-transform by se mělo používat pouze ve výjimečných případech, kdy pokyny musí přesně odpovídat specifikaci ve zdroji sestavení. Použití --no-transform způsobí, že operandy instrukce mimo rozsah budou chyby.
Přejmenujte sekci oldname na newname. Tuto možnost lze použít vícekrát k přejmenování více sekcí.
Povolte nebo zakažte transformaci instrukcí skoku, abyste umožnili skoky přes větší rozsah adres. Tato možnost by měla být použita, když cíle skoku mohou být potenciálně mimo dosah. Pokud takové skoky neexistují, tato možnost neovlivňuje velikost kódu ani výkon. Výchozí nastavení je --trampolíny.
Vyberte značku ABI zapsanou do sekce .xtensa.info. Značka ABI označuje ABI kódu sestavy. Při pokusu o propojení souborů objektů s nekonzistentními značkami ABI vydá linker varování. Výchozí ABI je zvoleno konfigurací jádra Xtensa.
Následující možnosti jsou dostupné, když je nakonfigurován pro procesor Z80.
@kapitola Závislé funkce Z80
Tato volba určuje cílový procesor. Assembler vydá chybovou zprávu, pokud je učiněn pokus sestavit instrukci, která se na cílovém procesoru nevykoná. Jsou rozpoznány následující názvy procesorů: z80, z180, ez80, gbz80, z80n, r800. Kromě základní instrukční sady lze assembleru říci, aby přijal některé mnemotechnické pomůcky rozšíření. Například -march=z180+sli+infc rozšiřuje z180 o instrukce SLI a IN F,(C) . V současnosti jsou podporována následující rozšíření: full (všechny známé instrukce), adl (výchozí režim ADL CPU, pouze eZ80), sli (instrukce známé jako SLI, SLL nebo SL1), xyhl (instrukce s polovinami indexových registrů: IXL , IXH, IYL, IYH), xdcb (pokyny jako RotOp (II +d),R a BitOp n,(II+d),R), infc (pokyn IN F,(C) nebo IN (C)), outc0 (instrukce OUT (C),0). Všimněte si, že namísto rozšiřování základní instrukční sady ruší mnemotechnika rozšíření začínající na - příslušnou funkci: -march=z80-full+xyhl nejprve odstraní všechna výchozí rozšíření a přidá podpora indexových registrů pouze poloviční. Pokud tato volba není specifikována, předpokládá se -march=z80+xyhl+infc.
Označte všechny štítky se zadanou předponou jako místní. Ale takové označení může být v kódu explicitně označeno globálně. Tato volba nemění výchozí místní předponu štítku .L, pouze přidává novou.
Přijměte štítky bez dvojtečky. Všechny symboly na začátku řádku jsou považovány za štítky.
Přijměte kód assembleru vytvořený SDCC.
Formát čísel s jedinou přesností s plovoucí desetinnou čárkou. Výchozí: ieee754 (32 bitů).
Formát čísel s plovoucí desetinnou čárkou s dvojitou přesností. Výchozí: ieee754 (64 bitů).
gcc (1), ld (1), and the Info entries for binutils and ld.
Copyright (c) 1991-2023 Free Software Foundation, Inc.
Je povoleno kopírovat, šířit a/nebo upravovat tento dokument za podmínek GNU Free Documentation License, verze 1.3 nebo kterékoli pozdější verze publikované Free Software Foundation; bez neměnných sekcí, bez textů na přední straně obálky a bez textů na zadní straně obálky. Kopie licence je součástí sekce nazvané GNU Free Documentation License.