as - instrukcja obsługi, opcje, przykłady poleceń


NAZWA

as AS - przenośny asembler GNU.

STRESZCZENIE

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 ...]

CEL

Docelowe opcje AArch64:

[-EB|-EL] [-mabi=ABI]

Docelowe opcje alfa:

[-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]

Docelowe opcje ARC:

[-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]

Docelowe opcje 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]

Docelowe opcje Blackfin:

[-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]

Docelowe opcje BPF:

[-EL] [-EB]

Docelowe opcje CRIS:

[--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]

Docelowe opcje 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]

Docelowe opcje D10V:

[-O]

Docelowe opcje D30V:

[-O|-n|-N]

Docelowe opcje EPIPHANY:

[-mepiphany|-mepiphany16]

Docelowe opcje H8/300:

[-h-tick-hex]

Docelowe opcje i386:

[--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]

Docelowe opcje 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]

Docelowe opcje IP2K:

[-mip2022|-mip2022ext]

Docelowe opcje M32C:

[-m32c|-m16c] [-relax] [-h-tick-hex]

Docelowe opcje M32R:

[--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]

Docelowe opcje M680X0:

[-l] [-m68000|-m68010|-m68020|...]

Docelowe opcje 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]

Docelowe opcje MCORE:

[-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]

Opcje docelowej meta:

[-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] 

Docelowe opcje MIKROBLAZE:

Docelowe opcje 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]

Docelowe opcje MMIX:

[--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]

Docelowe opcje Nios II:

[-relax-all] [-relax-section] [-no-relax] [-EB] [-EL]

Docelowe opcje 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]

Docelowe opcje PDP11:

[-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]

Docelowe opcje picoJava:

[-mb|-me]

Docelowe opcje 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]

Docelowe opcje PRU:

[-link-relax] [-mnolink-relax] [-mno-warn-regname-label]

Docelowe opcje RISC-V:

[-fpic|-fPIC|-fno-pic] [-march=ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]

Docelowe opcje RL78:

[-mg10] [-m32bit-doubles|-m64bit-doubles]

Docelowe opcje RX:

[-mlittle-endian|-mbig-endian] [-m32bit-doubles|-m64bit-doubles] [-muse-conventional-section-names] [-msmall-data-limit] [-mpid] [-mrelax] [-mint-register=number] [-mgcc-abi|-mrx-abi]

Docelowe opcje s390:

[-m31|-m64] [-mesa|-mzarch] [-march=CPU] [-mregnames|-mno-regnames] [-mwarn-areg-zero]

Docelowe opcje SCORE:

[-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]

Docelowe opcje 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]

Docelowe opcje TIC54X:

[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] [-merrors-to-file <filename>|-me <filename>]

Docelowe opcje TIC6X:

[-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]

Docelowe opcje TILE-Gx:

[-m32|-m64][-EB][-EL]

Docelowe opcje Visium:

[-mtune=arch]

Docelowe opcje Xtensy:

[--[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]

Docelowe opcje Z80:

[-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]

OPIS

GNU as to tak naprawdę rodzina asemblerów. Jeśli używasz (lub używałeś) asemblera GNU na jednej architekturze, powinieneś znaleźć dość podobne środowisko, gdy używasz go na innej architekturze. Każda wersja ma wiele wspólnego z innymi, w tym formaty plików obiektowych, większość dyrektyw asemblera (często nazywanych pseudo-ops) i składnię asemblera.

as jest przede wszystkim przeznaczony do składania danych wyjściowych kompilatora GNU C gcc do użytku przez linker ld. Niemniej jednak, staraliśmy się, aby as składało poprawnie wszystko, co inne asemblery dla tej samej maszyny byłyby w stanie złożyć. Wszelkie wyjątki są wyraźnie udokumentowane. Nie oznacza to, że as zawsze używa tej samej składni co inny asembler dla tej samej architektury; na przykład znamy kilka niekompatybilnych wersji składni języka asemblera 680x0.

Za każdym razem, gdy uruchamiasz jak, składa się dokładnie jeden program źródłowy. Program źródłowy składa się z jednego lub więcej plików. (Standardowym wejściem jest również plik.)

Podajesz as linię poleceń, która ma zero lub więcej nazw plików wejściowych. Pliki wejściowe są odczytywane (od lewej nazwy pliku do prawej). Argument wiersza poleceń (na dowolnej pozycji), który nie ma specjalnego znaczenia, jest traktowany jako nazwa pliku wejściowego.

Jeśli nie podasz as żadnych nazw plików, spróbuje odczytać jeden plik wejściowy ze standardowego wejścia as, którym zwykle jest twój terminal. Być może będziesz musiał wpisać ctl-D, aby powiedzieć ponieważ nie ma więcej programu do asemblera.

Użyj --, jeśli chcesz jawnie nazwać standardowy plik wejściowy w wierszu poleceń.

Jeśli źródło jest puste, as tworzy mały, pusty plik obiektowy.

as może zapisywać ostrzeżenia i komunikaty o błędach w standardowym pliku błędów (zwykle w terminalu). To nie powinno się zdarzyć, gdy kompilator działa tak jak automatycznie. Ostrzeżenia informują o założeniu, że as może dalej tworzyć wadliwy program; błędy zgłaszają poważny problem, który zatrzymuje montaż.

Jeśli wywołujesz as przez kompilator GNU C, możesz użyć opcji -Wa, aby przekazać argumenty do asemblera. Argumenty asemblera muszą być oddzielone od siebie (oraz -Wa) przecinkami. Na przykład:

gcc -c -g -O -Wa,-alh,-L file.c

Przekazuje to asemblerowi dwie opcje: -alh (wyślij listing na standardowe wyjście z wysokopoziomowym i asemblerowym źródłem) i -L (zachowaj lokalne symbole w tablicy symboli ).

Zwykle nie trzeba używać tego mechanizmu -Wa, ponieważ wiele opcji wiersza poleceń kompilatora jest automatycznie przekazywanych asemblerowi przez kompilator. (Możesz wywołać sterownik kompilatora GNU z opcją -v, aby dokładnie zobaczyć, jakie opcje przekazuje do każdego przebiegu kompilacji, w tym asemblera).

OPCJE

  1. Odczytaj opcje wiersza poleceń z pliku. Odczytane opcje są wstawiane w miejsce oryginalnej opcji @plik. Jeśli plik nie istnieje lub nie można go odczytać, wówczas opcja zostanie potraktowana dosłownie, a nie usunięta. Opcje w pliku są oddzielone spacjami. Znak spacji może być zawarty w opcji poprzez ujęcie całej opcji w pojedynczy lub podwójny cudzysłów. Dowolny znak (w tym ukośnik odwrotny) może zostać uwzględniony poprzez poprzedzenie znaku, który ma zostać uwzględniony, ukośnikiem odwrotnym. Sam plik może zawierać dodatkowe opcje @pliku; wszelkie takie opcje będą przetwarzane rekurencyjnie.

-a[cdghlmns]

Włącz aukcje na różne sposoby:

-ac

pomiń fałszywe okresy warunkowe

-ad

pomiń dyrektywy debugowania

-ag

zawierać informacje ogólne, takie jak przekazana wersja i opcje

-ah

zawierać źródło wysokiego poziomu

-al

obejmują montaż

-am

zawierać rozszerzenia makr

-an

pomiń przetwarzanie formularzy

-as

zawierać symbole

=file

ustaw nazwę pliku z listą

Możesz łączyć te opcje; na przykład użyj -aln do zestawienia zestawu bez przetwarzania formularzy. Opcja =file, jeśli jest używana, musi być ostatnią. Samo -a domyślnie ma wartość -ahls.

--alternate

Rozpocznij w alternatywnym trybie makro.

--compress-debug-sections

Kompresuj sekcje debugowania DWARF za pomocą zlib z SHF_COMPRESSED z ELF ABI. Wynikowy plik obiektowy może nie być zgodny ze starszymi konsolidatorami i narzędziami plików obiektowych. Zauważ, że jeśli kompresja spowodowałaby większą sekcję, to nie jest ona kompresowana.

--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd

Te opcje kontrolują sposób kompresji sekcji debugowania DWARF. --compress-debug-sections=none jest odpowiednikiem --nocompress-debug-sections. --compress-debug-sections=zlib i --compress-debug-sections=zlib-gabi są równoważne --compress-debug-sections. --compress-debug-sections=zlib-gnu kompresuje sekcje debugowania DWARF przy użyciu przestarzałego formatu zlib-gnu. Zmieniono nazwy sekcji debugowania, aby zaczynały się od .zdebug. --compress-debug-sections=zstd kompresuje sekcje debugowania DWARF przy użyciu zstd. Uwaga - jeśli kompresja faktycznie spowodowałaby większą sekcję, to nie jest ona kompresowana ani zmieniana jej nazwa.

--nocompress-debug-sections

Nie kompresuj sekcji debugowania DWARF. Jest to zwykle ustawienie domyślne dla wszystkich celów z wyjątkiem x86/x86_64, ale można to zastąpić opcją konfiguracji czasu.

-D

Włącz denugging w docelowych backendach, jeśli jest obsługiwany. W przeciwnym razie ignorowane. Nawet jeśli jest ignorowana, ta opcja jest akceptowana ze względu na kompatybilność skryptu z wywołaniami innych asemblerów.

--debug-prefix-map old=new

Podczas asemblacji plików w katalogu stary, zamiast tego zapisz informacje debugowania opisujące je jako nowy.

--defsym sym=value

Zdefiniuj symbol sym jako wartość przed złożeniem pliku wejściowego. wartość musi być stałą całkowitą. Podobnie jak w C, wiodące 0x oznacza wartość szesnastkową, a wiodące 0 wskazuje wartość ósemkową. Wartość symbolu może zostać nadpisana w pliku źródłowym za pomocą pseudooperacji .set.

--dump-config

Wyświetla sposób konfiguracji asemblera, a następnie kończy działanie.

--elf-stt-common=no
--elf-stt-common=yes

Te opcje kontrolują, czy asembler ELF powinien generować wspólne symbole z typem STT_COMMON. Wartość domyślną można kontrolować za pomocą opcji konfiguracji --enable-elf-stt-common.

--emulation=name

Jeśli asembler jest skonfigurowany do obsługi wielu różnych konfiguracji docelowych, ta opcja może być użyta do wybrania żądanej formy.

-f

fast --- pomiń białe znaki i wstępne przetwarzanie komentarzy (załóżmy, że źródłem jest dane wyjściowe kompilatora).

-g
--gen-debug

Generuj informacje debugowania dla każdej linii źródłowej asemblera, używając dowolnego formatu debugowania preferowanego przez cel. Obecnie oznacza to STABS, ECOFF lub DWARF2. Gdy formatem debugowania jest DWARF, wówczas sekcje .debug_info i .debug_line są emitowane tylko wtedy, gdy plik asemblera sam ich nie generuje.

--gstabs

Generuj informacje debugowania stabs dla każdej linii asemblera. Może to pomóc w debugowaniu kodu asemblera, jeśli debugger sobie z tym poradzi.

--gstabs+

Generuj informacje debugowania stabs dla każdej linii asemblera, z rozszerzeniami GNU, które prawdopodobnie może obsłużyć tylko gdb, i które mogą spowodować awarię innych debuggerów lub odmowę odczytania twojego programu. Może to pomóc w debugowaniu kodu asemblera. Obecnie jedynym rozszerzeniem GNU jest lokalizacja bieżącego katalogu roboczego w czasie asemblera.

--gdwarf-2

Wygeneruj informacje debugowania DWARF2 dla każdej linii asemblera. Może to pomóc w debugowaniu kodu asemblera, jeśli debugger sobie z tym poradzi. Uwaga --- ta opcja jest obsługiwana tylko przez niektóre cele, a nie wszystkie.

--gdwarf-3

Ta opcja jest taka sama jak opcja --gdwarf-2, z wyjątkiem tego, że pozwala na generowanie dodatkowych informacji debugowania zgodnie z wersją 3 specyfikacji DWARF. Uwaga — włączenie tej opcji nie gwarantuje generowania żadnych dodatkowych informacji, wybór tego zależy od celu.

--gdwarf-4

Ta opcja jest taka sama jak opcja --gdwarf-2, z wyjątkiem tego, że pozwala na generowanie dodatkowych informacji debugowania zgodnie z wersją 4 specyfikacji DWARF. Uwaga — włączenie tej opcji nie gwarantuje generowania żadnych dodatkowych informacji, wybór tego zależy od celu.

--gdwarf-5

Ta opcja jest taka sama jak opcja --gdwarf-2, z wyjątkiem tego, że pozwala na generowanie dodatkowych informacji debugowania zgodnie z wersją 5 specyfikacji DWARF. Uwaga — włączenie tej opcji nie gwarantuje generowania żadnych dodatkowych informacji, wybór tego zależy od celu.

--gdwarf-sections

Zamiast tworzyć sekcję .debug_line, utwórz serię sekcji .debug_line.foo, gdzie foo to nazwa odpowiedniej sekcji kodu. Na przykład sekcja kodu o nazwie .text.func zostanie umieszczona w sekcji o nazwie .debug_line.text.func. Jeśli sekcja kodu nazywa się po prostu .text, to sekcja wiersza debugowania nadal będzie nazywać się po prostu .debug_line bez żadnego sufiksu.

--gdwarf-cie-version=version

Kontroluj, które wersje DWARF Common Information Entries (CIE) są tworzone. Gdy ta flaga nie jest określona, domyślnie jest to wersja 1, chociaż niektóre cele mogą modyfikować tę wartość domyślną. Inne możliwe wartości dla wersji to 3 lub 4.

--generate-missing-build-notes=yes
--generate-missing-build-notes=no

Te opcje kontrolują, czy asembler ELF powinien generować uwagi do atrybutów GNU Build, jeśli nie ma ich w źródłach wejściowych. Wartość domyślną można kontrolować za pomocą opcji konfiguracyjnej --enable-generate-build-notes.

--gsframe
--gsframe

Utwórz sekcję .sframe z dyrektyw CFI.

--hash-size N

Ignorowane. Obsługiwane w celu zapewnienia zgodności wiersza poleceń z innymi asemblerami.

--help

Wydrukuj podsumowanie opcji wiersza polecenia i wyjdź.

--target-help

Wydrukuj podsumowanie wszystkich opcji specyficznych dla celu i wyjdź.

-I dir

Dodaj katalog dir do listy wyszukiwania dyrektyw .include.

-J

Nie ostrzegaj o podpisanym przepełnieniu.

-K

Wydawaj ostrzeżenia, gdy tabele różnic zostaną zmienione dla długich przemieszczeń.

-L
--keep-locals

Zachowaj (w tablicy symboli) symbole lokalne. Symbole te rozpoczynają się od lokalnych przedrostków etykiet specyficznych dla systemu, zazwyczaj .L dla systemów ELF lub L dla tradycyjnych systemów a.out.

--listing-lhs-width=number

Ustaw maksymalną szerokość (słownie) kolumny danych wyjściowych dla listingu asemblera na liczba.

--listing-lhs-width2=number

Ustaw maksymalną szerokość (słownie) kolumny danych wyjściowych dla linii kontynuacji w listingu asemblera na liczba.

--listing-rhs-width=number

Ustaw maksymalną szerokość linii źródła wejściowego, tak jak jest to wyświetlane na liście, na liczbę bajtów.

--listing-cont-lines=number

Ustaw maksymalną liczbę wierszy drukowanych na liście dla pojedynczego wiersza danych wejściowych na liczba + 1.

--multibyte-handling=allow
--multibyte-handling=warn
--multibyte-handling=warn-sym-only
--multibyte-handling=warn_sym_only

Kontroluje sposób, w jaki asembler obsługuje znaki wielobajtowe na wejściu. Ustawieniem domyślnym (które można przywrócić za pomocą argumentu allow) jest zezwalanie na takie znaki bez reklamacji. Użycie argumentu warn sprawi, że asembler wygeneruje komunikat ostrzegawczy za każdym razem, gdy napotkany zostanie jakikolwiek znak wielobajtowy. Użycie argumentu warn-sym-only spowoduje wygenerowanie ostrzeżenia tylko wtedy, gdy symbol jest zdefiniowany z nazwą zawierającą znaki wielobajtowe. (Odniesienia do niezdefiniowanych symboli nie będą generować ostrzeżenia).

--no-pad-sections

Zatrzymaj asembler w celu wypełnienia końców sekcji wyjściowych w celu wyrównania tej sekcji. Domyślnym ustawieniem jest wypełnienie sekcji, ale może to spowodować marnowanie miejsca, które może być potrzebne w przypadku elementów docelowych, które mają ograniczone ograniczenia pamięci.

-o objfile

Nazwij wyjście pliku obiektowego z jako objfile.

-R

Złóż sekcję danych do sekcji tekstowej.

--reduce-memory-overheads

Ignorowane. Obsługiwane w celu zapewnienia zgodności z narzędziami, które udostępniają tę samą opcję zarówno asemblerowi, jak i konsolidatorowi.

--sectname-subst

Honoruj sekwencje podstawień w nazwach sekcji.

--size-check=error
--size-check=warning

Wygeneruj błąd lub ostrzeżenie dla nieprawidłowej dyrektywy ELF .size.

--statistics

Wydrukuj maksymalne miejsce (w bajtach) i całkowity czas (w sekundach) używane przez asembler.

--strip-local-absolute

Usuń lokalne symbole bezwzględne z wychodzącej tablicy symboli.

-v
-version

Wydrukuj wersję jako.

--version

Wydrukuj wersję jako i wyjdź.

-W
--no-warn

Pomiń komunikaty ostrzegawcze.

--fatal-warnings

Traktuj ostrzeżenia jako błędy.

--warn

Nie pomijaj komunikatów ostrzegawczych ani nie traktuj ich jako błędów.

-w

Ignorowane.

-x

Ignorowane.

-Z

Generuj plik obiektowy nawet po wystąpieniu błędów.

-- | files ...

Standardowe wejście lub pliki źródłowe do złożenia.

Następujące opcje są dostępne, gdy skonfigurowano tryb 64-bitowy architektury ARM (AArch64).

-EB

Ta opcja określa, że wyjście generowane przez asembler powinno być oznaczone jako zakodowane dla procesora big-endian.

-EL

Ta opcja określa, że wyjście generowane przez asembler powinno być oznaczone jako zakodowane dla procesora little-endian.

-mabi=abi

Określ, którego ABI używa kod źródłowy. Rozpoznawane argumenty to: ilp32 i lp64, które decydują o wygenerowaniu pliku obiektowego odpowiednio w formacie ELF32 i ELF64. Wartość domyślna to lp64.

-mcpu=processor[+extension...]

Ta opcja określa procesor docelowy. Asembler wyda komunikat o błędzie, jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana na docelowym procesorze. Rozpoznawane są następujące nazwy procesorów: 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 i cortex-x2.

Specjalna nazwa all może być użyta, aby zezwolić asemblerowi na zaakceptowanie instrukcji ważnych dla dowolnego obsługiwanego procesora, w tym wszystkich opcjonalnych rozszerzeń. Oprócz podstawowego zestawu instrukcji asemblerowi można powiedzieć, aby zaakceptował lub ograniczył różne mnemoniki rozszerzeń, które rozszerzają procesor. Jeśli niektóre implementacje konkretnego procesora mogą mieć rozszerzenie, to te rozszerzenia są automatycznie włączane. W związku z tym zwykle nie trzeba określać żadnych dodatkowych rozszerzeń.

-march=architecture[+extension...]

Ta opcja określa architekturę docelową. Asembler wyda komunikat o błędzie, jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana w docelowej architekturze. Rozpoznawane są następujące nazwy 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 i armv9.3-a. Jeśli podano zarówno -mcpu, jak i -march, asembler użyje ustawienia dla -mcpu. Jeśli żadne z nich nie zostanie określone, asembler domyślnie ustawi -mcpu=all. Opcję architektury można rozszerzyć o te same opcje rozszerzenia zestawu instrukcji, co opcję -mcpu. W przeciwieństwie do -mcpu, rozszerzenia nie zawsze są domyślnie włączone,

-mverbose-error

Ta opcja włącza szczegółowe komunikaty o błędach dla gazu AArch64. Opcja jest wyłączona domyślnie.

-mno-verbose-error

Ta opcja wyłącza szczegółowe komunikaty o błędach w AArch64 gas.

Następujące opcje są dostępne, gdy konfiguracja jest taka, jak dla procesora Alpha.

-mcpu

Ta opcja określa procesor docelowy. Jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana na docelowym procesorze, asembler może albo rozszerzyć instrukcję jako makro, albo wysłać komunikat o błędzie. Ta opcja jest odpowiednikiem dyrektywy .arch. Rozpoznawane są następujące nazwy procesorów: 21064, 21064a, 21066, 21068, 21164, 21164a, 21164pc, 21264, 21264a, 21264b, ev4, ev5, lca45, ev5, ev56, pca56 , ev6, ev67, ev68. Specjalna nazwa all może być użyta, aby umożliwić asemblerowi zaakceptowanie instrukcji ważnych dla dowolnego procesora Alpha. Aby wesprzeć istniejącą praktykę w OSF/1 w odniesieniu do .arch i istniejącą praktykę w ramach MILO (program ładujący Linux ARC), ponumerowane nazwy procesorów (np. 21064) włączają specyficzne dla procesora instrukcje PALcode, podczas gdy nazwy electro-vlasic (np. ev4) nie.

-mdebug
-no-mdebug

Włącza lub wyłącza generowanie enkapsulacji .mdebug dla dyrektyw stabs i deskryptorów procedur. Domyślnym ustawieniem jest automatyczne włączenie .mdebug, gdy zostanie wyświetlona pierwsza dyrektywa stabs.

-relax

Ta opcja wymusza umieszczenie wszystkich relokacji w pliku obiektowym, zamiast oszczędzać miejsce i rozwiązywać niektóre relokacje w czasie montażu. Należy zauważyć, że ta opcja nie propaguje całej arytmetyki symboli do pliku obiektowego, ponieważ nie wszystkie arytmetyki symboli mogą być reprezentowane. Jednak opcja może być nadal przydatna w określonych aplikacjach.

-replace
-noreplace

Włącza lub wyłącza optymalizację wywołań procedur, zarówno podczas składania, jak iw czasie łączenia. Te opcje są dostępne tylko dla celów VMS, a -replace jest wartością domyślną. Zobacz sekcję 1.4.1 podręcznika OpenVMS Linker Utility Manual.

-g

Ta opcja jest używana, gdy kompilator generuje informacje debugowania. Kiedy gcc używa mips-tfile do generowania informacji debugowania dla ECOFF, lokalne etykiety muszą być przekazywane do pliku obiektowego. W przeciwnym razie ta opcja nie ma żadnego efektu.

-Gsize

Lokalny wspólny symbol większy niż rozmiar jest umieszczany w .bss, podczas gdy mniejsze symbole są umieszczane w .sbss.

-F
-32addr

Te opcje są ignorowane ze względu na kompatybilność wsteczną.

Następujące opcje są dostępne, gdy jest skonfigurowane dla procesora ARC.

-mcpu=cpu

Ta opcja wybiera wariant procesora lokalnego.

-EB | -EL

Wybierz wyjście big-endian (-EB) lub little-endian (-EL).

-mcode-density

Włącz instrukcje rozszerzenia Code Density.

Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów ARM.

-mcpu=processor[+extension...]

Określ, który wariant procesora ARM jest celem.

-march=architecture[+extension...]

Określ, który wariant architektury ARM jest używany przez cel.

-mfpu=floating-point-format

Wybierz, która architektura zmiennoprzecinkowa jest celem.

-mfloat-abi=abi

Wybierz, który zmiennoprzecinkowy ABI jest używany.

-mthumb

Włącz dekodowanie instrukcji tylko za pomocą kciuka.

-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant

Wybierz, która konwencja wywoływania procedur jest używana.

-EB | -EL

Wybierz wyjście big-endian (-EB) lub little-endian (-EL).

-mthumb-interwork

Określ, że kod został wygenerowany z myślą o współdziałaniu między kodem Thumb i ARM.

-mccs

Włącza tryb zgodności składni zestawu CodeComposer Studio.

-k

Określ, czy kod PIC został wygenerowany.

Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów Blackfin.

-mcpu=processor[-sirevision]

Ta opcja określa procesor docelowy. Opcjonalne sirevision nie jest używane w asemblerze. Jest tutaj tak, że GCC może łatwo przekazać swoją opcję -mcpu=. Asembler wyda komunikat o błędzie, jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana na docelowym procesorze. Rozpoznawane są następujące nazwy procesorów: bf504, bf506, bf512, bf514, bf516 >, bf518, bf522, bf523, bf524, bf525, bf526, bf527, bf531, bf532, bf533, bf534 , bf535 (jeszcze nie zaimplementowany), bf536, bf537, bf538, bf539 , bf542, bf542m, bf544, bf544m, bf547, bf547m , bf548, bf548m, bf549, bf549m, bf561, i bf592.

-mfdpic

Zbierz się na FDPIC ABI.

-mno-fdpic
-mnopic

Wyłącz -mfdpic.

Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów BPF jądra systemu Linux.

@chapter Funkcje zależne od BPF

Opcje

-EB

Ta opcja określa, że asembler powinien emitować eBPF typu big-endian.

-EL

Ta opcja określa, że asembler powinien emitować eBPF z little-endian.

Należy zauważyć, że jeśli w wierszu poleceń nie określono opcji endianness, używana jest endianness hosta. Zobacz strony informacyjne, aby zapoznać się z dokumentacją opcji specyficznych dla CRIS.

Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów C-SKY.

-march=archname

Assemble dla architektury nazwa_architektury. Opcja --help wyświetla prawidłowe wartości dla archname.

-mcpu=cpuname

Asembler dla architektury cpuname. Opcja --help wyświetla listę prawidłowych wartości dla cpuname.

-EL
-mlittle-endian

Wygeneruj wyjście little-endian.

-EB
-mbig-endian

Generuj wyjście big-endian.

-fpic
-pic

Generuj kod niezależny od pozycji.

-mljump
-mno-ljump

Włącz/wyłącz transformację krótkich instrukcji rozgałęziających jbf, jbt i jbr do jmpi. Ta opcja jest dostępna tylko dla procesorów V2. Jest ignorowany w obiektach docelowych CK801 i CK802, które nie obsługują instrukcji jmpi i jest domyślnie włączony dla innych procesorów.

-mbranch-stub
-mno-branch-stub

Przekaż relokacje R_CKCORE_PCREL_IMM26BY2 dla instrukcji bsr do konsolidatora. Ta opcja jest dostępna tylko dla gołych metalowych celów C-SKY V2 ELF, gdzie jest domyślnie włączona. Nie można go używać w kodzie, który będzie dynamicznie łączony z bibliotekami współdzielonymi.

-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr

Włącz/wyłącz transformację instrukcji jbsr na bsr. Ta opcja jest zawsze włączona (a -mno-force2bsr jest ignorowana) dla celów CK801/CK802. Jest również zawsze włączony, gdy działa -mbranch-stub.

-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr

Włącz/wyłącz transformację instrukcji jsri na bsr. Opcja jest wyłączona domyślnie.

-mnolrw
-mno-lrw

Włącz/wyłącz transformację instrukcji lrw na parę movih/ori.

-melrw
-mno-elrw

Włącz/wyłącz rozszerzone instrukcje lrw. Ta opcja jest domyślnie włączona dla procesorów serii CK800.

-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func

Włącz/wyłącz umieszczanie pul literałów po każdej funkcji.

-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br

Włącz/wyłącz umieszczanie pul literałów po bezwarunkowych gałęziach. Opcja jest wyłączona domyślnie.

-mistack
-mno-istack

Włącz/wyłącz instrukcje stosu przerwań. Ta opcja jest domyślnie włączona w procesorach CK801, CK802 i CK802.

Następujące opcje jawnie włączają pewne opcjonalne instrukcje. Funkcje te są również włączane niejawnie przy użyciu -mcpu= w celu określenia procesora, który je obsługuje.

-mhard-float

Włącz twarde instrukcje float.

-mmp

Włącz instrukcje wieloprocesorowe.

-mcp

Włącz instrukcje koprocesora.

-mcache

Włącz instrukcję pobierania z wyprzedzeniem pamięci podręcznej.

-msecurity

Włącz instrukcje bezpieczeństwa C-SKY.

-mtrust

Włącz instrukcje zaufania C-SKY.

-mdsp

Włącz instrukcje DSP.

-medsp

Włącz rozszerzone instrukcje DSP.

-mvdsp

Włącz instrukcje wektora DSP.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Epiphany.

-mepiphany

Określa, że dozwolone są zarówno instrukcje 32-bitowe, jak i 16-bitowe. To jest zachowanie domyślne.

-mepiphany16

Ogranicza dozwolone instrukcje tylko do zestawu 16 bitów.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora H8/300. @chapter Funkcje zależne od H8/300

Opcje

Renesas H8/300 wersja as ma jedną zależną od maszyny opcję:

-h-tick-hex

Obsługa stałych szesnastkowych w stylu H'00 oprócz stylu 0x00.

-mach=name

Ustawia wariant maszyny H8300. Rozpoznawane są następujące nazwy maszyn: h8300h, h8300hn, h8300s, h8300sn, h8300sx i h8300sxn.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora i386.

--32 | --x32 | --64

Wybierz rozmiar słowa, 32 bity lub 64 bity. --32 oznacza architekturę Intel i386, podczas gdy --x32 i --64 oznacza architekturę AMD x86-64 z 32-bitową lub 64-bitową odpowiednio rozmiar słowa bitowego. Opcje te są dostępne tylko w formacie pliku obiektowego ELF i wymagają uwzględnienia niezbędnej obsługi BFD (na platformie 32-bitowej należy dodać opcję --enable-64-bit-bfd, aby skonfigurować włączenie użycia 64-bitowego i użyj x86-64 jako platformy docelowej).

-n

Domyślnie x86 GAS zastępuje wiele instrukcji nop używanych do wyrównania w sekcjach kodu wielobajtowymi instrukcjami nop, takimi jak leal 0(%esi,1),%esi. Ten przełącznik wyłącza optymalizację, jeśli jednobajtowy nop (0x90) jest jawnie określony jako bajt wypełnienia dla wyrównania.

--divide

Na platformach opartych na SVR4 znak / jest traktowany jako znak komentarza, co oznacza, że nie można go używać w wyrażeniach. Opcja --divide zmienia / w zwykły znak. Nie wyłącza to / na początku wiersza rozpoczynającego komentarz ani nie wpływa na używanie # do rozpoczynania komentarza.

-march=CPU[+EXTENSION...]

Ta opcja określa procesor docelowy. Asembler wyda komunikat o błędzie, jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana na docelowym procesorze. Rozpoznawane są następujące nazwy procesorów: 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 i generic64. Oprócz podstawowego zestawu instrukcji asemblerowi można powiedzieć, aby akceptował różne mnemoniki rozszerzeń. Na przykład -march=i686+sse4+vmx rozszerza i686 o sse4 i vmx.

Obecnie obsługiwane są następujące rozszerzenia: 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, < kod>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 i kłódka.

Zauważ, że te mnemoniki rozszerzeń można poprzedzić przedrostkiem no, aby odwołać odpowiednią (i dowolną zależną) funkcjonalność. Gdy dyrektywa .arch jest używana z -march, dyrektywa .arch ma pierwszeństwo.

-mtune=CPU

Ta opcja określa procesor do optymalizacji. W połączeniu z opcją -march generowane będą tylko instrukcje procesora określonego w opcji -march. Prawidłowe wartości CPU są identyczne z listą procesorów -march=CPU.

-msse2avx

Ta opcja określa, że asembler powinien kodować instrukcje SSE z prefiksem VEX.

-muse-unaligned-vector-move

Ta opcja określa, że asembler powinien zakodować ruch wektora wyrównanego jako ruch wektora niewyrównanego.

-msse-check=none
-msse-check=warning
-msse-check=error

Te opcje kontrolują, czy asembler powinien sprawdzać instrukcje SSE. -msse-check=none sprawi, że asembler nie będzie sprawdzał instrukcji SSE, co jest ustawieniem domyślnym. -msse-check=ostrzeżenie sprawi, że asembler wyda ostrzeżenie dla każdej instrukcji SSE. -msse-check=błąd spowoduje, że asembler zgłosi błąd dla dowolnej instrukcji SSE.

-mavxscalar=128
-mavxscalar=256

Te opcje kontrolują, w jaki sposób asembler powinien kodować skalarne instrukcje AVX. -mavxscalar=128 zakoduje skalarne instrukcje AVX o długości wektora 128-bitowej, co jest wartością domyślną. -mavxscalar=256 zakoduje skalarne instrukcje AVX o długości wektora 256 bitów. OSTRZEŻENIE: Nie używaj tego do kodu produkcyjnego — z powodu błędu procesora wynikowy kod może nie działać na niektórych modelach.

-mvexwig=0
-mvexwig=1

Te opcje kontrolują, w jaki sposób asembler powinien kodować instrukcje VEX ignorowane przez VEX.W (WIG). -mvexwig=0 zakoduje instrukcje WIG VEX z wartością domyślną vex.w=0. -mvexwig=1 zakoduje instrukcje WIG EVEX z vex.w=1. OSTRZEŻENIE: Nie używaj tego do kodu produkcyjnego - z powodu błędu procesora wynikowy kod może nie pracować na określonych modelach.

-mevexlig=128
-mevexlig=256
-mevexlig=512

Te opcje kontrolują, w jaki sposób asembler powinien kodować instrukcje EVEX z ignorowaną długością (LIG). -mevexlig=128 zakoduje instrukcje LIG EVEX z wektorem o długości 128 bitów, co jest wartością domyślną. -mevexlig=256 i -mevexlig=512 będą kodować instrukcje LIG EVEX z odpowiednio 256-bitową i 512-bitową długością wektora .

-mevexwig=0
-mevexwig=1

Te opcje kontrolują, w jaki sposób asembler powinien kodować instrukcje EVEX ignorowane w (WIG). -mevexwig=0 zakoduje instrukcje WIG EVEX z evex.w=0, co jest wartością domyślną. -mevexwig=1 zakoduje instrukcje WIG EVEX z evex.w=1.

-mmnemonic=att
-mmnemonic=intel

Ta opcja określa mnemonik instrukcji dla pasujących instrukcji. Dyrektywy .att_mnemonic i .intel_mnemonic będą miały pierwszeństwo.

-msyntax=att
-msyntax=intel

Ta opcja określa składnię instrukcji podczas przetwarzania instrukcji. Dyrektywy .att_syntax i .intel_syntax będą miały pierwszeństwo.

-mnaked-reg

Ta opcja określa, że rejestry nie wymagają prefiksu %. Dyrektywy .att_syntax i .intel_syntax będą miały pierwszeństwo.

-madd-bnd-prefix

Ta opcja wymusza na asemblerze dodanie przedrostka BND do wszystkich gałęzi, nawet jeśli taki przedrostek nie został jawnie określony w kodzie źródłowym.

-mno-shared

W celu ELF asembler zwykle optymalizuje relokacje inne niż PLT względem zdefiniowanych niesłabych globalnych celów gałęzi z domyślną widocznością. Opcja -mshared mówi asemblerowi, aby wygenerował kod, który może trafić do współdzielonej biblioteki, gdzie wszystkie niesłabe globalne cele gałęzi z domyślną widocznością mogą zostać wywłaszczone. Wynikowy kod jest nieco większy. Ta opcja wpływa tylko na obsługę instrukcji rozgałęzienia.

-mbig-obj

Na docelowym PE/COFF ta opcja wymusza użycie formatu dużego pliku obiektowego, który pozwala na więcej niż 32768 sekcji.

-momit-lock-prefix=no
-momit-lock-prefix=yes

Te opcje kontrolują, w jaki sposób asembler powinien kodować przedrostek blokady. Ta opcja jest pomyślana jako obejście dla procesorów, które zawodzą na prefiksie blokady. Tej opcji można bezpiecznie używać tylko na jednordzeniowych, jednowątkowych komputerach Opcja -momit-lock-prefix=yes spowoduje pominięcie wszystkich przedrostków blokady. -momit-lock-prefix=no zakoduje prefiks blokady w zwykły sposób, czyli domyślnie.

-mfence-as-lock-add=no
-mfence-as-lock-add=yes

Te opcje kontrolują jak asembler powinien kodować lfence, mfence i sfence. -mfence-as-lock-add=yes zakoduje lfence, mfence i sfence jako lock addl $0x0, (%rsp ) w trybie 64-bitowym i zablokuj addl $0x0, (%esp) w trybie 32-bitowym. -mfence-as-lock-add=no zakoduje lfence, mfence i sfence jak zwykle, co jest ustawieniem domyślnym.

-mrelax-relocations=no
-mrelax-relocations=yes

Te opcje kontrolują, czy asembler powinien generować relokacje relaksacyjne, R_386_GOT32X, w trybie 32-bitowym, czy R_X86_64_GOTPCRELX i R_X86_64_REX_GOTPCRELX, w trybie 64-bitowym. -mrelax-relocations=yes wygeneruje relaksujące relokacje. -mrelax-relocations=nie nie wygeneruje relaksacyjnych relokacji. Wartość domyślną można kontrolować za pomocą opcji konfiguracji --enable-x86-relax-relocations.

-malign-branch-boundary=NUM

Ta opcja kontroluje sposób, w jaki asembler powinien wyrównywać gałęzie z przedrostkami segmentów lub NOP. LICZBA musi być potęgą liczby 2. Powinna wynosić 0 lub nie mniej niż 16. Rozgałęzienia zostaną wyrównane w granicach LICZBA bajtów. -malign-branch-boundary=0, która jest wartością domyślną, nie wyrównuje gałęzi.

-malign-branch=TYPE[+TYPE...]

Ta opcja określa typy rozgałęzień do wyrównania. TYP to kombinacja jcc, która wyrównuje skoki warunkowe, fused, która wyrównuje połączone skoki warunkowe, jmp, która wyrównuje skoki bezwarunkowe, call, który wyrównuje wywołania, ret, który wyrównuje rets, indirect, który wyrównuje pośrednie skoki i wywołania. Wartość domyślna to -malign-branch=jcc+fused+jmp.

-malign-branch-prefix-size=NUM

Ta opcja określa maksymalną liczbę prefiksów w instrukcji wyrównania rozgałęzień. LICZBA powinna zawierać się w przedziale od 0 do 5. Wartość domyślna LICZBA to 5.

-mbranches-within-32B-boundaries

Ta opcja wyrównuje skoki warunkowe, łączone skoki warunkowe i skoki bezwarunkowe w granicach 32 bajtów z maksymalnie 5 prefiksami segmentów w instrukcji. Jest odpowiednikiem -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. Domyślnie gałęzie nie są wyrównywane.

-mlfence-after-load=no
-mlfence-after-load=yes

Te opcje kontrolują, czy asembler powinien generować instrukcje lfence po załadowaniu. -mlfence-after-load=yes wygeneruje lfence. -mlfence-after-load=no nie wygeneruje lfence, co jest ustawieniem domyślnym.

-mlfence-before-indirect-branch=none
-mlfence-before-indirect-branch=all
-mlfence-before-indirect-branch=register
-mlfence-before-indirect-branch=memory

Te opcje kontrolują, czy asembler powinien generować lfence przed pośrednimi instrukcjami near branch. -mlfence-before-indirect-branch=all wygeneruje lfence przed pośrednią blisko gałęzi przez rejestr i wyda ostrzeżenie przed pośrednią blisko gałęzi przez pamięć. Niejawnie ustawia również -mlfence-before-ret=shl, gdy nie ma wyraźnego -mlfence-before-ret=. -mlfence-before-indirect-branch=register wygeneruje flence przed pośrednim w pobliżu gałęzi przez rejestr. -mlfence-before-indirect-branch=pamięć wyświetli ostrzeżenie przed pośrednim zbliżeniem się do gałęzi przez pamięć. -mlfence-before-indirect-branch=none nie wygeneruje ostrzeżenia ani nie wygeneruje ostrzeżenia, co jest ustawieniem domyślnym. Zauważ, że lfence nie zostanie wygenerowany przed pośrednim pobliskim rozgałęzieniem przez rejestr z -mlfence-after-load=yes, ponieważ lfence zostanie wygenerowany po załadowaniu docelowego rejestru rozgałęzienia.

-mlfence-before-ret=none
-mlfence-before-ret=shl
-mlfence-before-ret=or
-mlfence-before-ret=yes
-mlfence-before-ret=not

Te opcje kontrolują, czy asembler powinien generować lfence przed ret. -mlfence-before-ret=lub wygeneruje generację lub instrukcję z lfence. -mlfence-before-ret=shl/yes wygeneruje instrukcję shl z lfence. -mlfence-before-ret=not nie wygeneruje instrukcji z lfence. -mlfence-before-ret=none nie wygeneruje lfence, co jest ustawieniem domyślnym.

-mx86-used-note=no
-mx86-used-note=yes

Te opcje kontrolują, czy asembler powinien generować informacje o właściwościach GNU_PROPERTY_X86_ISA_1_USED i GNU_PROPERTY_X86_FEATURE_2_USED. Wartość domyślną można kontrolować za pomocą opcji konfiguracyjnej --enable-x86-used-note.

-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz

Te opcje kontrolują, w jaki sposób asembler powinien kodować instrukcje EVEX tylko dla SAE. -mevexrcig=rne zakoduje bity RC instrukcji EVEX z wartością 00, która jest wartością domyślną. -mevexrcig=rd, -mevexrcig=ru i -mevexrcig=rz zakoduje instrukcje EVEX tylko dla SAE z odpowiednio 01, 10 i 11 bitami RC.

-mamd64
-mintel64

Ta opcja określa, że asembler powinien akceptować tylko AMD64 lub Intel64 ISA w trybie 64-bitowym. Domyślnie akceptowane są wspólne, tylko Intel64 i AMD64 ISA.

-O0 | -O | -O1 | -O2 | -Os

Zoptymalizuj kodowanie instrukcji przy mniejszym rozmiarze instrukcji. -O i -O1 kodują 64-bitowe instrukcje ładowania rejestru z 64-bitowymi natychmiastami jako 32-bitowe instrukcje ładowania rejestru z 31-bitowymi lub 32-bitowymi natychmiastami, kodują 64 -bitowe instrukcje kasowania rejestrów z 32-bitowymi instrukcjami kasowania rejestrów, kodowanie instrukcji kasowania 256-bitowych/512-bitowych rejestrów wektorowych VEX/EVEX z instrukcjami kasowania 128-bitowych rejestrów wektorowych VEX, kodowanie obciążenia rejestru wektorowego 128-bit/256-bit EVEX /store instrukcje z instrukcjami ładowania/przechowywania rejestru wektorowego VEX i kodowanie 128-bitowych/256-bitowych upakowanych instrukcji logicznych EVEX z 128-bitowymi/256-bitowymi logicznymi liczbami całkowitymi VEX. -O2 obejmuje optymalizację -O1 oraz koduje instrukcje czyszczenia 256-bitowych/512-bitowych rejestrów wektorowych EVEX z instrukcjami czyszczenia 128-bitowych rejestrów wektorowych EVEX. W trybie 64-bitowym instrukcje zakodowane w VEX z przemiennymi operandami źródłowymi również będą miały zamienione operandy źródłowe, jeśli pozwoli to na użycie 2-bajtowej formy przedrostka VEX zamiast 3-bajtowej. Pewne formy AND oraz OR z tym samym (rejestrowym) operandem podanym dwukrotnie zostaną również zmienione na TEST. -Os obejmuje optymalizację -O2 oraz koduje testy rejestrów 16-bitowych, 32-bitowych i 64-bitowych z natychmiastowym testem rejestrów 8-bitowych z natychmiastowym testem. -O0 wyłącza tę optymalizację.

Następujące opcje są dostępne, gdy skonfigurowano je dla serii Ubicom IP2K.

-mip2022ext

Określa, że dozwolone są rozszerzone instrukcje IP2022.

-mip2022

Przywraca domyślne zachowanie, które ogranicza dozwolone instrukcje tylko do podstawowych instrukcji IP2022.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesorów Renesas M32C i M16C.

-m32c

Złóż instrukcje M32C.

-m16c

Złóż instrukcje M16C (domyślnie).

-relax

Włącz obsługę relaksacji czasu łącza.

-h-tick-hex

Obsługa stałych szesnastkowych w stylu H'00 oprócz stylu 0x00.

Następujące opcje są dostępne, gdy skonfigurowano je dla serii Renesas M32R (wcześniej Mitsubishi M32R).

--m32rx

Określ, który procesor z rodziny M32R jest celem. Domyślnie jest to zwykle M32R, ale ta opcja zmienia go na M32RX.

--warn-explicit-parallel-conflicts or --Wp

Twórz komunikaty ostrzegawcze w przypadku napotkania wątpliwych konstrukcji równoległych.

--no-warn-explicit-parallel-conflicts or --Wnp

Nie wyświetlaj komunikatów ostrzegawczych w przypadku napotkania wątpliwych konstrukcji równoległych.

Następujące opcje są dostępne, gdy skonfigurowano je dla serii Motorola 68000.

-l

Skróć odniesienia do niezdefiniowanych symboli, do jednego słowa zamiast dwóch.

-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200

Określ, który procesor z rodziny 68000 jest celem. Domyślnym ustawieniem jest zwykle 68020, ale można to zmienić podczas konfiguracji.

-m68881 | -m68882 | -mno-68881 | -mno-68882

Maszyna docelowa ma (lub nie) koprocesor zmiennoprzecinkowy. Domyślnie przyjmuje się koprocesor dla 68020, 68030 i cpu32. Chociaż podstawowy 68000 nie jest kompatybilny z 68881, można określić kombinację tych dwóch, ponieważ możliwe jest emulowanie instrukcji koprocesora z procesorem głównym.

-m68851 | -mno-68851

Maszyna docelowa ma (lub nie) koprocesor jednostki zarządzania pamięcią. Domyślnie przyjmuje się MMU dla 68020 i nowszych.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Altera Nios II.

-relax-section

Jeśli to możliwe, zastąp zidentyfikowane gałęzie poza zasięgiem sekwencjami jmp zależnymi od komputera. Wygenerowane sekwencje kodu nadają się do użycia w kodzie niezależnym od pozycji, ale istnieje praktyczne ograniczenie rozszerzonego zakresu rozgałęzień ze względu na długość sekwencji. Ta opcja jest domyślna.

-relax-all

Zastąp instrukcje rozgałęzienia, których nie można określić jako będące w zasięgu, a wszystkie instrukcje wywołania sekwencjami jmp i callr (odpowiednio). Ta opcja generuje relokacje bezwzględne względem symboli docelowych i nie jest odpowiednia dla kodu niezależnego od pozycji.

-no-relax

Nie zastępuj żadnych oddziałów ani połączeń.

-EB

Generuj wyjście big-endian.

-EL

Wygeneruj wyjście little-endian. To jest ustawienie domyślne.

-march=architecture

Ta opcja określa architekturę docelową. Asembler wyświetla komunikat o błędzie, jeśli podjęta zostanie próba złożenia instrukcji, która nie zostanie wykonana w docelowej architekturze. Rozpoznawane są następujące nazwy architektur: r1, r2. Wartość domyślna to r1.

Następujące opcje są dostępne, gdy jest skonfigurowany dla procesora PRU.

-mlink-relax

Załóżmy, że LD optymalizuje instrukcje LDI32, sprawdzając górne 16 bitów wyrażenia. Jeśli wszystkie są zerami, to LD skróciłoby instrukcję LDI32 do pojedynczego LDI. W takim przypadku as wyświetli relokacje DIFF dla wyrażeń diff.

-mno-link-relax

Załóżmy, że LD nie optymalizuje instrukcji LDI32. W konsekwencji relokacje DIFF nie będą emitowane.

-mno-warn-regname-label

Nie ostrzegaj, jeśli nazwa etykiety pasuje do nazwy rejestru. Zwykle programiści asemblera będą chcieli, aby to ostrzeżenie zostało wyemitowane. Kompilatory C mogą chcieć to wyłączyć.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora MIPS.

-G num

Ta opcja ustawia największy rozmiar obiektu, do którego można się pośrednio odwoływać za pomocą rejestru gp. Jest akceptowane tylko dla celów, które używają formatu ECOFF, takich jak DECstation z systemem Ultrix. Wartość domyślna to 8.

-EB

Generuj dane wyjściowe w formacie big endian.

-EL

Wygeneruj dane wyjściowe w formacie little endian.

-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips32r3
-mips32r5
-mips32r6
-mips64
-mips64r2
-mips64r3
-mips64r5
-mips64r6

Wygeneruj kod dla określonego poziomu architektury zestawu instrukcji MIPS. -mips1 to alias dla -march=r3000, -mips2 to alias dla -march=r6000, -mips3 to alias dla -march=r4000, a -mips4 to alias dla -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5, i -mips64r6 odpowiadają rodzajowym 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 i MIPS64 Wypuść odpowiednio 6 procesorów ISA.

-march=cpu

Wygeneruj kod dla określonego procesora MIPS.

-mtune=cpu

Zaplanuj i dostrój dla konkretnego procesora MIPS.

-mfix7000
-mno-fix7000

Spowoduj wstawienie nopów, jeśli odczyt rejestru docelowego instrukcji mfhi lub mflo nastąpi w kolejnych dwóch instrukcjach.

-mfix-rm7000
-mno-fix-rm7000

Powoduje wstawienie nops, jeśli po instrukcji dmult lub dmultu następuje instrukcja load.

-mfix-r5900
-mno-fix-r5900

Nie próbuj umieszczać poprzedniej instrukcji w gnieździe opóźnienia instrukcji rozgałęzienia umieszczonej na końcu krótkiej pętli składającej się z sześciu lub mniej instrukcji i zawsze umieszczaj tam instrukcję nop. Błąd krótkiej pętli w pewnych warunkach powoduje, że pętle są wykonywane tylko raz lub dwa razy, z powodu błędu sprzętowego w układzie R5900.

-mdebug
-no-mdebug

Powoduje, że dane wyjściowe debugowania w stylu stabs trafiają do sekcji .mdebug w stylu ECOFF zamiast standardowych sekcji .stabs ELF.

-mpdr
-mno-pdr

Sterowanie generowaniem sekcji .pdr.

-mgp32
-mfp32

Rozmiary rejestrów są zwykle wywnioskowane z ISA i ABI, ale te flagi wymuszają traktowanie określonej grupy rejestrów jako 32-bitowych przez cały czas. -mgp32 kontroluje rozmiar rejestrów ogólnego przeznaczenia, a -mfp32 kontroluje rozmiar rejestrów zmiennoprzecinkowych.

-mgp64
-mfp64

Rozmiary rejestrów są zwykle określane na podstawie ISA i ABI, ale te flagi wymuszają traktowanie określonej grupy rejestrów jako 64-bitowych przez cały czas. -mgp64 kontroluje rozmiar rejestrów ogólnego przeznaczenia, a -mfp64 kontroluje rozmiar rejestrów zmiennoprzecinkowych.

-mfpxx

Rozmiary rejestrów są zwykle wywnioskowane z ISA i ABI, ale użycie tej flagi w połączeniu z -mabi=32 umożliwia wariant ABI, który będzie działał poprawnie z rejestrami zmiennoprzecinkowymi o szerokości 32 lub 64 bitów .

-modd-spreg
-mno-odd-spreg

Włącz użycie operacji zmiennoprzecinkowych na nieparzystych rejestrach pojedynczej precyzji, jeśli jest to obsługiwane przez ISA. -mfpxx implikuje -mno-odd-spreg, w przeciwnym razie wartością domyślną jest -modd-spreg.

-mips16
-no-mips16

Wygeneruj kod dla procesora MIPS 16. Jest to równoważne z umieszczeniem .module mips16 na początku pliku asemblera. -no-mips16 wyłącza tę opcję.

-mmips16e2
-mno-mips16e2

Włącz użycie instrukcji MIPS16e2 w trybie MIPS16. Jest to równoważne z umieszczeniem .module mips16e2 na początku pliku asemblera. -mno-mips16e2 wyłącza tę opcję.

-mmicromips
-mno-micromips

Wygeneruj kod dla procesora microMIPS. Jest to równoważne z umieszczeniem .module micromips na początku pliku asemblera. -mno-micromips wyłącza tę opcję. Jest to równoważne z umieszczeniem .module nomicromips na początku pliku asemblera.

-msmartmips
-mno-smartmips

Włącza rozszerzenie SmartMIPS do zestawu instrukcji MIPS32. Jest to równoważne z umieszczeniem .module smartmips na początku pliku asemblera. -mno-smartmips wyłącza tę opcję.

-mips3d
-no-mips3d

Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MIPS-3D. Mówi to asemblerowi, aby zaakceptował instrukcje MIPS-3D. -no-mips3d wyłącza tę opcję.

-mdmx
-no-mdmx

Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MDMX. Mówi to asemblerowi, aby zaakceptował instrukcje MDMX. -no-mdmx wyłącza tę opcję.

-mdsp
-mno-dsp

Wygeneruj kod dla rozszerzenia aplikacji DSP Release 1. Mówi to asemblerowi, aby zaakceptował instrukcje DSP Release 1. -mno-dsp wyłącza tę opcję.

-mdspr2
-mno-dspr2

Wygeneruj kod dla rozszerzenia aplikacji DSP w wersji 2. Ta opcja implikuje -mdsp. Mówi to asemblerowi, aby zaakceptował instrukcje DSP Release 2. -mno-dspr2 wyłącza tę opcję.

-mdspr3
-mno-dspr3

Wygeneruj kod dla rozszerzenia aplikacji DSP Release 3. Ta opcja oznacza -mdsp i -mdspr2. Mówi to asemblerowi, aby zaakceptował instrukcje DSP Release 3. -mno-dspr3 wyłącza tę opcję.

-mmsa
-mno-msa

Wygeneruj kod dla rozszerzenia architektury MIPS SIMD. To mówi asemblerowi, aby zaakceptował instrukcje MSA. -mno-msa wyłącza tę opcję.

-mxpa
-mno-xpa

Wygeneruj kod dla rozszerzenia MIPS eXtended Physical Address (XPA). Mówi to asemblerowi, aby zaakceptował instrukcje XPA. -mno-xpa wyłącza tę opcję.

-mmt
-mno-mt

Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MT. Mówi to asemblerowi, aby zaakceptował instrukcje MT. -mno-mt wyłącza tę opcję.

-mmcu
-mno-mcu

Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MCU. Mówi to asemblerowi, aby zaakceptował instrukcje MCU. -mno-mcu wyłącza tę opcję.

-mcrc
-mno-crc

Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji cyklicznej kontroli redundancji (CRC) MIPS. Mówi to asemblerowi, aby zaakceptował instrukcje CRC. -mno-crc wyłącza tę opcję.

-mginv
-mno-ginv

Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji Global INValidate (GINV). Mówi to asemblerowi, aby zaakceptował instrukcje GINV. -mno-ginv wyłącza tę opcję.

-mloongson-mmi
-mno-loongson-mmi

Wygeneruj kod dla rozszerzenia Loongson MultiMedia Extensions Instructions (MMI) Application Specific Extension. Mówi to asemblerowi, aby zaakceptował instrukcje MMI. -mno-loongson-mmi wyłącza tę opcję.

-mloongson-cam
-mno-loongson-cam

Wygeneruj kod dla instrukcji Loongson Content Address Memory (CAM). To mówi asemblerowi, aby zaakceptował instrukcje Loongson CAM. -mno-loongson-cam wyłącza tę opcję.

-mloongson-ext
-mno-loongson-ext

Wygeneruj kod dla instrukcji Loongson EXTension (EXT). To mówi asemblerowi, aby zaakceptował instrukcje Loongson EXT. -mno-loongson-ext wyłącza tę opcję.

-mloongson-ext2
-mno-loongson-ext2

Wygeneruj kod dla instrukcji Loongson EXTension R2 (EXT2). Ta opcja implikuje -mloongson-ext. To mówi asemblerowi, aby zaakceptował instrukcje Loongson EXT2. -mno-loongson-ext2 wyłącza tę opcję.

-minsn32
-mno-insn32

Używaj tylko 32-bitowego kodowania instrukcji podczas generowania kodu dla procesora microMIPS. Ta opcja blokuje użycie instrukcji 16-bitowych. Jest to równoważne z umieszczeniem .set insn32 na początku pliku asemblera. -mno-insn32 wyłącza tę opcję. Jest to równoważne z umieszczeniem .set noinsn32 na początku pliku asemblera. Domyślnie wybrane jest -mno-insn32, co pozwala na użycie wszystkich instrukcji.

--construct-floats
--no-construct-floats

Opcja --no-construct-floats wyłącza konstruowanie stałych zmiennoprzecinkowych o podwójnej szerokości, ładując dwie połówki wartości do dwóch rejestrów zmiennoprzecinkowych o pojedynczej szerokości, które tworzą rejestr o podwójnej szerokości. Domyślnie wybrana jest opcja --construct-floats, co pozwala na konstruowanie tych stałych zmiennoprzecinkowych.

--relax-branch
--no-relax-branch

Opcja --relax-branch umożliwia rozluźnienie gałęzi poza zasięgiem. Domyślnie wybrana jest opcja --no-relax-branch, co powoduje, że wszelkie gałęzie spoza zakresu powodują błąd.

-mignore-branch-isa
-mno-ignore-branch-isa

Ignoruj kontrole rozgałęzień pod kątem nieprawidłowych przejść między trybami ISA. Semantyka gałęzi nie przewiduje przełączania trybu ISA, więc w większości przypadków tryb ISA, dla którego zakodowano gałąź, musi być taki sam, jak tryb ISA docelowej etykiety gałęzi. Dlatego GAS ma zaimplementowane kontrole, które sprawdzają w zespole gałęzi, czy dwa tryby ISA są zgodne. -mignore-branch-isa wyłącza te kontrole. Domyślnie wybrana jest opcja -mno-ignore-branch-isa, co powoduje, że każda nieprawidłowa gałąź wymagająca przejścia między trybami ISA powoduje błąd.

-mnan=encoding

Wybierz format kodowania NaN IEEE 754-2008 (-mnan=2008) lub starszy (-mnan=legacy). Ten ostatni jest domyślny.

--emulation=name

Ta opcja była wcześniej używana do przełączania między wyjściem ELF i ECOFF na urządzeniach docelowych, takich jak IRIX 5, które obsługiwały oba. Obsługa MIPS ECOFF została usunięta w GAS 2.24, więc ta opcja ma teraz niewielkie znaczenie. Jest on zachowywany w celu zapewnienia kompatybilności wstecznej. Dostępne nazwy konfiguracji to: mipself, mipslelf i mipsbelf. Wybranie mipself nie ma teraz żadnego efektu, ponieważ wyjściem jest zawsze ELF. mipslelf i mipsbelf wybierają odpowiednio wyjście little- i big-endian, ale -EL i -EB są teraz zamiast tego preferowane opcje.

-nocpp

jak ignoruje tę opcję. Jest akceptowany ze względu na kompatybilność z natywnymi narzędziami.

--trap
--no-trap
--break
--no-break

Kontroluj, jak radzić sobie z przepełnieniem mnożenia i dzieleniem przez zero. --trap lub --no-break (które są synonimami) przyjmują wyjątek pułapki (i działają tylko dla architektury zestawu instrukcji poziomu 2 i wyższych); --break lub --no-trap (również synonimy i ustawienie domyślne) przyjmuje wyjątek break.

-n

Kiedy ta opcja jest używana, as wyświetli ostrzeżenie za każdym razem, gdy wygeneruje instrukcję nop z makra.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora LoongArch.

-fpic
-fPIC

Generuj kod niezależny od pozycji

-fno-pic

Nie generuj kodu niezależnego od pozycji (domyślnie)

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Meta.

"-mcpu=metac11"

Wygeneruj kod dla Meta 1.1.

"-mcpu=metac12"

Wygeneruj kod dla Meta 1.2.

"-mcpu=metac21"

Wygeneruj kod dla Meta 2.1.

"-mfpu=metac21"

Zezwalaj kodowi na używanie sprzętu FPU Meta 2.1.

Zobacz strony informacyjne, aby zapoznać się z dokumentacją opcji specyficznych dla MMIX.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora NDS32.

"-O1"

Optymalizuj pod kątem wydajności.

"-Os"

Zoptymalizuj pod kątem miejsca.

"-EL"

Wygeneruj dane wyjściowe little endian.

"-EB"

Wygeneruj dane wyjściowe little endian.

"-mpic"

Wygeneruj PIC.

"-mno-fp-as-gp-relax"

Pomiń relaksację fp-as-gp dla tego pliku.

"-mb2bb-relax"

Optymalizacja oddziałów back-to-back.

"-mno-all-relax"

Pomiń wszystkie relaksacje dla tego pliku.

"-march=<arch name>"

Złóż dla architektury , która może być v3, v3j, v3m, v3f, v3s, v2, v2j, v2f, v2s.

"-mbaseline=<baseline>"

Zbierz dla linii bazowej , która może być v2, v3, v3m.

"-mfpu-freg=FREG"

Określ konfigurację FPU.

"0 8 SP / 4 DP registers"
"1 16 SP / 8 DP registers"
"2 32 SP / 16 DP registers"
"3 32 SP / 32 DP registers"
"-mabi=abi"

Określ wersję abi może to być v1, v2, v2fp, v2fpp.

"-m[no-]mac"

Włącz/wyłącz obsługę instrukcji mnożenia.

"-m[no-]div"

Włącz/wyłącz obsługę instrukcji dzielenia.

"-m[no-]16bit-ext"

Włącz/wyłącz rozszerzenie 16-bitowe

"-m[no-]dx-regs"

Włącz/wyłącz rejestry d0/d1

"-m[no-]perf-ext"

Włącz/wyłącz rozszerzenie wydajności

"-m[no-]perf2-ext"

Włącz/wyłącz rozszerzenie wydajności 2

"-m[no-]string-ext"

Włącz/wyłącz rozszerzenie ciągu

"-m[no-]reduced-regs"

Włącz/wyłącz opcję konfiguracji ograniczonego rejestru (GPR16).

"-m[no-]audio-isa-ext"

Włącz/wyłącz rozszerzenie AUDIO ISA

"-m[no-]fpu-sp-ext"

Włącz/wyłącz rozszerzenie FPU SP

"-m[no-]fpu-dp-ext"

Włącz/wyłącz rozszerzenie FPU DP

"-m[no-]fpu-fma"

Włącz/wyłącz instrukcje FPU z mnożeniem i dodawaniem

"-mall-ext"

Włącz obsługę wszystkich rozszerzeń i instrukcji

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora PowerPC.

-a32

Wygeneruj ELF32 lub XCOFF32.

-a64

Wygeneruj ELF64 lub XCOFF64.

-K PIC

Ustaw EF_PPC_RELOCATABLE_LIB we flagach ELF.

-mpwrx | -mpwr2

Wygeneruj kod dla POWER/2 (RIOS2).

-mpwr

Wygeneruj kod dla POWER (RIOS1)

-m601

Wygeneruj kod dla PowerPC 601.

-mppc, -mppc32, -m603, -m604

Wygeneruj kod dla PowerPC 603/604.

-m403, -m405

Wygeneruj kod dla PowerPC 403/405.

-m440

Wygeneruj kod dla PowerPC 440. BookE i kilka instrukcji 405.

-m464

Wygeneruj kod dla PowerPC 464.

-m476

Wygeneruj kod dla PowerPC 476.

-m7400, -m7410, -m7450, -m7455

Wygeneruj kod dla PowerPC 7400/7410/7450/7455.

-m750cl, -mgekko, -mbroadway

Wygeneruj kod dla PowerPC 750CL/Gekko/Broadway.

-m821, -m850, -m860

Wygeneruj kod dla PowerPC 821/850/860.

-mppc64, -m620

Wygeneruj kod dla PowerPC 620/625/630.

-me200z2, -me200z4

Wygeneruj kod dla wariantów e200, e200z2 z LSP, e200z4 z SPE.

-me300

Wygeneruj kod dla rodziny PowerPC e300.

-me500, -me500x2

Wygeneruj kod dla Motorola e500 core complex.

-me500mc

Wygeneruj kod dla kompleksu rdzenia Freescale e500mc.

-me500mc64

Wygeneruj kod dla kompleksu rdzenia Freescale e500mc64.

-me5500

Wygeneruj kod dla kompleksu rdzeniowego Freescale e5500.

-me6500

Wygeneruj kod dla kompleksu rdzenia Freescale e6500.

-mlsp

Włącz instrukcje LSP. (Wyłącza SPE i SPE2.)

-mspe

Wygeneruj kod dla instrukcji Motorola SPE. (Wyłącza LSP.)

-mspe2

Wygeneruj kod dla instrukcji Freescale SPE2. (Wyłącza LSP.)

-mtitan

Wygeneruj kod dla kompleksu rdzenia AppliedMicro Titan.

-mppc64bridge

Wygeneruj kod dla PowerPC 64, w tym bridge insns.

-mbooke

Wygeneruj kod dla 32-bitowej wersji BookE.

-ma2

Wygeneruj kod dla architektury A2.

-maltivec

Generuj kod dla procesorów za pomocą instrukcji AltiVec.

-mvle

Wygeneruj kod dla instrukcji Freescale PowerPC VLE.

-mvsx

Generuj kod dla procesorów za pomocą instrukcji Vector-Scalar (VSX).

-mhtm

Generuj kod dla procesorów za pomocą instrukcji Hardware Transactional Memory.

-mpower4, -mpwr4

Wygeneruj kod dla architektury Power4.

-mpower5, -mpwr5, -mpwr5x

Wygeneruj kod dla architektury Power5.

-mpower6, -mpwr6

Wygeneruj kod dla architektury Power6.

-mpower7, -mpwr7

Wygeneruj kod dla architektury Power7.

-mpower8, -mpwr8

Wygeneruj kod dla architektury Power8.

-mpower9, -mpwr9

Wygeneruj kod dla architektury Power9.

-mpower10, -mpwr10

Wygeneruj kod dla architektury Power10.

-mfuture

Wygeneruj kod dla „przyszłej” architektury.

-mcell
-mcell

Wygeneruj kod dla architektury Cell Broadband Engine.

-mcom

Wygeneruj kod wspólne instrukcje Power/PowerPC.

-many

Generuj kod dla dowolnej architektury (PWR/PWRX/PPC).

-mregnames

Zezwalaj na nazwy symboliczne dla rejestrów.

-mno-regnames

Nie zezwalaj na nazwy symboliczne dla rejestrów.

-mrelocatable

Obsługa opcji -mrelocatable GCC.

-mrelocatable-lib

Obsługa opcji -mrelocatable-lib GCC.

-memb

Ustaw bit PPC_EMB we flagach ELF.

-mlittle, -mlittle-endian, -le

Wygeneruj kod dla maszyny little endian.

-mbig, -mbig-endian, -be

Wygeneruj kod dla maszyny big endian.

-msolaris

Wygeneruj kod dla Solarisa.

-mno-solaris

Nie generuj kodu dla Solarisa.

-nops=count

Jeśli dyrektywa wyrównania wstawia więcej nopów niż count, umieść gałąź na początku, aby pominąć wykonywanie nopów.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora RISC-V.

-fpic
-fPIC

Generuj kod niezależny od pozycji

-fno-pic

Nie generuj kodu niezależnego od pozycji (domyślnie)

-march=ISA

Wybierz podstawową wartość isa określoną przez ISA. Na przykład -march=rv32ima. Jeśli ta opcja i atrybuty architektury nie są ustawione, asembler sprawdzi domyślne ustawienie konfiguracji --with-arch=ISA.

-misa-spec=ISAspec

Wybierz domyślną wersję specyfikacji isa. Jeśli wersja ISA nie zostanie ustawiona do -march, wówczas asembler pomoże ustawić wersję zgodnie z domyślną wybraną specyfikacją. Jeśli ta opcja nie jest ustawiona, asembler sprawdzi domyślne ustawienie konfiguracji --with-isa-spec=ISAspec.

-mpriv-spec=PRIVspec

Wybierz uprzywilejowaną wersję specyfikacji. Możemy zdecydować, czy CSR jest ważny, czy nie, zgodnie z wybraną specyfikacją. Jeśli ta opcja i atrybuty uprawnień nie są ustawione, asembler sprawdzi domyślne ustawienie konfiguracji --with-priv-spec=PRIVspec.

-mabi=ABI

Wybiera ABI, którym jest albo ilp32, albo lp64, po którym opcjonalnie następuje f, d lub q, aby wskazać konwencję wywoływania zmiennoprzecinkowego pojedynczej precyzji, podwójnej precyzji lub poczwórnej precyzji, albo brak, aby wskazać konwencję wywoływania zmiennoprzecinkowego . Opcjonalnie po ilp32 może następować e, aby wskazać RVE ABI, które zawsze jest płynne.

-mrelax

Skorzystaj z relaksacji łącznika, aby zmniejszyć liczbę instrukcji wymaganych do zmaterializowania adresów symboli. (domyślny)

-mno-relax

Nie rób relaksacji linkera.

-march-attr

Wygeneruj domyślną zawartość sekcji atrybutów riscv elf, jeśli dyrektywy .attribute nie są ustawione. Ta sekcja służy do rejestrowania informacji potrzebnych konsolidatorowi lub modułowi ładującemu do sprawdzenia zgodności. Informacje te obejmują łańcuch ISA, wymagania dotyczące wyrównania stosu, niewyrównane dostępy do pamięci oraz wersję główną, pomocniczą i poprawkową specyfikacji uprzywilejowanej.

-mno-arch-attr

Nie generuj domyślnej sekcji atrybutów riscv elf, jeśli dyrektywy .attribute nie są ustawione.

-mcsr-check

Włącz sprawdzanie CSR dla CRS zależnego od ISA i CSR tylko do odczytu. CSR zależne od ISA są ważne tylko wtedy, gdy ustawiony jest konkretny ISA. CSR tylko do odczytu nie może być zapisany przez instrukcje CSR.

-mno-csr-check

Nie sprawdzaj CSR.

-mlittle-endian

Wygeneruj kod dla maszyny little endian.

-mbig-endian

Wygeneruj kod dla maszyny big endian.

Zobacz strony informacyjne, aby zapoznać się z dokumentacją opcji specyficznych dla RX.

Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów s390.

-m31
-m64

Wybierz rozmiar słowa, 31/32 bity lub 64 bity.

-mesa
-mzarch

Wybierz tryb architektury, Enterprise System Architecture (esa) lub tryb z/Architecture (zarch).

-march=processor

Określ, który wariant procesora s390 jest celem, g5 (lub arch3), g6, z900 (lub >arch5), z990 (lub arch6), z9-109, z9-ec ( lub arch7), z10 (lub arch8), z196 (lub arch9) , zEC12 (lub arch10), z13 (lub arch11), z14 ( lub arch12), z15 (lub arch13) lub z16 (lub arch14 ).

-mregnames
-mno-regnames

Zezwalaj lub nie zezwalaj na nazwy symboliczne dla rejestrów.

-mwarn-areg-zero

Ostrzegaj za każdym razem, gdy operand dla rejestru podstawowego lub indeksowego został określony, ale ma wartość zero.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora TMS320C6000.

-march=arch

Włącz (tylko) instrukcje z architektury arch. Domyślnie wszystkie instrukcje są dozwolone. Akceptowane są następujące wartości arch: c62x, c64x, c64x+, c67x , c67x+, c674x.

-mdsbt
-mno-dsbt

Opcja -mdsbt powoduje, że asembler generuje atrybut Tag_ABI_DSBT o wartości 1, wskazując, że kod używa adresowania DSBT. Domyślna opcja -mno-dsbt powoduje, że znacznik ma wartość 0, co wskazuje, że kod nie używa adresowania DSBT. Konsolidator wyemituje ostrzeżenie, jeśli obiekty różnych typów (DSBT i inne niż DSBT) zostaną ze sobą połączone.

-mpid=no
-mpid=near
-mpid=far

Opcja -mpid= powoduje, że asembler generuje atrybut Tag_ABI_PID o wartości wskazującej formę adresowania danych używaną przez kod. -mpid=no, wartość domyślna, oznacza adresowanie danych zależne od pozycji, -mpid=near oznacza adresowanie niezależne od pozycji z dostępem GOT przy użyciu adresowania bliskiego DP, a -mpid=far oznacza adresowanie niezależne od pozycji z dostępem GOT przy użyciu adresowania dalekiego DP. Konsolidator wyemituje ostrzeżenie, jeśli obiekty zbudowane z różnymi ustawieniami tej opcji zostaną ze sobą połączone.

-mpic
-mno-pic

Opcja -mpic powoduje, że asembler generuje atrybut Tag_ABI_PIC o wartości 1, wskazując, że kod używa adresowania kodu niezależnego od pozycji. -mno Opcja -pic, domyślna, powoduje, że znacznik ma wartość 0, co wskazuje na zależne od pozycji adresowanie kodu. Konsolidator wyemituje ostrzeżenie, jeśli obiekty różnego typu (zależne od pozycji i niezależne od pozycji) są ze sobą połączone.

-mbig-endian
-mlittle-endian

Wygeneruj kod dla określonej endianności. Domyślnie jest to little-endian.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora TILE-Gx.

-m32 | -m64

Wybierz rozmiar słowa, 32 bity lub 64 bity.

-EB | -EL

Wybierz endianność, big-endian (-EB) lub little-endian (-EL).

Następująca opcja jest dostępna, gdy jest skonfigurowana dla procesora Visium.

-mtune=arch

Ta opcja określa architekturę docelową. Jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana w docelowej architekturze, asembler zgłosi komunikat o błędzie. Rozpoznawane są następujące nazwy: mcm24 mcm gr5 gr6

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Xtensa.

--text-section-literals | --no-text-section-literals

Kontroluj traktowanie pul literalnych. Wartość domyślna to --no-text-section-literals, która umieszcza literały w oddzielnych sekcjach w pliku wyjściowym. Pozwala to na umieszczenie puli literalnej w pamięci RAM/ROM danych. W przypadku --text-section-literals literały są przeplatane w sekcji tekstowej, aby były jak najbliżej swoich odniesień. Może to być konieczne w przypadku dużych plików asemblera, gdzie literały byłyby poza zakresem instrukcji L32R w sekcji tekstowej. Literały są grupowane w pule zgodnie z dyrektywami .literal_position lub przed instrukcjami ENTRY. Te opcje mają wpływ tylko na literały, do których odwołują się instrukcje L32R odnoszące się do komputera; literały dla instrukcji L32R w trybie bezwzględnym są obsługiwane oddzielnie.

--auto-litpools | --no-auto-litpools

Kontroluj traktowanie pul literalnych. Wartość domyślna to --no-auto-litpools, która w przypadku braku --text-section-literals umieszcza literały w osobnych sekcjach w pliku wyjściowym. Pozwala to na umieszczenie puli literalnej w pamięci RAM/ROM danych. W przypadku --auto-litpools literały są przeplatane w sekcji tekstowej, aby były jak najbliżej ich odniesień, wyraźne dyrektywy .literal_position nie są wymagane. Może to być konieczne w przypadku bardzo dużych funkcji, gdzie pojedyncza pula literałów na początku funkcji może nie być osiągalna przez instrukcje L32R na końcu. Te opcje mają wpływ tylko na literały, do których odwołują się instrukcje L32R odnoszące się do komputera; literały dla instrukcji L32R w trybie bezwzględnym są obsługiwane oddzielnie. W połączeniu z --text-section-literals, --auto-litpools ma pierwszeństwo.

--absolute-literals | --no-absolute-literals

Wskaż asemblerowi, czy instrukcje L32R używają adresowania bezwzględnego, czy względnego względem PC. Jeśli procesor zawiera opcję adresowania bezwzględnego, domyślnym ustawieniem jest użycie relokacji bezwzględnych L32R. W przeciwnym razie można użyć tylko relokacji L32R względem PC.

--target-align | --no-target-align

Włącz lub wyłącz automatyczne wyrównywanie, aby zmniejszyć kary za rozgałęzienia przy pewnym koszcie rozmiaru kodu. Ta optymalizacja jest domyślnie włączona. Zauważ, że asembler zawsze wyrównuje instrukcje, takie jak LOOP, które mają ustalone wymagania dotyczące wyrównania.

--longcalls | --no-longcalls

Włącz lub wyłącz transformację instrukcji połączeń, aby umożliwić połączenia w większym zakresie adresów. Tej opcji należy używać, gdy cele połączeń mogą potencjalnie znajdować się poza zasięgiem. Może to obniżyć zarówno rozmiar kodu, jak i wydajność, ale konsolidator może ogólnie zoptymalizować niepotrzebne narzuty, gdy połączenie kończy się w zasięgu. Wartość domyślna to --no-longcalls.

--transform | --no-transform

Włącz lub wyłącz wszystkie przekształcenia asemblera instrukcji Xtensa, w tym zarówno relaksację, jak i optymalizację. Wartość domyślna to --transform; --no-transform powinno być używane tylko w rzadkich przypadkach, gdy instrukcje muszą być dokładnie takie, jak określono w źródle asemblera. Użycie --no-transform powoduje, że operandy instrukcji spoza zakresu są błędami.

--rename-section oldname=newname

Zmień nazwę sekcji stara nazwa na nowa nazwa. Tej opcji można użyć wiele razy, aby zmienić nazwę wielu sekcji.

--trampolines | --no-trampolines

Włącz lub wyłącz transformację instrukcji skoku, aby umożliwić skoki przez większy zakres adresów. Tej opcji należy używać, gdy cele skoku mogą potencjalnie znajdować się poza zasięgiem. W przypadku braku takich skoków opcja ta nie wpływa na rozmiar kodu ani wydajność. Wartością domyślną jest --trampolines.

--abi-windowed | --abi-call0

Wybierz tag ABI zapisany w sekcji .xtensa.info. Znacznik ABI wskazuje ABI kodu asemblera. Konsolidator wysyła ostrzeżenie przy próbie połączenia plików obiektowych z niespójnymi znacznikami ABI. Domyślny ABI jest wybierany przez konfigurację rdzenia Xtensa.

Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Z80.

@chapter Funkcje zależne od Z80

Opcje wiersza poleceń

-march=CPU[-EXT...][+EXT...]

Ta opcja określa procesor docelowy. Asembler wyda komunikat o błędzie, jeśli zostanie podjęta próba złożenia instrukcji, która nie zostanie wykonana na docelowym procesorze. Rozpoznawane są następujące nazwy procesorów: z80, z180, ez80, gbz80, z80n >, r800. Oprócz podstawowego zestawu instrukcji asemblerowi można powiedzieć, aby zaakceptował niektóre mnemoniki rozszerzeń. Na przykład -march=z180+sli+infc rozszerza z180 o instrukcje SLI i IN F,(C) . Obecnie obsługiwane są następujące rozszerzenia: full (wszystkie znane instrukcje), adl (domyślny tryb procesora ADL, tylko eZ80), sli (instrukcja znany jako SLI, SLL lub SL1), xyhl (instrukcje z połówkami rejestrów indeksowych: IXL , IXH, IYL, IYH), xdcb (instrukcje takie jak RotOp (II +d),R i BitOp n,(II+d),R), infc (instrukcja IN F,(C) lub IN (C)), outc0 (instrukcja OUT (C),0). Zauważ, że zamiast rozszerzać podstawowy zestaw instrukcji, mnemoniki rozszerzeń zaczynające się od - odwołują odpowiednią funkcjonalność: -march=z80-full+xyhl najpierw usuwa wszystkie domyślne rozszerzenia i dodaje obsługa tylko połówek rejestrów indeksowych. Jeśli ta opcja nie jest podana, to przyjmowane jest -march=z80+xyhl+infc.

-local-prefix=prefix

Oznacz wszystkie etykiety z określonym prefiksem jako lokalne. Ale taką etykietę można jawnie oznaczyć globalnie w kodzie. Ta opcja nie zmienia domyślnego prefiksu lokalnej etykiety .L, tylko dodaje nowy.

-colonless

Akceptuj etykiety bez dwukropków. Wszystkie symbole na początku linii są traktowane jako etykiety.

-sdcc

Zaakceptuj kod asemblera wyprodukowany przez SDCC.

-fp-s=FORMAT

Format liczb zmiennoprzecinkowych pojedynczej precyzji. Domyślnie: ieee754 (32-bitowy).

-fp-d=FORMAT

Format liczb zmiennoprzecinkowych o podwójnej precyzji. Domyślnie: ieee754 (64-bitowy).

ZOBACZ TEŻ

gcc (1), ld (1), and the Info entries for binutils and ld.

PRAWA AUTORSKIE

Prawa autorskie (c) 1991-2023 Fundacja Wolnego Oprogramowania, Inc.

Udziela się pozwolenia na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu zgodnie z warunkami licencji GNU Free Documentation License, w wersji 1.3 lub dowolnej nowszej opublikowanej przez Free Software Foundation; bez Części Niezmiennych, bez Treści na Przedniej Okładce i bez Treści na Tylnej Okładce. Kopia licencji znajduje się w sekcji zatytułowanej Licencja GNU Wolnej Dokumentacji.