as - リファレンスマニュアル、オプション、コマンド例


名前

as AS - 移植可能な 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 ...]

目標

ターゲット AArch64 オプション:

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

ターゲットアルファオプション:

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

ターゲット ARC オプション:

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

ターゲット 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]

ターゲット Blackfin オプション:

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

ターゲット BPF オプション:

[-EL] [-EB]

ターゲット CRIS オプション:

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

ターゲット 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]

ターゲット D10V オプション:

[-O]

ターゲット D30V オプション:

[-O|-n|-N]

ターゲット EPIPHANY オプション:

[-mepiphany|-mepiphany16]

ターゲット H8/300 オプション:

[-h-tick-hex]

ターゲット i386 オプション:

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

ターゲット 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]

ターゲット IP2K オプション:

[-mip2022|-mip2022ext]

ターゲット M32C オプション:

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

ターゲット M32R オプション:

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

ターゲット M680X0 オプション:

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

ターゲット 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]

ターゲット MCORE オプション:

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

ターゲット メタ オプション:

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

ターゲット MICROBLAZE オプション:

ターゲット 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]

ターゲット MMIX オプション:

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

ターゲット Nios II オプション:

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

ターゲット 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]

ターゲット PDP11 オプション:

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

ターゲット picoJava オプション:

[-mb|-me]

ターゲット 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]

ターゲット PRU オプション:

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

ターゲット RISC-V オプション:

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

ターゲット RL78 オプション:

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

ターゲット 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]

ターゲット s390 オプション:

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

目標スコアのオプション:

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

ターゲット 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]

ターゲット TIC54X オプション:

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

ターゲット TIC6X オプション:

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

ターゲット TILE-Gx オプション:

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

ターゲット Visium オプション:

[-mtune=arch]

ターゲット Xtensa オプション:

[--[no-]text-section-literals] [--[no-]auto-litpools] [--[no-]absolute-literals] [--[no-]target-align] [--[no-]longcalls] [--[no-]transform] [--rename-section oldname=newname] [--[no-]trampolines] [--abi-windowed|--abi-call0]

ターゲット Z80 オプション:

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

説明

GNUとしては実際にはアセンブラーのファミリーです。あるアーキテクチャで GNU アセンブラを使用している (または使用したことがある) 場合、別のアーキテクチャで GNU アセンブラを使用したときにも、かなり似た環境が得られるはずです。各バージョンには、オブジェクト ファイル形式、ほとんどのアセンブラ ディレクティブ (疑似演算と呼ばれることが多い)、アセンブラ構文など、他のバージョンと多くの共通点があります。

as は主に、リンカー ld で使用するために GNU C コンパイラ gcc の出力をアセンブルすることを目的としています。それにもかかわらず、私たちは同じマシンの他のアセンブラーがアセンブルするものすべてをとして 正しくアセンブルできるように努めてきました。例外はすべて明示的に文書化されます。これは、as が同じアーキテクチャの別のアセンブラと常に同じ構文を使用するという意味ではありません。たとえば、680x0 アセンブリ言語構文には互換性のないバージョンがいくつか存在することがわかっています。

として実行するたびに、正確に 1 つのソース プログラムがアセンブルされます。ソースプログラムは 1 つ以上のファイルで構成されます。 (標準入力もファイルです。)

0 個以上の入力ファイル名を含むコマンド ラインをasに指定します。入力ファイルが (左のファイル名から右に) 読み取られます。特別な意味を持たないコマンド ライン引数 (任意の位置) は、入力ファイル名とみなされます。

as にファイル名を指定しない場合、as 標準入力 (通常は端末) から 1 つの入力ファイルを読み取ろうとします。アセンブルするプログラムがこれ以上ないことを伝えるには、ctl-D を入力する必要がある場合があります。

コマンドラインで標準入力ファイルに明示的に名前を付ける必要がある場合は、-- を使用します。

ソースが空の場合、as は小さな空のオブジェクト ファイルを生成します。

as は、警告やエラー メッセージを標準エラー ファイル (通常は端末) に書き込むことがあります。コンパイラがとして自動的に実行される場合、これは発生しません。警告は、as が欠陥のあるプログラムをアセンブルし続ける可能性があるという想定を報告します。エラーは、アセンブリを停止する重大な問題を報告します。

GNU C コンパイラ経由で as を呼び出している場合は、-Wa オプションを使用して引数をアセンブラに渡すことができます。アセンブラの引数は、相互 (および- わ) をカンマで区切る必要があります。例えば:

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

これにより、アセンブラに 2 つのオプションが渡されます: -alh (高レベルおよびアセンブリ ソースを含むリストを標準出力に出力) と -L (ローカル シンボルをシンボル テーブルに保持) )。

多くのコンパイラ コマンドライン オプションはコンパイラによって自動的にアセンブラに渡されるため、通常はこの -Wa メカニズムを使用する必要はありません。 (-v オプションを使用して GNU コンパイラ ドライバを呼び出すと、アセンブラを含む各コンパイル パスに渡されるオプションを正確に確認できます。)

オプション

  1. コマンドライン オプションをファイルから読み取ります。読み取られたオプションは、元の @file オプションの代わりに挿入されます。 ファイルが存在しないか、読み取ることができない場合、オプションは文字通りに扱われ、削除されません。 ファイル内のオプションは空白で区切られます。オプション全体を一重引用符または二重引用符で囲むことにより、オプションに空白文字を含めることができます。含める文字の前にバックスラッシュを付けることで、任意の文字 (バックスラッシュを含む) を含めることができます。 file 自体に追加の @file オプションが含まれる場合があります。そのようなオプションは再帰的に処理されます。

-a[cdghlmns]

さまざまな方法でリスティングを有効にします。

-ac

偽の条件文を省略する

-ad

デバッグディレクティブを省略します

-ag

バージョンや渡されたオプションなどの一般的な情報を含める

-ah

高レベルのソースを含める

-al

アセンブリを含む

-am

マクロ展開を含める

-an

フォーム処理を省略する

-as

記号を含める

=file

リストファイルの名前を設定します

これらのオプションを組み合わせることができます。たとえば、フォーム処理を行わないアセンブリ リストには -aln を使用します。 =file オプションを使用する場合は、このオプションを最後に指定する必要があります。 -a 単独では、デフォルトで -ahls になります。

--alternate

代替マクロ モードで開始します。

--compress-debug-sections

ELF ABI の SHF_COMPRESSED を指定した zlib を使用して、DWARF デバッグ セクションを圧縮します。作成されたオブジェクト ファイルは、古いリンカーやオブジェクト ファイル ユーティリティと互換性がない可能性があります。圧縮によって特定のセクションが大きくなる場合、そのセクションは圧縮されないことに注意してください。

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

これらのオプションは、DWARF デバッグ セクションを圧縮する方法を制御します。 --compress-debug-sections=none は --nocompress-debug-sections と同等です。 --compress-debug-sections=zlib および --compress-debug-sections=zlib-gabi は --compress-debug-sections と同等です。強い>。 --compress-debug-sections=zlib-gnu は、廃止された zlib-gnu 形式を使用して DWARF デバッグ セクションを圧縮します。デバッグ セクションの名前は、.zdebug で始まるように変更されます。 --compress-debug-sections=zstd は、zstd を使用して DWARF デバッグ セクションを圧縮します。注 - 圧縮によって実際にセクションが大きくなる場合、そのセクションは圧縮も名前変更もされません。

--nocompress-debug-sections

DWARF デバッグ セクションを圧縮しないでください。通常、これは x86/x86_64 を除くすべてのターゲットのデフォルトですが、時間設定オプションを使用してこれをオーバーライドできます。

-D

サポートされている場合、ターゲット固有のバックエンドでのデナギングを有効にします。それ以外の場合は無視されます。このオプションは、無視された場合でも、他のアセンブラへの呼び出しとのスクリプト互換性のために受け入れられます。

--debug-prefix-map old=new

ファイルをディレクトリ old にアセンブルするときは、代わりにファイルをnew として説明するデバッグ情報を記録します。

--defsym sym=value

入力ファイルをアセンブルする前に、シンボル sym を value として定義します。 値は整数定数である必要があります。 C と同様、先頭の 0x は 16 進値を示し、先頭の 0 は 8 進値を示します。シンボルの値は、.set 擬似演算を使用してソース ファイル内でオーバーライドできます。

--dump-config

アセンブラがどのように構成され、終了するかを表示します。

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

これらのオプションは、ELF アセンブラが STT_COMMON タイプの共通シンボルを生成するかどうかを制御します。デフォルトは、設定オプション --enable-elf-stt-common で制御できます。

--emulation=name

アセンブラが複数の異なるターゲット構成をサポートするように構成されている場合、このオプションを使用して目的の形式を選択できます。

-f

高速---空白文字とコメントの前処理をスキップします (ソースがコンパイラ出力であると仮定します)。

-g
--gen-debug

ターゲットで優先されるデバッグ形式を使用して、アセンブラーのソース行ごとにデバッグ情報を生成します。これは現在、STABS、ECOFF、または DWARF2 のいずれかを意味します。デバッグ形式が DWARF の場合、.debug_info セクションと .debug_line セクションは、アセンブリ ファイル自体が生成しない場合にのみ出力されます。

--gstabs

アセンブラー行ごとにスタブのデバッグ情報を生成します。デバッガがアセンブラ コードを処理できる場合、これはアセンブラ コードのデバッグに役立つ場合があります。

--gstabs+

おそらく gdb のみが処理できる GNU 拡張機能を使用して、アセンブラー行ごとにスタブ デバッグ情報を生成します。これにより、他のデバッガーがクラッシュしたり、プログラムの読み取りを拒否したりする可能性があります。これはアセンブラ コードのデバッグに役立つ場合があります。現在、唯一の GNU 拡張機能は、アセンブル時の現在の作業ディレクトリの場所です。

--gdwarf-2

アセンブラー行ごとに DWARF2 デバッグ情報を生成します。デバッガがアセンブラ コードを処理できる場合、これはアセンブラ コードのデバッグに役立つ場合があります。注---このオプションは一部のターゲットでのみサポートされており、すべてのターゲットではサポートされていません。

--gdwarf-3

このオプションは、DWARF 仕様のバージョン 3 に従って追加のデバッグ情報を生成できる点を除いて、--gdwarf-2 オプションと同じです。注 - このオプションを有効にしても、追加情報の生成が保証されるわけではありません。そうするかどうかはターゲットごとに選択されます。

--gdwarf-4

このオプションは、DWARF 仕様のバージョン 4 に従って追加のデバッグ情報を生成できる点を除いて、--gdwarf-2 オプションと同じです。注 - このオプションを有効にしても、追加情報の生成が保証されるわけではありません。そうするかどうかはターゲットごとに選択されます。

--gdwarf-5

このオプションは、DWARF 仕様のバージョン 5 に従って追加のデバッグ情報を生成できる点を除いて、--gdwarf-2 オプションと同じです。注 - このオプションを有効にしても、追加情報の生成が保証されるわけではありません。そうするかどうかはターゲットごとに選択されます。

--gdwarf-sections

.debug_line セクションを作成する代わりに、一連の .debug_line.foo セクションを作成します。foo は対応するコード セクションの名前です。たとえば、.text.func というコード セクションには、そのドワーフ行番号情報が .debug_line.text.func というセクションに配置されます。コード セクションが単に .text と呼ばれる場合でも、デバッグ行セクションは接尾辞なしで単に .debug_line と呼ばれます。

--gdwarf-cie-version=version

どのバージョンの DWARF Common Information Entry (CIE) を生成するかを制御します。このフラグが指定されていない場合、デフォルトはバージョン 1 ですが、一部のターゲットはこのデフォルトを変更できます。 バージョンのその他の可能な値は 3 または 4 です。

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

これらのオプションは、入力ソースに GNU Build 属性ノートが存在しない場合に、ELF アセンブラが GNU Build 属性ノートを生成するかどうかを制御します。デフォルトは、--enable-generate-build-notes 構成オプションで制御できます。

--gsframe
--gsframe

CFI ディレクティブから .sframe セクションを作成します。

--hash-size N

無視されました。他のアセンブラとのコマンドライン互換性のためにサポートされています。

--help

コマンドライン オプションの概要を出力して終了します。

--target-help

すべてのターゲット固有のオプションの概要を出力して終了します。

-I dir

ディレクトリ dir を .include ディレクティブの検索リストに追加します。

-J

署名付きオーバーフローについて警告しません。

-K

差分テーブルが長い変位に対して変更されたときに警告を発行します。

-L
--keep-locals

ローカル シンボルを (シンボル テーブル内に) 保持します。これらのシンボルはシステム固有のローカル ラベル プレフィックスで始まり、通常は ELF システムの場合は .L 、従来の a.out システムの場合は L です。

--listing-lhs-width=number

アセンブラ リストの出力データ列の最大幅 (ワード単位) を数値に設定します。

--listing-lhs-width2=number

アセンブラ リストの継続行の出力データ列の最大幅 (ワード単位) を数値に設定します。

--listing-rhs-width=number

リストに表示される入力ソース行の最大幅をnumberバイトに設定します。

--listing-cont-lines=number

1 行の入力に対してリストに印刷される最大行数を number + 1 に設定します。

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

アセンブラが入力内のマルチバイト文字を処理する方法を制御します。デフォルト (allow 引数を使用して復元可能) では、そのような文字は問題なく許可されます。 warn 引数を使用すると、マルチバイト文字が検出されるたびにアセンブラが警告メッセージを生成します。 warn-sym-only 引数を使用すると、シンボルがマルチバイト文字を含む名前で定義されている場合にのみ警告が生成されます。 (未定義のシンボルを参照しても警告は生成されません)。

--no-pad-sections

出力セクションの終端をそのセクションの位置に合わせてパディングするアセンブラを停止します。デフォルトではセクションがパディングされますが、これにより、メモリの制約が厳しいターゲットで必要となる可能性のあるスペースが無駄になる可能性があります。

-o objfile

からのオブジェクト ファイル出力にas objfile という名前を付けます。

-R

データセクションをテキストセクションに折り込みます。

--reduce-memory-overheads

無視されました。アセンブラとリンカの両方に同じオプションを適用するツールとの互換性のためにサポートされています。

--sectname-subst

セクション名の置換シーケンスを尊重します。

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

無効な ELF .size ディレクティブに対してエラーまたは警告を発行します。

--statistics

アセンブリで使用される最大スペース (バイト単位) と合計時間 (秒単位) を出力します。

--strip-local-absolute

ローカル絶対シンボルを送信シンボル テーブルから削除します。

-v
-version

as バージョンを印刷します。

--version

as バージョンを印刷して終了します。

-W
--no-warn

警告メッセージを抑制します。

--fatal-warnings

警告をエラーとして扱います。

--warn

警告メッセージを抑制したり、警告メッセージをエラーとして扱ったりしないでください。

-w

無視されました。

-x

無視されました。

-Z

エラー後でもオブジェクト ファイルを生成します。

-- | files ...

標準入力、またはアセンブルするソース ファイル。

次のオプションは、as が ARM アーキテクチャ (AArch64) の 64 ビット モード用に構成されている場合に使用できます。

-EB

このオプションは、アセンブラによって生成された出力がビッグエンディアン プロセッサ用にエンコードされているものとしてマークされるように指定します。

-EL

このオプションは、アセンブラによって生成された出力がリトルエンディアン プロセッサ用にエンコードされているものとしてマークされることを指定します。

-mabi=abi

ソース コードが使用する ABI を指定します。認識される引数は ilp32 と lp64 で、それぞれ ELF32 形式と ELF64 形式で生成されるオブジェクト ファイルを決定します。デフォルトは lp64 です。

-mcpu=processor[+extension...]

このオプションはターゲットプロセッサを指定します。ターゲット プロセッサ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次のプロセッサ名が認識されます: 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-x1code>、およびcortex-x2。

特別な名前 all を使用すると、アセンブラが、すべてのオプションの拡張機能を含む、サポートされているプロセッサに対して有効な命令を受け入れることができます。基本的な命令セットに加えて、プロセッサを拡張するさまざまな拡張ニーモニックを受け入れるか、制限するかをアセンブラに指示できます。特定のプロセッサの一部の実装が拡張機能を持つことができる場合、それらの拡張機能は自動的に有効になります。したがって、通常は追加の拡張子を指定する必要はありません。

-march=architecture[+extension...]

このオプションはターゲット アーキテクチャを指定します。ターゲット アーキテクチャ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次のアーキテクチャ名が認識されます: 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、および armv9.3-a。 -mcpu と -march の両方が指定されている場合、アセンブラは -mcpu の設定を使用します。どちらも指定されていない場合、アセンブラはデフォルトで -mcpu=all を使用します。アーキテクチャ オプションは、-mcpu オプションと同じ命令セット拡張オプションを使用して拡張できます。 -mcpu とは異なり、拡張機能はデフォルトで常に有効になるわけではありません。

-mverbose-error

このオプションは、AArch64 ガスの詳細なエラー メッセージを有効にします。このオプションはデフォルトで有効になっています。

-mno-verbose-error

このオプションは、AArch64 ガスの詳細なエラー メッセージを無効にします。

次のオプションは、as が Alpha プロセッサ用に設定されている場合に使用できます。

-mcpu

このオプションはターゲットプロセッサを指定します。ターゲット プロセッサ上で実行されない命令をアセンブルしようとすると、アセンブラはその命令をマクロとして展開するか、エラー メッセージを発行する可能性があります。このオプションは、.arch ディレクティブと同等です。次のプロセッサ名が認識されます: 21064、21064a、21066、21068、21164、21164a、21164pc、21264、21264a、21264b、 ev4、ev5、lca45、ev5、ev56、pca56 、ev6、ev67、ev68。特別な名前 all を使用すると、アセンブラが任意の Alpha プロセッサに有効な命令を受け入れることができます。 .arch に関する OSF/1 の既存の慣行、および MILO (Linux ARC ブートローダー) 内の既存の慣行をサポートするために、番号付きのプロセッサ名 (例: 21064)プロセッサ固有の PALcode 命令を有効にしますが、電気流体名 (ev4 など) は有効にしません。

-mdebug
-no-mdebug

Stabs ディレクティブおよびプロシージャ記述子の .mdebug カプセル化の生成を有効または無効にします。デフォルトでは、最初の stacks ディレクティブが表示されたときに、.mdebug が自動的に有効になります。

-relax

このオプションを使用すると、スペースを節約してアセンブリ時に一部の再配置を解決するのではなく、すべての再配置が強制的にオブジェクト ファイルに入れられます。すべてのシンボル演算を表現できるわけではないため、このオプションはすべてのシンボル演算をオブジェクト ファイルに反映するわけではないことに注意してください。ただし、このオプションは特定のアプリケーションでは依然として役立ちます。

-replace
-noreplace

アセンブル時とリンク時の両方で、プロシージャ呼び出しの最適化を有効または無効にします。これらのオプションは VMS ターゲットでのみ使用でき、-replace がデフォルトです。 『OpenVMS リンカー ユーティリティ マニュアル』のセクション 1.4.1 を参照してください。

-g

このオプションは、コンパイラがデバッグ情報を生成するときに使用されます。 gcc が mips-tfile を使用して ECOFF のデバッグ情報を生成する場合、ローカル ラベルをオブジェクト ファイルに渡す必要があります。それ以外の場合、このオプションは効果がありません。

-Gsize

サイズより大きいローカル共通シンボルは .bss に配置され、それより小さいシンボルは .sbss に配置されます。

-F
-32addr

これらのオプションは、下位互換性のために無視されます。

次のオプションは、as が ARC プロセッサ用に設定されている場合に使用できます。

-mcpu=cpu

このオプションは、コア プロセッサのバリアントを選択します。

-EB | -EL

ビッグエンディアン (-EB) 出力またはリトルエンディアン (-EL) 出力を選択します。

-mcode-density

コード密度拡張命令を有効にします。

次のオプションは、as が ARM プロセッサ ファミリ用に構成されている場合に使用できます。

-mcpu=processor[+extension...]

どの ARM プロセッサ バリアントをターゲットにするかを指定します。

-march=architecture[+extension...]

ターゲットで使用される ARM アーキテクチャ バリアントを指定します。

-mfpu=floating-point-format

どの浮動小数点アーキテクチャをターゲットにするかを選択します。

-mfloat-abi=abi

使用中の浮動小数点 ABI を選択します。

-mthumb

Thumb のみの命令デコードを有効にします。

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

使用するプロシージャ呼び出し規約を選択します。

-EB | -EL

ビッグエンディアン (-EB) 出力またはリトルエンディアン (-EL) 出力を選択します。

-mthumb-interwork

Thumb コードと ARM コード間の相互作用を念頭に置いてコードが生成されていることを指定します。

-mccs

CodeComposer Studio アセンブリ構文互換モードをオンにします。

-k

PICコードが生成されていることを指定します。

次のオプションは、Blackfin プロセッサ ファミリ用に as が設定されている場合に使用できます。

-mcpu=processor[-sirevision]

このオプションはターゲットプロセッサを指定します。オプションのsirevisionはアセンブラでは使用されません。これは、GCC が -mcpu= オプションを簡単に渡すことができるようにするためのものです。ターゲット プロセッサ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次のプロセッサ名が認識されます: bf504、bf506、bf512、bf514、bf516、bf518、bf522、bf523、bf524、bf525、 bf526、bf527、bf531、bf532、bf533、bf534 、bf535 (まだ実装されていません)、bf536、bf537、bf538、bf539 、bf542、bf542m、bf544、bf544m、bf547、bf547m 、bf548、bf548m、bf549、bf549m、bf561、およびbf592。

-mfdpic

FDPIC ABI 用にアセンブルします。

-mno-fdpic
-mnopic

-mfdpic を無効にします。

次のオプションは、Linux カーネル BPF プロセッサ ファミリ用に as が設定されている場合に使用できます。

@chapter BPF に依存する機能

オプション

-EB

このオプションは、アセンブラがビッグエンディアン eBPF を出力することを指定します。

-EL

このオプションは、アセンブラがリトル エンディアン eBPF を出力することを指定します。

コマンド ラインでエンディアン オプションが指定されていない場合は、ホスト エンディアンが使用されることに注意してください。 CRIS 固有のオプションのドキュメントについては、情報ページを参照してください。

次のオプションは、as が C-SKY プロセッサ ファミリ用に設定されている場合に使用できます。

-march=archname

建築アーチ名のために組み立てます。 --help オプションは、archname の有効な値をリストします。

-mcpu=cpuname

アーキテクチャ cpuname 用にアセンブルします。 --help オプションは、cpuname の有効な値をリストします。

-EL
-mlittle-endian

リトルエンディアン出力を生成します。

-EB
-mbig-endian

ビッグエンディアン出力を生成します。

-fpic
-pic

位置に依存しないコードを生成します。

-mljump
-mno-ljump

短い分岐命令 jbf、jbt、および jbr から jmpi への変換を有効または無効にします。このオプションは V2 プロセッサ専用です。 jmpi 命令をサポートしない CK801 および CK802 ターゲットでは無視され、他のプロセッサではデフォルトで有効になります。

-mbranch-stub
-mno-branch-stub

bsr 命令の R_CKCORE_PCREL_IMM26BY2 再配置をリンカーに渡します。このオプションは、ベアメタル C-SKY V2 ELF ターゲットでのみ使用可能であり、デフォルトで有効になっています。共有ライブラリに対して動的にリンクされるコードでは使用できません。

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

jbsr 命令の bsr への変換を有効または無効にします。このオプションは、CK801/CK802 ターゲットでは常に有効になります (-mno-force2bsr は無視されます)。また、-mbranch-stub が有効な場合は常に有効になります。

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

jsri 命令の bsr への変換を有効または無効にします。このオプションはデフォルトで有効になっています。

-mnolrw
-mno-lrw

lrw 命令の movih/ori ペアへの変換を有効または無効にします。

-melrw
-mno-elrw

拡張 lrw 命令を有効/無効にします。このオプションは、CK800 シリーズ プロセッサではデフォルトで有効になっています。

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

各関数の後のリテラル プールの配置を有効/無効にします。

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

無条件分岐後のリテラル プールの配置を有効/無効にします。このオプションはデフォルトで有効になっています。

-mistack
-mno-istack

割り込みスタック命令を有効/無効にします。このオプションは、CK801、CK802、および CK802 プロセッサではデフォルトで有効になっています。

次のオプションは、特定のオプションの命令を明示的に有効にします。これらの機能は、-mcpu= を使用してそれをサポートするプロセッサを指定することによって暗黙的に有効にすることもできます。

-mhard-float

ハードフロート命令を有効にします。

-mmp

マルチプロセッサ命令を有効にします。

-mcp

コプロセッサ命令を有効にします。

-mcache

キャッシュプリフェッチ命令を有効にします。

-msecurity

C-SKY セキュリティ命令を有効にします。

-mtrust

C-SKY 信頼命令を有効にします。

-mdsp

DSP 命令を有効にします。

-medsp

拡張 DSP 命令を有効にします。

-mvdsp

ベクトル DSP 命令を有効にします。

次のオプションは、as が Epiphany プロセッサ用に設定されている場合に使用できます。

-mepiphany

32 ビット命令と 16 ビット命令の両方が許可されることを指定します。これはデフォルトの動作です。

-mepiphany16

許可される命令を 16 ビット セットのみに制限します。

次のオプションは、as が H8/300 プロセッサ用に設定されている場合に使用できます。 @chapter H8/300 の依存機能

オプション

as の Renesas H8/300 バージョンには、マシン依存のオプションが 1 つあります。

-h-tick-hex

0x00 スタイルに加えて、H'00 スタイルの 16 進定数をサポートします。

-mach=name

H8300 マシンのバリアントを設定します。次のマシン名が認識されます: h8300h、h8300hn、h8300s、h8300sn、h8300sx および h8300sxn。

次のオプションは、as が i386 プロセッサ用に設定されている場合に使用できます。

--32 | --x32 | --64

ワード サイズを 32 ビットまたは 64 ビットから選択します。 --32 は Intel i386 アーキテクチャを意味し、--x32 および --64 は 32 ビットまたは 64- ビットの AMD x86-64 アーキテクチャを意味します。それぞれビットワードサイズ。これらのオプションは ELF オブジェクト ファイル形式でのみ使用でき、必要な BFD サポートが含まれている必要があります (32 ビット プラットフォームでは、64 ビットの使用を有効にするように構成するには --enable-64-bit-bfd を追加する必要があります)。ターゲット プラットフォームとして x86-64 を使用します)。

-n

デフォルトでは、x86 GAS は、コード セクション内の位置合わせに使用される複数の nop 命令を、leal 0(%esi,1),%esi などのマルチバイト nop 命令に置き換えます。このスイッチは、単一バイト nop (0x90) がアラインメントのフィル バイトとして明示的に指定されている場合、最適化を無効にします。

--divide

SVR4 派生プラットフォームでは、文字 / はコメント文字として扱われるため、式では使用できません。 --divide オプションは、/ を通常の文字に変換します。これは、コメントを開始する行の先頭の / を無効にしたり、コメントの開始に # を使用することには影響しません。

-march=CPU[+EXTENSION...]

このオプションはターゲットプロセッサを指定します。ターゲット プロセッサ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次のプロセッサ名が認識されます: 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、および generic64。基本的な命令セットに加えて、さまざまな拡張ニーモニックを受け入れるようにアセンブラに指示できます。たとえば、-march=i686+sse4+vmx は i686 を sse4 と vmx で拡張します。

現在サポートされている拡張子は次のとおりです: 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、tsxldtrkcode>、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、prefetch、avx_ifma、avx_vnni_int8、cmpccxadd、wrmsrns 、msrlist、avx_ne_convert、rao_int、amx_int8、amx_bf16、 amx_fp16、amx_tile、vmx、vmfunc、smx、xsave、xsaveopt、xsavec、xsaves、aes、pclmul、fsgsbase、rdrnd、f16c、bmi2、fma、movbecode>、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、および padlock。

これらの拡張ニーモニックには、それぞれの (および依存する) 機能を無効にするために no というプレフィックスを付けることができることに注意してください。 .arch ディレクティブが -march とともに使用される場合、.arch ディレクティブが優先されます。

-mtune=CPU

このオプションは、最適化するプロセッサを指定します。 -march オプションと組み合わせて使用すると、-march オプションで指定されたプロセッサの命令のみが生成されます。有効な CPU 値は、-march=CPU のプロセッサ リストと同じです。

-msse2avx

このオプションは、アセンブラが VEX プレフィックスを使用して SSE 命令をエンコードすることを指定します。

-muse-unaligned-vector-move

このオプションは、アセンブラが整列ベクトル移動を非整列ベクトル移動としてエンコードすることを指定します。

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

これらのオプションは、アセンブラが SSE 命令をチェックするかどうかを制御します。 -msse-check=none を指定すると、アセンブラは SSE 命令をチェックしなくなります (デフォルト)。 -msse-check=warning を指定すると、アセンブラは SSE 命令に対して警告を発行します。 -msse-check=error を指定すると、アセンブラは SSE 命令に対してエラーを発行します。

-mavxscalar=128
-mavxscalar=256

これらのオプションは、アセンブラがスカラー AVX 命令をエンコードする方法を制御します。 -mavxscalar=128 は、デフォルトの 128 ビット ベクトル長でスカラー AVX 命令をエンコードします。 -mavxscalar=256 は、256 ビットのベクトル長でスカラー AVX 命令をエンコードします。警告: これを製品コードには使用しないでください。CPU エラッタにより、結果のコードは特定のモデルで動作しない可能性があります。

-mvexwig=0
-mvexwig=1

これらのオプションは、アセンブラが VEX.W 無視 (WIG) VEX 命令をエンコードする方法を制御します。 -mvexwig=0 は、デフォルトの vex.w=0 で WIG VEX 命令をエンコードします。 -mvexwig=1 は、vex.w=1 を使用して WIG EVEX 命令をエンコードします。 警告: これを製品コードには使用しないでください。CPU エラッタにより、結果のコードが正しく動作しない可能性があります。特定のモデルで動作します。

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

これらのオプションは、アセンブラが長さ無視 (LIG) EVEX 命令をエンコードする方法を制御します。 -mevexlig=128 は、デフォルトの 128 ビット ベクトル長で LIG EVEX 命令をエンコードします。 -mevexlig=256 と -mevexlig=512 は、それぞれ 256 ビットと 512 ビットのベクトル長で LIG EVEX 命令をエンコードします。 。

-mevexwig=0
-mevexwig=1

これらのオプションは、アセンブラが w-ignored (WIG) EVEX 命令をエンコードする方法を制御します。 -mevexwig=0 は、WIG EVEX 命令を evex.w=0 (デフォルト) でエンコードします。 -mevexwig=1 は、evex.w=1 で WIG EVEX 命令をエンコードします。

-mmnemonic=att
-mmnemonic=intel

このオプションは、一致する命令の命令ニーモニックを指定します。 .att_mnemonic ディレクティブと .intel_mnemonic ディレクティブが優先されます。

-msyntax=att
-msyntax=intel

このオプションは、命令を処理する際の命令構文を指定します。 .att_syntax ディレクティブと .intel_syntax ディレクティブが優先されます。

-mnaked-reg

このオプションは、レジスタに % プレフィックスが必要ないことを指定します。 .att_syntax ディレクティブと .intel_syntax ディレクティブが優先されます。

-madd-bnd-prefix

このオプションを指定すると、ソース コードで明示的に指定されていない場合でも、アセンブラはすべてのブランチに BND プレフィックスを強制的に追加します。

-mno-shared

ELF ターゲットでは、アセンブラは通常、デフォルトの可視性を持つ定義された非弱いグローバル ブランチ ターゲットに対して非 PLT 再配置を最適化します。 -mshared オプションは、デフォルトの可視性を持つすべての非弱いグローバル ブランチ ターゲットをプリエンプトできる共有ライブラリに入るコードを生成するようにアセンブラに指示します。結果として得られるコードは少し大きくなります。このオプションは分岐命令の処理にのみ影響します。

-mbig-obj

PE/COFF ターゲットでは、このオプションによりビッグ オブジェクト ファイル形式の使用が強制され、32768 を超えるセクションが許可されます。

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

これらのオプションは、アセンブラがロック プレフィックスをエンコードする方法を制御します。このオプションは、ロック プレフィックスで失敗するプロセッサの回避策として意図されています。このオプションは、シングルコア、シングルスレッドのコンピュータでのみ安全に使用できます。-momit-lock-prefix=yes を選択すると、すべてのロック プレフィックスが省略されます。 -momit-lock-prefix=no は、通常どおりロック プレフィックスをエンコードします (これがデフォルトです)。

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

これらのオプションは、アセンブラが lfence、mfence、および sfence をエンコードする方法を制御します。 -mfence-as-lock-add=yes は、lfence、mfence、および sfence を lock addl $0x0 としてエンコードします (%rsp ) (64 ビット モードでは)、32 ビット モードではlock addl $0x0, (%esp) です。 -mfence-as-lock-add=no は、lfence、mfence、および sfence を通常どおりエンコードします (これがデフォルトです)。

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

これらのオプションは、アセンブラがリラックス再配置 (32 ビット モードの場合は R_386_GOT32X) を生成するか、64 ビット モードの場合は R_X86_64_GOTPCRELX および R_X86_64_REX_GOTPCRELX を生成するかを制御します。 -mrelax-relocations=yes はリラックス再配置を生成します。 -mrelax-relocations=no では、リラックス再配置は生成されません。デフォルトは、設定オプション --enable-x86-relax-relocations で制御できます。

-malign-branch-boundary=NUM

このオプションは、アセンブラがセグメント接頭辞または NOP を使用してブランチをどのように配置するかを制御します。 NUM は 2 の累乗でなければなりません。0 または 16 以上である必要があります。ブランチは NUM バイト境界内に配置されます。デフォルトの -malign-branch-boundary=0 はブランチを整列させません。

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

このオプションは、整列するブランチのタイプを指定します。 TYPE は、条件付きジャンプを整列させる jcc、融合型条件付きジャンプを整列させる fused、jmp の組み合わせです。無条件ジャンプを整列させ、 コールを整列させるコール、 ret を整列させるret、 間接的なジャンプとコールを整列させる間接。デフォルトは -malign-branch=jcc+fused+jmp です。

-malign-branch-prefix-size=NUM

このオプションは、分岐を整列させるための命令のプレフィックスの最大数を指定します。 NUM は 0 ~ 5 の範囲にする必要があります。デフォルトの NUM は 5 です。

-mbranches-within-32B-boundaries

このオプションは、条件付きジャンプ、融合条件付きジャンプ、および無条件ジャンプを、命令上の最大 5 つのセグメント プレフィックスを持つ 32 バイト境界内に配置します。これは -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5< と同等です。。デフォルトではブランチを整列させません。

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

これらのオプションは、アセンブラがロード命令の後にフェンスを生成するかどうかを制御します。 -mlfence-after-load=yes はフェンスを生成します。 -mlfence-after-load=no は lfence を生成しません(デフォルト)。

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

これらのオプションは、アセンブラが間接ニア分岐命令の前にフェンスを生成するかどうかを制御します。 -mlfence-before-indirect-branch=all は、レジスタ経由の間接ニア分岐の前にフェンスを生成し、メモリ経由の間接ニア分岐の前に警告を発行します。また、明示的な -mlfence-before-ret= がない場合は、暗黙的に -mlfence-before-ret=shl を設定します。 -mlfence-before-indirect-branch=register は、レジスタを介した間接的な近くの分岐の前にフェンスを生成します。 -mlfence-before-indirect-branch=memory は、メモリを介した間接的な近くの分岐の前に警告を発行します。 -mlfence-before-indirect-branch=none は、lfence を生成せず、警告も発行しません。これがデフォルトです。 lfence は分岐ターゲット レジスタのロード後に生成されるため、-mlfence-after-load=yes を指定したレジスタを介した間接的な近くの分岐の前には lfence が生成されないことに注意してください。

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

これらのオプションは、アセンブラが ret の前に lfence を生成するかどうかを制御します。 -mlfence-before-ret=or は、lfence を使用して生成または命令を生成します。 -mlfence-before-ret=shl/yes は、lfence を使用して shl 命令を生成します。 -mlfence-before-ret=not は、lfence を使用して not 命令を生成します。 -mlfence-before-ret=none は lfence を生成しません。これがデフォルトです。

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

これらのオプションは、アセンブラが GNU_PROPERTY_X86_ISA_1_USED および GNU_PROPERTY_X86_FEATURE_2_USED の GNU プロパティ ノートを生成するかどうかを制御します。デフォルトは、--enable-x86-used-note 構成オプションで制御できます。

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

これらのオプションは、アセンブラが SAE 専用 EVEX 命令をエンコードする方法を制御します。 -mevexrcig=rne は、EVEX 命令の RC ビットをデフォルトの 00 でエンコードします。 -mevexrcig=rd、-mevexrcig=ru、-mevexrcig=rz は、SAE 専用の EVEX 命令をそれぞれ 01、10、および 11 RC ビットでエンコードします。

-mamd64
-mintel64

このオプションは、アセンブラが 64 ビット モードで AMD64 または Intel64 ISA のみを受け入れるように指定します。デフォルトでは、共通、Intel64 のみ、および AMD64 ISA が受け入れられます。

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

命令サイズを小さくして命令エンコーディングを最適化します。 -O および -O1 は、64 ビットの即値を使用する 64 ビット レジスタ ロード命令を、31 ビットまたは 32 ビットの即値を使用する 32 ビット レジスタ ロード命令としてエンコードします。 -ビット レジスタ クリア命令と 32 ビット レジスタ クリア命令、256 ビット/512 ビット VEX/EVEX ベクトル レジスタ クリア命令を 128 ビット VEX ベクトル レジスタ クリア命令でエンコード、128 ビット/256 ビット EVEX ベクトル レジスタ ロードをエンコード/store 命令は VEX ベクトル レジスタ ロード/ストア命令を使用し、128 ビット/256 ビット EVEX パック整数論理命令を 128 ビット/256 ビット VEX パック整数論理でエンコードします。 -O2 には -O1 最適化が含まれており、さらに 256 ビット/512 ビット EVEX ベクトル レジスタ クリア命令を 128 ビット EVEX ベクトル レジスタ クリア命令でエンコードします。 64 ビット モードでは、可換ソース オペランドを持つ VEX エンコード命令でも、3 バイトの VEX プレフィックス形式の代わりに 2 バイトの VEX プレフィックス形式を使用できる場合、ソース オペランドが交換されます。同じ (レジスタ) オペランドを 2 回指定した特定の形式の AND および OR も TEST に変更されます。 -Os には -O2 最適化が含まれており、イミディエートを使用した 16 ビット、32 ビット、および 64 ビットのレジスタ テストをイミディエートを使用した 8 ビット レジスタ テストとしてエンコードします。 -O0 はこの最適化をオフにします。

次のオプションは、Ubicom IP2K シリーズ用に設定されている場合に使用できます。

-mip2022ext

拡張 IP2022 命令が許可されることを指定します。

-mip2022

許可される命令を基本的な IP2022 命令のみに制限するデフォルトの動作を復元します。

次のオプションは、Renesas M32C および M16C プロセッサ用に設定されている場合に使用できます。

-m32c

M32C命令をアセンブルします。

-m16c

M16C 命令をアセンブルします (デフォルト)。

-relax

リンク時の緩和のサポートを有効にします。

-h-tick-hex

0x00 スタイルに加えて、H'00 スタイルの 16 進定数をサポートします。

Renesas M32R (旧三菱 M32R) シリーズ用に設定されている場合、次のオプションが利用可能です。

--m32rx

M32R ファミリのどのプロセッサをターゲットにするかを指定します。通常デフォルトは M32R ですが、このオプションにより M32RX に変更されます。

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

疑わしい並列構造が見つかった場合、警告メッセージを生成します。

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

疑わしい並列構造が見つかった場合、警告メッセージを生成しません。

以下のオプションは、Motorola 68000 シリーズ用に設定されている場合に使用できます。

-l

未定義のシンボルへの参照を 2 つの単語ではなく 1 つの単語に短縮します。

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

68000 ファミリのどのプロセッサがターゲットであるかを指定します。通常、デフォルトは 68020 ですが、これは構成時に変更できます。

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

ターゲット マシンには浮動小数点コプロセッサが搭載されています (または搭載されていません)。デフォルトでは、68020、68030、および cpu32 のコプロセッサーが想定されます。基本の 68000 は 68881 と互換性がありませんが、メイン プロセッサでコプロセッサ命令のエミュレーションを実行できるため、2 つの組み合わせを指定できます。

-m68851 | -mno-68851

ターゲット マシンにはメモリ管理ユニット コプロセッサが搭載されています (または搭載されていません)。デフォルトでは、68020 以降の MMU が想定されます。

次のオプションは、as が Altera Nios II プロセッサ用に設定されている場合に使用できます。

-relax-section

可能な場合は、特定された範囲外のブランチを PC 相対の jmp シーケンスに置き換えます。生成されたコード シーケンスは、位置に依存しないコードでの使用に適していますが、シーケンスの長さにより、拡張された分岐範囲には実際的な制限があります。このオプションはデフォルトです。

-relax-all

範囲内にあるかどうか判断できない分岐命令とすべての呼び出し命令を (それぞれ) jmp シーケンスと callr シーケンスに置き換えます。このオプションは、ターゲット シンボルに対して絶対的な再配置を生成するため、位置に依存しないコードには適していません。

-no-relax

ブランチやコールを置き換えないでください。

-EB

ビッグエンディアン出力を生成します。

-EL

リトルエンディアン出力を生成します。これがデフォルトです。

-march=architecture

このオプションはターゲット アーキテクチャを指定します。ターゲット アーキテクチャ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次のアーキテクチャ名が認識されます: r1、r2。デフォルトは r1 です。

次のオプションは、as が PRU プロセッサ用に設定されている場合に使用できます。

-mlink-relax

LD が式の上位 16 ビットをチェックすることで LDI32 命令を最適化すると仮定します。それらがすべて 0 の場合、LD は LDI32 命令を単一の LDI に短縮します。このような場合、as は diff 式の DIFF 再配置を出力します。

-mno-link-relax

LD は LDI32 命令を最適化しないと仮定します。その結果、DIFF 再配置は生成されません。

-mno-warn-regname-label

ラベル名がレジスタ名と一致しても警告しません。通常、アセンブラ プログラマは、この警告が出力されることを望んでいます。 C コンパイラはこれをオフにすることを望むかもしれません。

次のオプションは、as が MIPS プロセッサ用に設定されている場合に使用できます。

-G num

このオプションは、gp レジスタを使用して暗黙的に参照できるオブジェクトの最大サイズを設定します。これは、Ultrix を実行している DECstation など、ECOFF 形式を使用するターゲットでのみ受け入れられます。デフォルト値は 8 です。

-EB

ビッグエンディアン形式の出力を生成します。

-EL

リトルエンディアン形式の出力を生成します。

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

特定の MIPS 命令セット アーキテクチャ レベルのコードを生成します。 -mips1 は -march=r3000 のエイリアス、 -mips2 は -march=r6000 のエイリアスです。 -mips3 は -march=r4000 のエイリアスであり、 -mips4 は -march=r8000 のエイリアスです。 -mips5、 -mips32、 -mips32r2、 -mips32r3、 -mips32r5、 -mips32r6、-mips64、 -mips64r2、 -mips64r3、 -mips64r5、および -mips64r6 は、汎用 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、および MIPS64 に対応します。それぞれ 6 つの ISA プロセッサをリリースします。

-march=cpu

特定の MIPS CPU 用のコードを生成します。

-mtune=cpu

特定の MIPS CPU に合わせてスケジュールを設定し、調整します。

-mfix7000
-mno-fix7000

mfhi または mflo 命令のデスティネーション レジスタの読み取りが次の 2 つの命令で発生する場合、nops が挿入されます。

-mfix-rm7000
-mno-fix-rm7000

dmult または dmultu 命令の後にロード命令が続く場合、nops が挿入されます。

-mfix-r5900
-mno-fix-r5900

6 命令以下の短いループの最後に配置された分岐命令の遅延スロットに先行命令をスケジュールしないでください。代わりに常に nop 命令をそこにスケジュールしてください。 R5900 チップのハードウェア バグにより、特定の条件下でのショート ループのバグにより、ループが 1 回か 2 回しか実行されなくなります。

-mdebug
-no-mdebug

Stabs スタイルのデバッグ出力が、標準の ELF .stabs セクションではなく ECOFF スタイルの .mdebug セクションに入るようにします。

-mpdr
-mno-pdr

.pdr セクションの生成を制御します。

-mgp32
-mfp32

レジスタ サイズは通常、ISA および ABI から推測されますが、これらのフラグにより、特定のレジスタ グループが常に 32 ビット幅として扱われるようになります。 -mgp32 は汎用レジスタのサイズを制御し、-mfp32 は浮動小数点レジスタのサイズを制御します。

-mgp64
-mfp64

レジスタ サイズは通常、ISA および ABI から推測されますが、これらのフラグにより、特定のレジスタ グループが常に 64 ビット幅として扱われるようになります。 -mgp64 は汎用レジスタのサイズを制御し、-mfp64 は浮動小数点レジスタのサイズを制御します。

-mfpxx

レジスタ サイズは通常、ISA および ABI から推測されますが、このフラグを -mabi=32 と組み合わせて使用すると、32 ビットまたは 64 ビット幅の浮動小数点レジスタで正しく動作する ABI バリアントが有効になります。 。

-modd-spreg
-mno-odd-spreg

ISA でサポートされている場合、奇数の単精度レジスタでの浮動小数点演算の使用を有効にします。 -mfpxx は -mno-odd-spreg を意味します。それ以外の場合、デフォルトは -modd-spreg です。

-mips16
-no-mips16

MIPS 16 プロセッサ用のコードを生成します。これは、アセンブリ ファイルの先頭に .module mips16 を置くのと同じです。 -no-mips16 はこのオプションをオフにします。

-mmips16e2
-mno-mips16e2

MIPS16 モードでの MIPS16e2 命令の使用を有効にします。これは、アセンブリ ファイルの先頭に .module mips16e2 を置くのと同じです。 -mno-mips16e2 はこのオプションをオフにします。

-mmicromips
-mno-micromips

microMIPS プロセッサ用のコードを生成します。これは、アセンブリ ファイルの先頭に .module micromips を置くのと同じです。 -mno-micromips はこのオプションをオフにします。これは、アセンブリ ファイルの先頭に .module nomicromips を置くのと同じです。

-msmartmips
-mno-smartmips

MIPS32 命令セットに対する SmartMIPS 拡張機能を有効にします。これは、アセンブリ ファイルの先頭に .module Smartmips を置くのと同じです。 -mno-smartmips はこのオプションをオフにします。

-mips3d
-no-mips3d

MIPS-3D アプリケーション固有の拡張機能のコードを生成します。これにより、アセンブラは MIPS-3D 命令を受け入れるように指示されます。 -no-mips3d はこのオプションをオフにします。

-mdmx
-no-mdmx

MDMX アプリケーション固有の拡張機能のコードを生成します。これにより、アセンブラは MDMX 命令を受け入れるように指示されます。 -no-mdmx はこのオプションをオフにします。

-mdsp
-mno-dsp

DSP リリース 1 アプリケーション固有の拡張機能のコードを生成します。これにより、アセンブラは DSP リリース 1 命令を受け入れるように指示されます。 -mno-dsp はこのオプションをオフにします。

-mdspr2
-mno-dspr2

DSP リリース 2 アプリケーション固有の拡張機能のコードを生成します。このオプションは、-mdsp を意味します。これにより、アセンブラは DSP Release 2 命令を受け入れるように指示されます。 -mno-dspr2 はこのオプションをオフにします。

-mdspr3
-mno-dspr3

DSP リリース 3 アプリケーション固有の拡張機能のコードを生成します。このオプションは、-mdsp および -mdspr2 を意味します。これにより、アセンブラは DSP Release 3 命令を受け入れるように指示されます。 -mno-dspr3 はこのオプションをオフにします。

-mmsa
-mno-msa

MIPS SIMD アーキテクチャ拡張機能のコードを生成します。これにより、アセンブラは MSA 命令を受け入れるように指示されます。 -mno-msa はこのオプションをオフにします。

-mxpa
-mno-xpa

MIPS eXtended Physical Address (XPA) 拡張のコードを生成します。これにより、アセンブラは XPA 命令を受け入れるように指示されます。 -mno-xpa はこのオプションをオフにします。

-mmt
-mno-mt

MT アプリケーション固有の拡張機能のコードを生成します。これは、アセンブラに MT 命令を受け入れるように指示します。 -mno-mt はこのオプションをオフにします。

-mmcu
-mno-mcu

MCU アプリケーション固有の拡張機能のコードを生成します。これにより、アセンブラは MCU 命令を受け入れるように指示されます。 -mno-mcu はこのオプションをオフにします。

-mcrc
-mno-crc

MIPS 巡回冗長検査 (CRC) アプリケーション固有拡張のコードを生成します。これにより、アセンブラは CRC 命令を受け入れるように指示されます。 -mno-crc はこのオプションをオフにします。

-mginv
-mno-ginv

Global INValidate (GINV) アプリケーション固有拡張機能のコードを生成します。これは、アセンブラに GINV 命令を受け入れるように指示します。 -mno-ginv はこのオプションをオフにします。

-mloongson-mmi
-mno-loongson-mmi

Loongson マルチメディア拡張命令 (MMI) アプリケーション固有拡張のコードを生成します。これにより、アセンブラは MMI 命令を受け入れるように指示されます。 -mno-loongson-mmi はこのオプションをオフにします。

-mloongson-cam
-mno-loongson-cam

Loongson コンテンツ アドレス メモリ (CAM) 命令のコードを生成します。これにより、アセンブラは Loongson CAM 命令を受け入れるように指示されます。 -mno-loongson-cam はこのオプションをオフにします。

-mloongson-ext
-mno-loongson-ext

Loongson EXTensions (EXT) 命令のコードを生成します。これにより、アセンブラは Loongson EXT 命令を受け入れるように指示されます。 -mno-loongson-ext はこのオプションをオフにします。

-mloongson-ext2
-mno-loongson-ext2

Loongson EXTensions R2 (EXT2) 命令のコードを生成します。このオプションは、-mloongson-ext を意味します。これにより、アセンブラは Loongson EXT2 命令を受け入れるように指示されます。 -mno-loongson-ext2 はこのオプションをオフにします。

-minsn32
-mno-insn32

microMIPS プロセッサ用のコードを生成する場合は、32 ビット命令エンコーディングのみを使用してください。このオプションは、16 ビット命令の使用を禁止します。これは、アセンブリ ファイルの先頭に .set insn32 を置くのと同じです。 -mno-insn32 はこのオプションをオフにします。これは、アセンブリ ファイルの先頭に .set noinsn32 を置くのと同じです。デフォルトでは -mno-insn32 が選択されており、すべての命令を使用できます。

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

--no-construct-floats オプションは、倍幅レジスタを構成する 2 つの単幅浮動小数点レジスタに値の半分をロードすることにより、倍幅浮動小数点定数の構築を無効にします。デフォルトでは--construct-floats が選択されており、これらの浮動小数点定数の構築が可能です。

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

--relax-branch オプションを使用すると、範囲外のブランチを緩和できます。デフォルトでは--no-relax-branch が選択されており、範囲外のブランチではエラーが発生します。

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

ISA モード間の無効な遷移の分岐チェックを無視します。ブランチのセマンティクスには ISA モードの切り替えが用意されていないため、ほとんどの場合、ブランチがエンコードされた ISA モードは、ブランチのターゲット ラベルの ISA モードと同じである必要があります。したがって、GAS には、2 つの ISA モードが一致することをブランチ アセンブリで検証するチェックが実装されています。 -mignore-branch-isa はこれらのチェックを無効にします。デフォルトでは -mno-ignore-branch-isa が選択されているため、ISA モード間の移行が必要な無効なブランチではエラーが発生します。

-mnan=encoding

IEEE 754-2008 (-mnan=2008) またはレガシー (-mnan=legacy) の NaN エンコード形式を選択します。後者がデフォルトです。

--emulation=name

このオプションは以前は、ELF 出力と ECOFF 出力の両方をサポートする IRIX 5 などのターゲットで ELF 出力と ECOFF 出力を切り替えるために使用されていました。 MIPS ECOFF サポートは GAS 2.24 で削除されたため、このオプションは現在ではほとんど役に立ちません。これは下位互換性のために残されています。使用可能な構成名は、mipself、mipslef、および mipsbelf です。出力は常に ELF であるため、mipself を選択しても効果はありません。 mipslelf と mipsbelf はそれぞれリトルエンディアン出力とビッグエンディアン出力を選択しますが、-EL と -EB は現在、代わりに優先オプション。

-nocpp

as はこのオプションを無視します。ネイティブ ツールとの互換性のために受け入れられます。

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

乗算オーバーフローとゼロ除算の処理方法を制御します。 --trap または --no-break (これらは同義です) はトラップ例外を受け取ります (命令セット アーキテクチャ レベル 2 以上でのみ機能します)。 --break または --no-trap (同義語およびデフォルト) は、ブレーク例外を受け取ります。

-n

このオプションを使用すると、as はマクロから nop 命令を生成するたびに警告を発行します。

次のオプションは、as が LoongArch プロセッサ用に設定されている場合に使用できます。

-fpic
-fPIC

位置に依存しないコードを生成する

-fno-pic

位置に依存しないコードを生成しない (デフォルト)

次のオプションは、as がメタ プロセッサ用に設定されている場合に使用できます。

"-mcpu=metac11"

Meta 1.1 のコードを生成します。

"-mcpu=metac12"

Meta 1.2 のコードを生成します。

"-mcpu=metac21"

Meta 2.1 のコードを生成します。

"-mfpu=metac21"

コードで Meta 2.1 の FPU ハードウェアを使用できるようにします。

MMIX 固有のオプションのドキュメントについては、情報ページを参照してください。

次のオプションは、as が NDS32 プロセッサ用に設定されている場合に使用できます。

"-O1"

パフォーマンスを最適化します。

"-Os"

スペースを最適化します。

"-EL"

リトルエンディアンデータ出力を生成します。

"-EB"

リトルエンディアンデータ出力を生成します。

"-mpic"

PICを生成します。

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

このファイルの fp-as-gp 緩和を抑制します。

"-mb2bb-relax"

連続したブランチの最適化。

"-mno-all-relax"

このファイルのすべての緩和を抑制します。

"-march=<arch name>"

アーキテクチャ 用にアセンブルします。これは、v3、v3j、v3m、v3f、v3s、v2、v2j、v2f、v2s になります。

"-mbaseline=<baseline>"

ベースライン (v2、v3、v3m など) 用にアセンブルします。

"-mfpu-freg=FREG"

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"

abi バージョンを指定します。 には、v1、v2、v2fp、v2fpp を指定できます。

"-m[no-]mac"

乗算命令のサポートを有効/無効にします。

"-m[no-]div"

除算命令のサポートを有効/無効にします。

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

16ビット拡張の有効化/無効化

"-m[no-]dx-regs"

d0/d1レジスタの有効化/無効化

"-m[no-]perf-ext"

パフォーマンス拡張機能の有効化/無効化

"-m[no-]perf2-ext"

パフォーマンス拡張 2 を有効/無効にする

"-m[no-]string-ext"

文字列拡張の有効化/無効化

"-m[no-]reduced-regs"

縮小レジスタ構成 (GPR16) オプションを有効/無効にする

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

AUDIO ISA 拡張機能の有効化/無効化

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

FPU SP 拡張の有効化/無効化

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

FPU DP 拡張の有効化/無効化

"-m[no-]fpu-fma"

FPU 融合乗算加算命令の有効化/無効化

"-mall-ext"

すべての拡張機能と手順のサポートをオンにする

次のオプションは、as が PowerPC プロセッサ用に設定されている場合に使用できます。

-a32

ELF32 または XCOFF32 を生成します。

-a64

ELF64 または XCOFF64 を生成します。

-K PIC

ELF フラグに EF_PPC_RELOCATABLE_LIB を設定します。

-mpwrx | -mpwr2

POWER/2 (RIOS2) のコードを生成します。

-mpwr

POWER (RIOS1) のコードを生成する

-m601

PowerPC 601 用のコードを生成します。

-mppc, -mppc32, -m603, -m604

PowerPC 603/604 用のコードを生成します。

-m403, -m405

PowerPC 403/405 用のコードを生成します。

-m440

PowerPC 440.BookE および一部の 405 命令用のコードを生成します。

-m464

PowerPC 464 用のコードを生成します。

-m476

PowerPC 476 用のコードを生成します。

-m7400, -m7410, -m7450, -m7455

PowerPC 7400/7410/7450/7455 用のコードを生成します。

-m750cl, -mgekko, -mbroadway

PowerPC 750CL/Gekko/Broadway 用のコードを生成します。

-m821, -m850, -m860

PowerPC 821/850/860 用のコードを生成します。

-mppc64, -m620

PowerPC 620/625/630 用のコードを生成します。

-me200z2, -me200z4

e200 バリアント、LSP を使用した e200z2、SPE を使用した e200z4 のコードを生成します。

-me300

PowerPC e300 ファミリ用のコードを生成します。

-me500, -me500x2

Motorola e500 コア コンプレックスのコードを生成します。

-me500mc

Freescale e500mc コア コンプレックスのコードを生成します。

-me500mc64

Freescale e500mc64 コア コンプレックスのコードを生成します。

-me5500

Freescale e5500 コア コンプレックスのコードを生成します。

-me6500

Freescale e6500 コア コンプレックスのコードを生成します。

-mlsp

LSP 命令を有効にします。 (SPE と SPE2 を無効にします。)

-mspe

Motorola SPE 命令のコードを生成します。 (LSP を無効にします。)

-mspe2

Freescale SPE2 命令のコードを生成します。 (LSP を無効にします。)

-mtitan

AppliedMicro Titan コア コンプレックスのコードを生成します。

-mppc64bridge

ブリッジ inns を含む PowerPC 64 用のコードを生成します。

-mbooke

32 ビット BookE のコードを生成します。

-ma2

A2 アーキテクチャ用のコードを生成します。

-maltivec

AltiVec 命令を使用してプロセッサ用のコードを生成します。

-mvle

Freescale PowerPC VLE 命令のコードを生成します。

-mvsx

Vector-Scalar (VSX) 命令を使用してプロセッサ用のコードを生成します。

-mhtm

ハードウェア トランザクション メモリ命令を使用してプロセッサ用のコードを生成します。

-mpower4, -mpwr4

Power4 アーキテクチャ用のコードを生成します。

-mpower5, -mpwr5, -mpwr5x

Power5 アーキテクチャ用のコードを生成します。

-mpower6, -mpwr6

Power6 アーキテクチャ用のコードを生成します。

-mpower7, -mpwr7

Power7 アーキテクチャ用のコードを生成します。

-mpower8, -mpwr8

Power8 アーキテクチャ用のコードを生成します。

-mpower9, -mpwr9

Power9 アーキテクチャ用のコードを生成します。

-mpower10, -mpwr10

Power10 アーキテクチャ用のコードを生成します。

-mfuture

「将来の」アーキテクチャのコードを生成します。

-mcell
-mcell

Cell Broadband Engine アーキテクチャのコードを生成します。

-mcom

コードの生成 Power/PowerPC 共通命令。

-many

任意のアーキテクチャ (PWR/PWRX/PPC) のコードを生成します。

-mregnames

レジスタのシンボリック名を許可します。

-mno-regnames

レジスタにシンボリック名を使用しないでください。

-mrelocatable

GCC の -mrelocatable オプションのサポート。

-mrelocatable-lib

GCC の -mrelocatable-lib オプションのサポート。

-memb

ELF フラグの PPC_EMB ビットを設定します。

-mlittle, -mlittle-endian, -le

リトル エンディアン マシン用のコードを生成します。

-mbig, -mbig-endian, -be

ビッグ エンディアン マシン用のコードを生成します。

-msolaris

Solaris 用のコードを生成します。

-mno-solaris

Solaris 用のコードを生成しないでください。

-nops=count

アライメント ディレクティブがcount 個を超える nops を挿入する場合は、先頭に分岐を置いて nops の実行をスキップします。

次のオプションは、as が RISC-V プロセッサ用に構成されている場合に使用できます。

-fpic
-fPIC

位置に依存しないコードを生成する

-fno-pic

位置に依存しないコードを生成しない (デフォルト)

-march=ISA

ISA で指定されているように、ベース isa を選択します。たとえば、-march=rv32ima。このオプションとアーキテクチャ属性が設定されていない場合、アセンブラはデフォルトの構成設定 --with-arch=ISA をチェックします。

-misa-spec=ISAspec

デフォルトの isa 仕様バージョンを選択します。 ISA のバージョンが -march で設定されていない場合、アセンブラはデフォルトで選択された仕様に従ってバージョンを設定します。このオプションが設定されていない場合、アセンブラはデフォルトの構成設定 --with-isa-spec=ISAspec をチェックします。

-mpriv-spec=PRIVspec

特権仕様のバージョンを選択します。選択した仕様に従って、CSR が有効かどうかを判断できます。このオプションと特権属性が設定されていない場合、アセンブラはデフォルトの構成設定 --with-priv-spec=PRIVspec をチェックします。

-mabi=ABI

ABI を選択します。ilp32 または lp64 のいずれかを選択します。オプションで、その後に単精度、倍精度、または 4 倍精度の浮動小数点呼び出し規約を示す f、d、または q が続くか、ソフト浮動小数点呼び出し規約を示す none が続きます。 。また、ilp32 の後に e を続けて、常にソフトフロートである RVE ABI を示すこともできます。

-mrelax

リンカーの緩和を利用して、シンボル アドレスを具体化するために必要な命令の数を減らします。 (デフォルト)

-mno-relax

リンカー緩和を行わないでください。

-march-attr

.attribute ディレクティブが設定されていない場合は、riscv elf 属性セクションのデフォルトの内容を生成します。このセクションは、リンカーまたはランタイム ローダーが互換性をチェックするために必要な情報を記録するために使用されます。この情報には、ISA 文字列、スタック アライメント要件、アライメントされていないメモリ アクセス、特権仕様のメジャー、マイナー、およびリビジョン バージョンが含まれます。

-mno-arch-attr

.attribute ディレクティブが設定されていない場合は、デフォルトの riscv elf 属性セクションを生成しません。

-mcsr-check

ISA 依存の CRS および読み取り専用 CSR の CSR チェックを有効にします。 ISA 依存の CSR は、特定の ISA が設定されている場合にのみ有効です。読み取り専用の CSR は、CSR 命令によって書き込むことはできません。

-mno-csr-check

CSRチェックをしない。

-mlittle-endian

リトル エンディアン マシン用のコードを生成します。

-mbig-endian

ビッグ エンディアン マシン用のコードを生成します。

RX 固有のオプションのドキュメントについては、情報ページを参照してください。

次のオプションは、as が s390 プロセッサ ファミリ用に設定されている場合に使用できます。

-m31
-m64

ワード サイズを 31/32 ビットまたは 64 ビットから選択します。

-mesa
-mzarch

アーキテクチャ モードとして、Enterprise System Architecture (esa) または z/Architecture モード (zarch) のいずれかを選択します。

-march=processor

どの s390 プロセッサ バリアントがターゲットであるかを指定します。g5 (または arch3)、g6、z900 (または >arch5)、z990 (または arch6)、z9-109、z9-ec (または arch7)、z10 (または arch8)、z196 (または arch9) 、zEC12 (または arch10)、 z13 (または arch11)、 z14 (または arch12)、z15 (または arch13)、または z16 (または arch14) )。

-mregnames
-mno-regnames

レジスタのシンボリック名を許可または禁止します。

-mwarn-areg-zero

ベース レジスタまたはインデックス レジスタのオペランドが指定されていても、0 と評価されるたびに警告します。

次のオプションは、TMS320C6000 プロセッサ用に設定されている場合に使用できます。

-march=arch

アーキテクチャアーチからの命令(のみ)を有効にします。デフォルトでは、すべての命令が許可されます。 arch の次の値が受け入れられます: c62x、c64x、c64x+、c67x 、c67x+、c674x。

-mdsbt
-mno-dsbt

-mdsbt オプションを使用すると、アセンブラは値 1 の Tag_ABI_DSBT 属性を生成し、コードが DSBT アドレス指定を使用していることを示します。デフォルトの -mno-dsbt オプションでは、タグの値が 0 になり、コードが DSBT アドレス指定を使用しないことを示します。異なるタイプのオブジェクト (DSBT および非 DSBT) がリンクされている場合、リンカは警告を発行します。

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

-mpid= オプションを使用すると、アセンブラはコードで使用されるデータ アドレス指定の形式を示す値を持つ Tag_ABI_PID 属性を生成します。デフォルトの -mpid=no は、位置依存のデータ アドレス指定を示し、-mpid=near は、near DP アドレス指定を使用した GOT アクセスでの位置非依存のアドレス指定を示します。 -mpid=far は、far DP アドレッシングを使用した GOT アクセスによる位置に依存しないアドレッシングを示します。このオプションの異なる設定で構築されたオブジェクトが相互にリンクされている場合、リンカーは警告を発行します。

-mpic
-mno-pic

-mpic オプションにより、アセンブラは値 1 の Tag_ABI_PIC 属性を生成します。これは、コードが位置に依存しないコード アドレッシングを使用していることを示します。-mno -pic オプション (デフォルト) では、タグの値が 0 になり、位置に依存するコード アドレス指定を示します。異なるタイプ (位置依存および位置独立) のオブジェクトが相互にリンクされている場合、リンカは警告を発します。

-mbig-endian
-mlittle-endian

指定されたエンディアンネスのコードを生成します。デフォルトはリトルエンディアンです。

次のオプションは、as が TILE-Gx プロセッサ用に構成されている場合に使用できます。

-m32 | -m64

ワード サイズを 32 ビットまたは 64 ビットから選択します。

-EB | -EL

エンディアンをビッグ エンディアン (-EB) またはリトル エンディアン (-EL) から選択します。

次のオプションは、as が Visium プロセッサ用に構成されている場合に使用できます。

-mtune=arch

このオプションはターゲット アーキテクチャを指定します。ターゲット アーキテクチャ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次の名前が認識されます: mcm24 mcm gr5 gr6

次のオプションは、as が Xtensa プロセッサ用に構成されている場合に使用できます。

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

リテラル プールの処理を制御します。デフォルトは --no-text-section-literals で、リテラルは出力ファイルの別のセクションに配置されます。これにより、リテラル プールをデータ RAM/ROM に配置できるようになります。 --text-section-literals を使用すると、リテラルは参照にできるだけ近づけるためにテキスト セクションに散在します。これは、リテラルがテキスト セクションの L32R 命令の範囲外になる大規模なアセンブリ ファイルの場合に必要になる場合があります。リテラルは、.literal_position ディレクティブに続くプール、または ENTRY 命令に続くプールにグループ化されます。これらのオプションは、PC 相対の L32R 命令を介して参照されるリテラルにのみ影響します。絶対モード L32R 命令のリテラルは個別に処理されます。

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

リテラル プールの処理を制御します。デフォルトは --no-auto-litpools で、--text-section-literals が存在しない場合、リテラルは出力ファイルの別のセクションに配置されます。これにより、リテラル プールをデータ RAM/ROM に配置できるようになります。 --auto-litpools を使用すると、リテラルは参照にできるだけ近づけるためにテキスト セクションに散在し、明示的な .literal_position ディレクティブは必要ありません。これは、関数の先頭の 1 つのリテラル プールが最後の L32R 命令によって到達できない可能性がある非常に大規模な関数の場合に必要になる場合があります。これらのオプションは、PC 相対の L32R 命令を介して参照されるリテラルにのみ影響します。絶対モード L32R 命令のリテラルは個別に処理されます。 --text-section-literals と一緒に使用すると、--auto-litpools が優先されます。

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

L32R 命令が絶対アドレス指定を使用するか、PC 相対アドレス指定を使用するかをアセンブラに示します。プロセッサに絶対アドレス指定オプションが含まれている場合、デフォルトでは絶対 L32R 再配置が使用されます。それ以外の場合は、PC 相対の L32R 再配置のみを使用できます。

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

自動アライメントを有効または無効にして、コード サイズをある程度犠牲にして分岐ペナルティを軽減します。この最適化はデフォルトで有効になっています。アセンブラは、アライメント要件が固定されている LOOP などの命令を常にアライメントすることに注意してください。

--longcalls | --no-longcalls

より広範囲のアドレスにわたる通話を許可するための通話命令の変換を有効または無効にします。このオプションは、呼び出しターゲットが範囲外になる可能性がある場合に使用する必要があります。コード サイズとパフォーマンスの両方が低下する可能性がありますが、リンカーは通常、呼び出しが範囲内に到達したときに不要なオーバーヘッドを最適化して取り除くことができます。デフォルトは--no-longcalls です。

--transform | --no-transform

緩和と最適化の両方を含む、Xtensa 命令のすべてのアセンブラー変換を有効または無効にします。デフォルトは --transform です。 --no-transform は、命令がアセンブリ ソースで指定されているとおりである必要があるまれな場合にのみ使用してください。 --no-transform を使用すると、範囲外の命令オペランドがエラーになります。

--rename-section oldname=newname

oldname セクションの名前を newname に変更します。このオプションを複数回使用して、複数のセクションの名前を変更できます。

--trampolines | --no-trampolines

ジャンプ命令の変換を有効または無効にして、より広範囲のアドレスにわたるジャンプを可能にします。このオプションは、ジャンプ ターゲットが範囲外になる可能性がある場合に使用する必要があります。このようなジャンプがない場合、このオプションはコード サイズやパフォーマンスに影響を与えません。デフォルトは--トランポリンです。

--abi-windowed | --abi-call0

.xtensa.info セクションに書き込まれた ABI タグを選択します。 ABIタグはアセンブリコードのABIを示します。一貫性のない ABI タグを持つオブジェクト ファイルをリンクしようとすると、リンカーによって警告が発行されます。デフォルトの ABI は、Xtensa コア構成によって選択されます。

次のオプションは、as が Z80 プロセッサ用に構成されている場合に使用できます。

@chapter Z80 依存機能

コマンドラインオプション

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

このオプションはターゲットプロセッサを指定します。ターゲット プロセッサ上で実行されない命令をアセンブルしようとすると、アセンブラはエラー メッセージを発行します。次のプロセッサ名が認識されます: z80、z180、ez80、gbz80、z80n、r800。基本的な命令セットに加えて、いくつかの拡張ニーモニックを受け入れるようにアセンブラに指示できます。たとえば、-march=z180+sli+infc は、SLI 命令と IN F,(C) を使用して z180 を拡張します。 >。現在、次の拡張機能がサポートされています: full (すべての既知の命令)、adl (デフォルトでは ADL CPU モード、eZ80 のみ)、sli (命令) SLI、SLL または SL1 として知られています)、xyhl (インデックス レジスタの半分を含む命令: IXL) 、IXH、IYL、IYH)、xdcb (RotOp (II のような命令) +d),R および BitOp n,(II+d),R)、infc (命令 IN F,(C) または IN (C))、outc0 (命令 OUT (C),0)。基本的な命令セットを拡張するのではなく、- で始まる拡張ニーモニックがそれぞれの機能を無効にすることに注意してください。 -march=z80-full+xyhl は、まずデフォルトの拡張をすべて削除し、追加します。インデックスレジスタの半分のみをサポートします。このオプションが指定されていない場合は、-march=z80+xyhl+infc が想定されます。

-local-prefix=prefix

指定されたプレフィックスを持つすべてのラベルをローカルとしてマークします。ただし、そのようなラベルはコード内で明示的にグローバルとしてマークできます。このオプションは、デフォルトのローカル ラベル プレフィックス .L を変更せず、新しいものを追加するだけです。

-colonless

コロンのないラベルを受け入れます。行頭のすべてのシンボルはラベルとして扱われます。

-sdcc

SDCC によって生成されたアセンブラー コードを受け入れます。

-fp-s=FORMAT

単精度浮動小数点数形式。デフォルト: ieee754 (32 ビット)。

-fp-d=FORMAT

倍精度浮動小数点数形式。デフォルト: ieee754 (64 ビット)。

関連項目

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

著作権

著作権 (c) 1991-2023 Free Software Foundation, Inc.

GNU Free Documentation License、バージョン 1.3 または Free Software Foundation によって発行されたそれ以降のバージョンの条件に基づいて、このドキュメントをコピー、配布、および/または変更する許可が与えられます。不変セクション、表紙テキスト、裏表紙テキストはありません。ライセンスのコピーは、「GNU Free Documentation License」というセクションに含まれています。