as AS - przenośny asembler GNU.
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 ...]
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]
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).
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.
Włącz aukcje na różne sposoby:
pomiń fałszywe okresy warunkowe
pomiń dyrektywy debugowania
zawierać informacje ogólne, takie jak przekazana wersja i opcje
zawierać źródło wysokiego poziomu
obejmują montaż
zawierać rozszerzenia makr
pomiń przetwarzanie formularzy
zawierać symbole
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.
Rozpocznij w alternatywnym trybie makro.
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.
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.
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.
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.
Podczas asemblacji plików w katalogu stary, zamiast tego zapisz informacje debugowania opisujące je jako nowy.
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.
Wyświetla sposób konfiguracji asemblera, a następnie kończy działanie.
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.
Jeśli asembler jest skonfigurowany do obsługi wielu różnych konfiguracji docelowych, ta opcja może być użyta do wybrania żądanej formy.
fast --- pomiń białe znaki i wstępne przetwarzanie komentarzy (załóżmy, że źródłem jest dane wyjściowe kompilatora).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Utwórz sekcję .sframe z dyrektyw CFI.
Ignorowane. Obsługiwane w celu zapewnienia zgodności wiersza poleceń z innymi asemblerami.
Wydrukuj podsumowanie opcji wiersza polecenia i wyjdź.
Wydrukuj podsumowanie wszystkich opcji specyficznych dla celu i wyjdź.
Dodaj katalog dir do listy wyszukiwania dyrektyw .include.
Nie ostrzegaj o podpisanym przepełnieniu.
Wydawaj ostrzeżenia, gdy tabele różnic zostaną zmienione dla długich przemieszczeń.
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.
Ustaw maksymalną szerokość (słownie) kolumny danych wyjściowych dla listingu asemblera na liczba.
Ustaw maksymalną szerokość (słownie) kolumny danych wyjściowych dla linii kontynuacji w listingu asemblera na liczba.
Ustaw maksymalną szerokość linii źródła wejściowego, tak jak jest to wyświetlane na liście, na liczbę bajtów.
Ustaw maksymalną liczbę wierszy drukowanych na liście dla pojedynczego wiersza danych wejściowych na liczba + 1.
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).
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.
Nazwij wyjście pliku obiektowego z jako objfile.
Złóż sekcję danych do sekcji tekstowej.
Ignorowane. Obsługiwane w celu zapewnienia zgodności z narzędziami, które udostępniają tę samą opcję zarówno asemblerowi, jak i konsolidatorowi.
Honoruj sekwencje podstawień w nazwach sekcji.
Wygeneruj błąd lub ostrzeżenie dla nieprawidłowej dyrektywy ELF .size.
Wydrukuj maksymalne miejsce (w bajtach) i całkowity czas (w sekundach) używane przez asembler.
Usuń lokalne symbole bezwzględne z wychodzącej tablicy symboli.
Wydrukuj wersję jako.
Wydrukuj wersję jako i wyjdź.
Pomiń komunikaty ostrzegawcze.
Traktuj ostrzeżenia jako błędy.
Nie pomijaj komunikatów ostrzegawczych ani nie traktuj ich jako błędów.
Ignorowane.
Ignorowane.
Generuj plik obiektowy nawet po wystąpieniu błędów.
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).
Ta opcja określa, że wyjście generowane przez asembler powinno być oznaczone jako zakodowane dla procesora big-endian.
Ta opcja określa, że wyjście generowane przez asembler powinno być oznaczone jako zakodowane dla procesora little-endian.
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.
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ń.
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.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,
Ta opcja włącza szczegółowe komunikaty o błędach dla gazu AArch64. Opcja jest wyłączona domyślnie.
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.
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.
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.
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.
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.
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.
Lokalny wspólny symbol większy niż rozmiar jest umieszczany w .bss, podczas gdy mniejsze symbole są umieszczane w .sbss.
Te opcje są ignorowane ze względu na kompatybilność wsteczną.
Następujące opcje są dostępne, gdy jest skonfigurowane dla procesora ARC.
Ta opcja wybiera wariant procesora lokalnego.
Wybierz wyjście big-endian (-EB) lub little-endian (-EL).
Włącz instrukcje rozszerzenia Code Density.
Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów ARM.
Określ, który wariant procesora ARM jest celem.
Określ, który wariant architektury ARM jest używany przez cel.
Wybierz, która architektura zmiennoprzecinkowa jest celem.
Wybierz, który zmiennoprzecinkowy ABI jest używany.
Włącz dekodowanie instrukcji tylko za pomocą kciuka.
Wybierz, która konwencja wywoływania procedur jest używana.
Wybierz wyjście big-endian (-EB) lub little-endian (-EL).
Określ, że kod został wygenerowany z myślą o współdziałaniu między kodem Thumb i ARM.
Włącza tryb zgodności składni zestawu CodeComposer Studio.
Określ, czy kod PIC został wygenerowany.
Następujące opcje są dostępne, gdy skonfigurowano je dla rodziny procesorów Blackfin.
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.
Zbierz się na FDPIC ABI.
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
Ta opcja określa, że asembler powinien emitować eBPF typu big-endian.
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.
Assemble dla architektury nazwa_architektury. Opcja --help wyświetla prawidłowe wartości dla archname.
Asembler dla architektury cpuname. Opcja --help wyświetla listę prawidłowych wartości dla cpuname.
Wygeneruj wyjście little-endian.
Generuj wyjście big-endian.
Generuj kod niezależny od pozycji.
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.
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.
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.
Włącz/wyłącz transformację instrukcji jsri na bsr. Opcja jest wyłączona domyślnie.
Włącz/wyłącz transformację instrukcji lrw na parę movih/ori.
Włącz/wyłącz rozszerzone instrukcje lrw. Ta opcja jest domyślnie włączona dla procesorów serii CK800.
Włącz/wyłącz umieszczanie pul literałów po każdej funkcji.
Włącz/wyłącz umieszczanie pul literałów po bezwarunkowych gałęziach. Opcja jest wyłączona domyślnie.
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.
Włącz twarde instrukcje float.
Włącz instrukcje wieloprocesorowe.
Włącz instrukcje koprocesora.
Włącz instrukcję pobierania z wyprzedzeniem pamięci podręcznej.
Włącz instrukcje bezpieczeństwa C-SKY.
Włącz instrukcje zaufania C-SKY.
Włącz instrukcje DSP.
Włącz rozszerzone instrukcje DSP.
Włącz instrukcje wektora DSP.
Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Epiphany.
Określa, że dozwolone są zarówno instrukcje 32-bitowe, jak i 16-bitowe. To jest zachowanie domyślne.
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
Renesas H8/300 wersja as ma jedną zależną od maszyny opcję:
Obsługa stałych szesnastkowych w stylu H'00 oprócz stylu 0x00.
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.
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).
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.
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.
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.
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.
Ta opcja określa, że asembler powinien kodować instrukcje SSE z prefiksem VEX.
Ta opcja określa, że asembler powinien zakodować ruch wektora wyrównanego jako ruch wektora niewyrównanego.
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.
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.
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.
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 .
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.
Ta opcja określa mnemonik instrukcji dla pasujących instrukcji. Dyrektywy .att_mnemonic i .intel_mnemonic będą miały pierwszeństwo.
Ta opcja określa składnię instrukcji podczas przetwarzania instrukcji. Dyrektywy .att_syntax i .intel_syntax będą miały pierwszeństwo.
Ta opcja określa, że rejestry nie wymagają prefiksu %. Dyrektywy .att_syntax i .intel_syntax będą miały pierwszeństwo.
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.
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.
Na docelowym PE/COFF ta opcja wymusza użycie formatu dużego pliku obiektowego, który pozwala na więcej niż 32768 sekcji.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Określa, że dozwolone są rozszerzone instrukcje IP2022.
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.
Złóż instrukcje M32C.
Złóż instrukcje M16C (domyślnie).
Włącz obsługę relaksacji czasu łącza.
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).
Określ, który procesor z rodziny M32R jest celem. Domyślnie jest to zwykle M32R, ale ta opcja zmienia go na M32RX.
Twórz komunikaty ostrzegawcze w przypadku napotkania wątpliwych konstrukcji równoległych.
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.
Skróć odniesienia do niezdefiniowanych symboli, do jednego słowa zamiast dwóch.
Określ, który procesor z rodziny 68000 jest celem. Domyślnym ustawieniem jest zwykle 68020, ale można to zmienić podczas konfiguracji.
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.
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.
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.
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.
Nie zastępuj żadnych oddziałów ani połączeń.
Generuj wyjście big-endian.
Wygeneruj wyjście little-endian. To jest ustawienie domyślne.
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.
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.
Załóżmy, że LD nie optymalizuje instrukcji LDI32. W konsekwencji relokacje DIFF nie będą emitowane.
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.
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.
Generuj dane wyjściowe w formacie big endian.
Wygeneruj dane wyjściowe w formacie little endian.
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.
Wygeneruj kod dla określonego procesora MIPS.
Zaplanuj i dostrój dla konkretnego procesora MIPS.
Spowoduj wstawienie nopów, jeśli odczyt rejestru docelowego instrukcji mfhi lub mflo nastąpi w kolejnych dwóch instrukcjach.
Powoduje wstawienie nops, jeśli po instrukcji dmult lub dmultu następuje instrukcja load.
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.
Powoduje, że dane wyjściowe debugowania w stylu stabs trafiają do sekcji .mdebug w stylu ECOFF zamiast standardowych sekcji .stabs ELF.
Sterowanie generowaniem sekcji .pdr.
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.
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.
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 .
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.
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ę.
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ę.
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.
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ę.
Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MIPS-3D. Mówi to asemblerowi, aby zaakceptował instrukcje MIPS-3D. -no-mips3d wyłącza tę opcję.
Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MDMX. Mówi to asemblerowi, aby zaakceptował instrukcje MDMX. -no-mdmx wyłącza tę opcję.
Wygeneruj kod dla rozszerzenia aplikacji DSP Release 1. Mówi to asemblerowi, aby zaakceptował instrukcje DSP Release 1. -mno-dsp wyłącza tę opcję.
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ę.
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ę.
Wygeneruj kod dla rozszerzenia architektury MIPS SIMD. To mówi asemblerowi, aby zaakceptował instrukcje MSA. -mno-msa wyłącza tę opcję.
Wygeneruj kod dla rozszerzenia MIPS eXtended Physical Address (XPA). Mówi to asemblerowi, aby zaakceptował instrukcje XPA. -mno-xpa wyłącza tę opcję.
Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MT. Mówi to asemblerowi, aby zaakceptował instrukcje MT. -mno-mt wyłącza tę opcję.
Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji MCU. Mówi to asemblerowi, aby zaakceptował instrukcje MCU. -mno-mcu wyłącza tę opcję.
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ę.
Wygeneruj kod dla rozszerzenia specyficznego dla aplikacji Global INValidate (GINV). Mówi to asemblerowi, aby zaakceptował instrukcje GINV. -mno-ginv wyłącza tę opcję.
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ę.
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ę.
Wygeneruj kod dla instrukcji Loongson EXTension (EXT). To mówi asemblerowi, aby zaakceptował instrukcje Loongson EXT. -mno-loongson-ext wyłącza tę opcję.
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ę.
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.
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.
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.
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.
Wybierz format kodowania NaN IEEE 754-2008 (-mnan=2008) lub starszy (-mnan=legacy). Ten ostatni jest domyślny.
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.
jak ignoruje tę opcję. Jest akceptowany ze względu na kompatybilność z natywnymi narzędziami.
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.
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.
Generuj kod niezależny od pozycji
Nie generuj kodu niezależnego od pozycji (domyślnie)
Następujące opcje są dostępne, gdy skonfigurowano je dla procesora Meta.
Wygeneruj kod dla Meta 1.1.
Wygeneruj kod dla Meta 1.2.
Wygeneruj kod dla Meta 2.1.
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.
Optymalizuj pod kątem wydajności.
Zoptymalizuj pod kątem miejsca.
Wygeneruj dane wyjściowe little endian.
Wygeneruj dane wyjściowe little endian.
Wygeneruj PIC.
Pomiń relaksację fp-as-gp dla tego pliku.
Optymalizacja oddziałów back-to-back.
Pomiń wszystkie relaksacje dla tego pliku.
Złóż dla architektury
Zbierz dla linii bazowej
Określ konfigurację FPU.
Określ wersję abi
Włącz/wyłącz obsługę instrukcji mnożenia.
Włącz/wyłącz obsługę instrukcji dzielenia.
Włącz/wyłącz rozszerzenie 16-bitowe
Włącz/wyłącz rejestry d0/d1
Włącz/wyłącz rozszerzenie wydajności
Włącz/wyłącz rozszerzenie wydajności 2
Włącz/wyłącz rozszerzenie ciągu
Włącz/wyłącz opcję konfiguracji ograniczonego rejestru (GPR16).
Włącz/wyłącz rozszerzenie AUDIO ISA
Włącz/wyłącz rozszerzenie FPU SP
Włącz/wyłącz rozszerzenie FPU DP
Włącz/wyłącz instrukcje FPU z mnożeniem i dodawaniem
Włącz obsługę wszystkich rozszerzeń i instrukcji
Następujące opcje są dostępne, gdy skonfigurowano je dla procesora PowerPC.
Wygeneruj ELF32 lub XCOFF32.
Wygeneruj ELF64 lub XCOFF64.
Ustaw EF_PPC_RELOCATABLE_LIB we flagach ELF.
Wygeneruj kod dla POWER/2 (RIOS2).
Wygeneruj kod dla POWER (RIOS1)
Wygeneruj kod dla PowerPC 601.
Wygeneruj kod dla PowerPC 603/604.
Wygeneruj kod dla PowerPC 403/405.
Wygeneruj kod dla PowerPC 440. BookE i kilka instrukcji 405.
Wygeneruj kod dla PowerPC 464.
Wygeneruj kod dla PowerPC 476.
Wygeneruj kod dla PowerPC 7400/7410/7450/7455.
Wygeneruj kod dla PowerPC 750CL/Gekko/Broadway.
Wygeneruj kod dla PowerPC 821/850/860.
Wygeneruj kod dla PowerPC 620/625/630.
Wygeneruj kod dla wariantów e200, e200z2 z LSP, e200z4 z SPE.
Wygeneruj kod dla rodziny PowerPC e300.
Wygeneruj kod dla Motorola e500 core complex.
Wygeneruj kod dla kompleksu rdzenia Freescale e500mc.
Wygeneruj kod dla kompleksu rdzenia Freescale e500mc64.
Wygeneruj kod dla kompleksu rdzeniowego Freescale e5500.
Wygeneruj kod dla kompleksu rdzenia Freescale e6500.
Włącz instrukcje LSP. (Wyłącza SPE i SPE2.)
Wygeneruj kod dla instrukcji Motorola SPE. (Wyłącza LSP.)
Wygeneruj kod dla instrukcji Freescale SPE2. (Wyłącza LSP.)
Wygeneruj kod dla kompleksu rdzenia AppliedMicro Titan.
Wygeneruj kod dla PowerPC 64, w tym bridge insns.
Wygeneruj kod dla 32-bitowej wersji BookE.
Wygeneruj kod dla architektury A2.
Generuj kod dla procesorów za pomocą instrukcji AltiVec.
Wygeneruj kod dla instrukcji Freescale PowerPC VLE.
Generuj kod dla procesorów za pomocą instrukcji Vector-Scalar (VSX).
Generuj kod dla procesorów za pomocą instrukcji Hardware Transactional Memory.
Wygeneruj kod dla architektury Power4.
Wygeneruj kod dla architektury Power5.
Wygeneruj kod dla architektury Power6.
Wygeneruj kod dla architektury Power7.
Wygeneruj kod dla architektury Power8.
Wygeneruj kod dla architektury Power9.
Wygeneruj kod dla architektury Power10.
Wygeneruj kod dla „przyszłej” architektury.
Wygeneruj kod dla architektury Cell Broadband Engine.
Wygeneruj kod wspólne instrukcje Power/PowerPC.
Generuj kod dla dowolnej architektury (PWR/PWRX/PPC).
Zezwalaj na nazwy symboliczne dla rejestrów.
Nie zezwalaj na nazwy symboliczne dla rejestrów.
Obsługa opcji -mrelocatable GCC.
Obsługa opcji -mrelocatable-lib GCC.
Ustaw bit PPC_EMB we flagach ELF.
Wygeneruj kod dla maszyny little endian.
Wygeneruj kod dla maszyny big endian.
Wygeneruj kod dla Solarisa.
Nie generuj kodu dla Solarisa.
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.
Generuj kod niezależny od pozycji
Nie generuj kodu niezależnego od pozycji (domyślnie)
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.
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.
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.
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.
Skorzystaj z relaksacji łącznika, aby zmniejszyć liczbę instrukcji wymaganych do zmaterializowania adresów symboli. (domyślny)
Nie rób relaksacji linkera.
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.
Nie generuj domyślnej sekcji atrybutów riscv elf, jeśli dyrektywy .attribute nie są ustawione.
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.
Nie sprawdzaj CSR.
Wygeneruj kod dla maszyny little 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.
Wybierz rozmiar słowa, 31/32 bity lub 64 bity.
Wybierz tryb architektury, Enterprise System Architecture (esa) lub tryb z/Architecture (zarch).
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 ).
Zezwalaj lub nie zezwalaj na nazwy symboliczne dla rejestrów.
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.
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.
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.
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.
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.
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.
Wybierz rozmiar słowa, 32 bity lub 64 bity.
Wybierz endianność, big-endian (-EB) lub little-endian (-EL).
Następująca opcja jest dostępna, gdy jest skonfigurowana dla procesora Visium.
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.
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.
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.
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.
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.
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.
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.
Zmień nazwę sekcji stara nazwa na nowa nazwa. Tej opcji można użyć wiele razy, aby zmienić nazwę wielu sekcji.
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.
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
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.
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.
Akceptuj etykiety bez dwukropków. Wszystkie symbole na początku linii są traktowane jako etykiety.
Zaakceptuj kod asemblera wyprodukowany przez SDCC.
Format liczb zmiennoprzecinkowych pojedynczej precyzji. Domyślnie: ieee754 (32-bitowy).
Format liczb zmiennoprzecinkowych o podwójnej precyzji. Domyślnie: ieee754 (64-bitowy).
gcc (1), ld (1), and the Info entries for binutils and ld.
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.