コマンドラインのマニュアル

Man » as マニュアルオンライン - as man ページの詳細なオンラインドキュメント

🌍
AS - ポータブルなGNUアセンブラ。

構文

as [-a[cdghilns][=file]]
[--alternate]
[--compress-debug-sections] [--nocompress-debug-sections]
[-D]
[--dump-config]
[--debug-prefix-map old=new]
[--defsym sym=val]
[--elf-stt-common=[no|yes]]
[--emulation=name]
[-f]
[-g] [--gstabs] [--gstabs+]
[--gdwarf-<N>] [--gdwarf-sections]
[--gdwarf-cie-version=VERSION]
[--generate-missing-build-notes=[no|yes]]
[--gsframe] [--gsframe=[no|yes]]
[--hash-size=N]
[--help] [--target-help]
[--info] [--no-info]
[-I dir]
[-J]
[-K]
[--keep-locals]
[-L]
[--listing-lhs-width=NUM]
[--listing-lhs-width2=NUM]
[--listing-rhs-width=NUM]
[--listing-cont-lines=NUM]
[--multibyte-handling=[allow|warn|warn-sym-only]]
[--no-pad-sections]
[-o objfile] [-R]
[--scfi=experimental]
[--sectname-subst]
[--size-check=[error|warning]]
[--statistics]
[-v] [--verbose]
[-version] [--version]
[-W] [--no-warn] [--warn] [--fatal-warnings]
[-w] [-x]
[-Z] [@FILE]
[target-options]
[--|files ...]

ターゲット

AArch64 ターゲットオプション: [-EB|-EL] [-mabi=ABI]

Alpha ターゲットオプション: [-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]

Target i386 オプション: [--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]

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

Target IP2K オプション: [-mip2022|-mip2022ext]

Target M32C オプション: [-m32c|-m16c] [-relax] [-h-tick-hex]

Target M32R オプション: [--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]

Target M680X0 オプション: [-l] [-m68000|-m68010|-m68020|...]

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

Target MCORE オプション: [-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]

Target Meta オプション: [-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu]

Target MICROBLAZE オプション: [-mlittle-endian] [-mbig-endian]

Target MIPS オプション: [-nocpp] [-EL] [-EB] [-O[最適化レベル]] [-g[デバッグレベル]] [-G 数値] [-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] [-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]

Target MMIX オプション: [--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]

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

Target 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] [-nops=count]

ターゲット PRU オプション: [-link-relax] [-mnolink-relax] [-mno-warn-regname-label]

ターゲット RISC-V オプション: [-fpic|-fPIC|-fno-pic] [-march=ISA|Profiles|Profiles_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] [-mwarn-regtype-mismatch=strict -mwarn-regtype-mismatch=relaxed -mwarn-regtype-mismatch=no -mno-warn-regtype-mismatch]

ターゲット SCORE オプション: [-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 |-me ]

ターゲット 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アセンブラを使用(または使用したことがある)場合、別のアーキテクチャで使用するときにも、比較的似た環境になるはずです。各バージョンは、オブジェクトファイル形式、ほとんどのアセンブラディレクティブ(疑似命令と呼ばれることが多い)、およびアセンブラ構文など、他のバージョンと多くの共通点があります。

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

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

asに渡すコマンドラインには、ゼロ個以上の入力ファイル名を含めることができます。入力ファイルは(左から右へ)読み込まれます。コマンドライン引数(任意の場所にある)で、特別な意味を持たないものは、入力ファイル名として解釈されます。

asにファイル名を指定せずに実行すると、標準入力(通常はターミナル)から1つの入力ファイルを読み込もうとします。プログラムをアセンブルするものがなくなったことをasに伝えるために、Ctrl-Dと入力する必要がある場合があります。

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

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

asは、標準エラーファイル(通常はターミナル)に警告メッセージとエラーメッセージを書き込む場合があります。これは、コンパイラがasを自動的に実行するときには発生すべきではありません。警告は、asが欠陥のあるプログラムのアセンブルを続行できるようにするために行われた仮定を報告します。エラーは、アセンブリを停止する深刻な問題を報告します。

GNU Cコンパイラを介してasを呼び出す場合は、-Waオプションを使用して、引数をアセンブラに渡すことができます。アセンブラ引数は、カンマで区切る必要があります(-Waも)。たとえば、次のようになります。

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

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

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

オプション

@file

コマンドラインオプションをファイルから読み込みます。読み込まれたオプションは、元の@fileオプションの代わりに挿入されます。ファイルが存在しないか、読み取れない場合、オプションは文字通りに扱われ、削除されません。

ファイル内のオプションは、空白文字で区切られます。空白文字自体をオプションに含める場合は、オプション全体を単一引用符または二重引用符で囲みます。バックスラッシュを含む文字(バックスラッシュを含む)を含める場合は、含める文字の前にバックスラッシュを付けます。ファイル自体に別の@fileオプションを含めることができます。そのようなオプションは再帰的に処理されます。


-a[cdghilmns]

さまざまな方法でリスト表示を有効にします。

-ac 偽の条件文を省略する

-ad デバッグディレクティブを省略する

-ag バージョンや渡されたオプションなど、一般的な情報を表示する

-ah 高レベルのソースコードを表示する

-al アセンブリコードを表示する

-ali
ginsn付きのアセンブリコードを表示する

-am マクロ展開を表示する

-an フォーム処理を省略する

-as シンボルを表示する

=file
リストファイルのファイル名を指定する

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

--alternate

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

--compress-debug-sections

DWARFデバッグセクションを、zlibを使用して、ELF ABIのSHF_COMPRESSEDで圧縮します。結果として得られるオブジェクトファイルは、古いリンカーやオブジェクトファイルユーティリティと互換性がない場合があります。圧縮によってセクションが大きくなる場合、圧縮は行われません。

--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 に定義します。value は整数定数である必要があります。C言語と同様に、先頭に 0x を付けると 16 進数、先頭に 0 を付けると 8 進数として解釈されます。シンボルの値は、ソースファイル内で ".set" 疑似命令を使用してオーバーライドできます。

--dump-config

アセンブラの設定を表示し、終了します。

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

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


--emit-local-absolute

事前に定義された(ローカル)絶対シンボルも、出力されるシンボルテーブルに含める。これは --strip-local-absolute の完全な逆の効果を持つわけではない。

--emulation=name

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

-f "fast"

空白とコメントの事前処理をスキップする(ソースがコンパイラからの出力であると仮定する)。

-g
--gen-debug

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

--gstabs

アセンブラの各行に対して、stabs デバッグ情報を生成する。これにより、デバッガがそれを処理できる場合、アセンブリコードのデバッグに役立つ可能性がある。

--gstabs+

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

--gdwarf-2

アセンブラの各行に対して、DWARF2 デバッグ情報を生成する。これにより、デバッガがそれを処理できる場合、アセンブリコードのデバッグに役立つ可能性がある。ただし、このオプションはすべてのターゲットでサポートされているわけではないことに注意する。

--gdwarf-3

このオプションは --gdwarf-2 オプションと同じであるが、DWARF 仕様バージョン 3 に基づいて、追加のデバッグ情報の生成を可能にする。ただし、このオプションを有効にしても、必ず追加の情報が生成されるわけではなく、追加情報を生成するかどうかはターゲットによって異なる。

--gdwarf-4

このオプションは --gdwarf-2 オプションと同じであるが、DWARF 仕様バージョン 4 に基づいて、追加のデバッグ情報の生成を可能にする。ただし、このオプションを有効にしても、必ず追加の情報が生成されるわけではなく、追加情報を生成するかどうかはターゲットによって異なる。

--gdwarf-5

このオプションは --gdwarf-2 オプションと同じであるが、DWARF 仕様バージョン 5 に基づいて、追加のデバッグ情報の生成を可能にする。ただし、このオプションを有効にしても、必ず追加の情報が生成されるわけではなく、追加情報を生成するかどうかはターゲットによって異なる。

--gdwarf-sections

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


--gdwarf-cie-version=version

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

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

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

--gsframe
--gsframe
--gsframe=no
--gsframe=yes

CFI ディレクティブから .sframe セクションを作成します。明示的な --gsframe=yes オプションは、--gsframe と同じように動作します。--gsframe=no を使用して生成を抑制できます。デフォルトは、--enable-default-sframe 構成オプションによって制御できます。

--hash-size N

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

--help

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

--target-help

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

--info

情報メッセージを抑制しません。

--no-info

情報メッセージを抑制します。

-I dir

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

-J 符号付きオーバーフローについて警告しません。

-K 長いオフセット用に差分テーブルが変更された場合に警告を発行します。

-L
--keep-locals

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

--listing-lhs-width=number

アセンブリリストの出力データ列の最大幅を、アセンブリリストの出力データ列の最大幅をワード単位で number に設定します。

--listing-lhs-width2=number

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

--listing-rhs-width=number

アセンブリリストに表示される入力ソース行の最大幅を、アセンブリリストに表示される入力ソース行の最大幅をバイト単位で number に設定します。

--listing-cont-lines=number

アセンブリリストで単一の入力行に対して出力する最大行数を number + に設定します。

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

アセンブルされたオブジェクトファイルを objfile として指定します。

-R データセクションをテキストセクションに結合します。

--reduce-memory-overheads

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

--scfi=experimental

このオプションは、アセンブラが手書きの入力に対して CFI (Control Flow Information) を合成するかどうかを制御します。 入力にすでに合成可能な CFI ディレクティブが含まれている場合、アセンブラはそれを無視し、警告を発行します。 ^ -scfi=experimental は、インラインアセンブリを含む、コンパイラによって生成されたコードには使用しないでください。 この実験的なサポートは進行中です。 System V AMD64 ABI のみがサポートされます。

各アセンブリ入力関数は、.type ディレクティブで開始する必要があり、理想的には .size ディレクティブを使用して終了する必要があります。 SCFI を使用する場合、各 .type ディレクティブは、GAS に対して新しい FDE (Function Descriptor Entry) を開始するように指示します。 これは、各 .type ディレクティブで、以前の命令ブロック (存在する場合) が、個別の FDE として終了することを意味します。

--sectname-subst

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

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

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

--statistics

アセンブリで使用した最大メモリ量 (バイト単位) と合計時間 (秒単位) を出力します。

--strip-local-absolute

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

-v
--verbose

as のバージョンを出力します。

--version
-version

as のバージョンを出力して終了します。

-W
--no-warn

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

--warn

警告メッセージを抑制しないか、エラーとして扱います。

--fatal-warnings

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

-w 無視されます。

-x 無視されます。

-Z エラーが発生した場合でも、オブジェクトファイルを生成します。

-- | files ...

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

次のオプションは、as が ARM アーキテクチャの 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-a520", "cortex-a710", "cortex-a720", "ares", "exynos-m1", "falkor", "neoverse-n1", "neoverse-n2", "neoverse-e1", "neoverse-v1", "qdf24xx", "saphira", "thunderx", "vulcan", "xgene1", "xgene2", "cortex-r82", "cortex-x1", "cortex-x2", "cortex-x3", および "cortex-x4"。特殊な名前 "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.9-a", "armv8-r", "armv9-a", "armv9.1-a", "armv9.2-a", "armv9.3-a", "armv9.4-a", "armv9.5-a"。

-mcpu と -march の両方が指定されている場合、アセンブラは -mcpu の設定を使用します。どちらも指定されていない場合、アセンブラはデフォルトで -mcpu=all になります。

アーキテクチャオプションは、-mcpu オプションと同じ命令セット拡張オプションで拡張できます。-mcpu とは異なり、拡張機能はデフォルトで常に有効になっているわけではありません。

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

-mno-verbose-error このオプションは、AArch64 gas で詳細なエラーメッセージを無効にします。

-menable-sysreg-checking このオプションは、ターゲットアーキテクチャで実行されないシステムレジスタへのアクセスをアセンブルしようとした場合にエラーメッセージを発行するように設定します。

次のオプションは、アセンブラが Alpha プロセッサ用に構成されている場合に利用できます。

-mcpu このオプションは、ターゲットプロセッサを指定します。ターゲットプロセッサで実行されない命令をアセンブルしようとすると、アセンブラは、その命令をマクロとして展開するか、エラーメッセージを発行します。 このオプションは、".arch" ディレクティブと同等です。

次のプロセッサ名が認識されます。21064、"21064a"、21066、21068、21164、"21164a"、"21164pc"、21264、"21264a"、"21264b"、"ev4"、"ev5"、"lca45"、"ev5"、"ev56"、"pca56"、"ev6"、"ev67"、"ev68"。特別な名前 "all" を使用して、アセンブラがすべての Alpha プロセッサに対して有効な命令を受け入れるようにすることができます。


OSF/1 での既存の実装と、MILO(Linux ARC ブートローダー)内の既存の実装をサポートするために、番号付きのプロセッサ名(例:21064)は、プロセッサ固有の PALcode 命令を有効にし、「エレクトロ・ヴラシック」と呼ばれる名前(例:「ev4」)は、プロセッサ固有の PALcode 命令を無効にします。

-mdebug
-no-mdebug
stabs ディレクティブとプロシージャ記述子に対する「.mdebug」エンカプセレーションの生成を有効または無効にします。デフォルトでは、最初の stabs ディレクティブが表示されたときに「.mdebug」が自動的に有効になります。

-relax
このオプションでは、すべてのリロケーションをオブジェクトファイルに配置し、一部のリロケーションをアセンブリ時に解決することで、スペースを節約するのではなく、オブジェクトファイルにすべてのリロケーションを配置します。ただし、このオプションはすべてのシンボル演算をオブジェクトファイルに伝播するわけではありません。なぜなら、すべてのシンボル演算を表現できるわけではないからです。ただし、このオプションは特定のアプリケーションで役立つ場合があります。

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

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

-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 コードが生成されたことを指定します。

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

-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 を無効にします。

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

@chapter BPF 依存機能

BPF オプション

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

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

-mdialect=dialect

このオプションは、アセンブル中に認識するアセンブリ言語の方言を指定します。アセンブラは、normal および pseudoc をサポートします。

-misa-spec=spec

このオプションは、アセンブルする際に使用する BPF 命令セットのバージョンを指定します。サポートされている BPF ISA バージョンは、v1、v2、v3、および v4 です。

値として xbpf を指定すると、GCC がテスト目的で使用する追加の命令を認識します。ただし、これは有効な BPF ではないことに注意してください。

-mno-relax

このオプションは、アセンブラに命令をリラックスさせないように指示します。

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

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

-march=archname

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

-mcpu=cpuname

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

-EL
-mlittle-endian

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

-EB
-mbig-endian

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

-fpic
-pic

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

-mljump
-mno-ljump

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

-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 依存機能

オプション

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

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

-mach=name
H8300 機械バリアントを設定します。次の機械名が認識されます。"h8300h"、"h8300hn"、"h8300s"、"h8300sn"、"h8300sx"、および "h8300sxn"。

以下のオプションは、`as` が i386 プロセッサ用に構成されている場合に利用できます。

--32 | --x32 | --64
ワードサイズを 32 ビットまたは 64 ビットとして選択します。--32 は Intel i386 アーキテクチャを意味し、--x32 および --64 は AMD x86-64 アーキテクチャと 32 ビットまたは 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", "znver5", "znver6", "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", "lahf_sahf", "monitor", "adx", "rdseed", "prfchw", "smap", "mpx", "sha", "rdpid", "ptwrite", "cet", "gfni", "vaes", "vpclmulqdq", "prefetchwt1", "clflushopt", "se1", "clwb", "movdiri", "movdir64b", "enqcmd", "serialize", "tsxldtrk", "kl", "widekl", "hreset", "avx512f", "avx512cd", "avx512er", "avx512pf", "avx512vl", "avx512bw", "avx512dq", "avx512ifma", "avx512vbmi", "avx512_4fmaps", "avx512_4vnniw", "avx512_vpopcntdq", "avx512_vbmi2", "avx512_vnni", "avx512_bitalg", "avx512_vp2intersect", "tdx", "avx512_bf16", "avx_vnni", "avx512_fp16", "avx512_bmm", "prefetchi", "avx_ifma", "avx_vnni_int8", "cmpccxadd", "wrmsrns", "msrlist", "avx_ne_convert", "rao_int", "fred", "lkgs", "avx_vnni_int16", "sha512", "sm3", "sm4", "pbndkb", "avx10.1", "avx10.1/512", "avx10.1/256", "avx10.1/128", "user_msr", "msr_imm", "apx_f", "apx_nci", "apx_ndd", "apx_nf", "apx_nci_ndd_nf", "avx10.2", "avx10.2/512", "avx10.2/256", "avx10.2/128", "movrs", "amx_int8", "amx_bf16", "amx_fp16", "amx_complex", "amx_transpose", "amx_tf32", "amx_fp8", "amx_movrs", "amx_avx512", "amx_tile", "vmx", "vmfunc", "smx", "xsave", "xsaveopt", "xsavec", "xsaves", "aes", "pclmul", "fsgsbase", "rdrnd", "f16c", "bmi2", "fma", "movbe", "ept", "lzcnt", "popcnt", "hle", "rtm", "tsx", "invpcid", "clflush", "mwaitx", "clzero", "wbnoinvd", "pconfig", "waitpkg", "uintr", "cldemote", "rdpru", "mcommit", "sev_es", "lwp", "fma4", "xop", "cx16", "syscall", "rdtscp", "3dnow", "3dnowa", "sse4a", "sse5", "snp", "invlpgb", "tlbsync", "rmpquery", "rmpread", "svme", "gmism2", "gmiccs", "padlockrng2", "padlockphe2", "padlockxmodx", "padlock"。 これらの拡張命令ニーモニックの前に "no" を付けることで、それぞれの機能(および依存する機能)を無効にできます。 さらに、`-march=avx10.<N>` のサフィックスは、ベクトル長の制限を適用します。つまり、これらを使用すると、それ以外の場合は有効になるはずの、より広いベクトルまたはマスクレジスタオペランドを持つすべての命令が無効になります。

^ arch ディレクティブが -march と組み合わせて使用される場合、.arch ディレクティブが優先されます。

-mtune=CPU

このオプションは、最適化するプロセッサを指定します。-march オプションと組み合わせて使用​​する場合、-march オプションで指定されたプロセッサの命令のみが生成されます。

有効な CPU 値は、-march=CPU のプロセッサリストと同じです。

-moperand-check=none
-moperand-check=warning
-moperand-check=error

これらのオプションは、アセンブラが特定の命令オペランドまたはオペランドの組み合わせをチェックするかどうかを制御します。オペランドからオペランドのサイズを推論できず、命令サフィックスによっても指定されていない命令の例です。 ^ moperand-check=none は、アセンブラがこれらのチェックを実行しないようにします。 ^ moperand-check=warning は、アセンブラがそれぞれのチェックが失敗した場合に警告を発行するようにします。これはデフォルトです。-moperand-check=error は、アセンブラがそれぞれのチェックが失敗した場合にエラーを発行するようにします。

-msse2avx

このオプションは、アセンブラが SSE 命令を VEX プレフィックスでエンコードし、AVX を利用可能にすることを指定します。拡張された汎用レジスタ (GPR) を使用する SSE 命令は、EVEX プレフィックスでエンコードされ、AVX512 または AVX10 を利用可能にする必要があります。

-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 は、スカラー AVX 命令を 128 ビットのベクトル長でエンコードします。これはデフォルトです。-mavxscalar=256 は、スカラー AVX 命令を 256 ビットのベクトル長でエンコードします。

警告: これは、CPU のエラーのために、生成されたコードが特定のモデルで動作しない可能性があるため、本番環境のコードで使用しないでください。

-mvexwig=0
-mvexwig=1

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


    警告:本オプションは、CPUのエラーにより、結果のコードが特定のモデルで動作しない可能性があるため、実運用環境のコードには使用しないでください。

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

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

    -mevexwig=0
    -mevexwig=1

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

    -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

PECOFFターゲットでは、このオプションは、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を、64ビットモードではlock addl $0x0, (%rsp)、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 はリラックス・リロケーションを生成しません。

-mtls-check=no
-mtls-check=yes

これらのオプションは、アセンブラが TLS リロケーションをチェックするかどうかを制御します。-mtls-check=yes は TLS リロケーションをチェックし、-mtls-check=no は TLS リロケーションをチェックしません。デフォルトは、configure オプション --enable-x86-tls-check で制御できます。

-malign-branch-boundary=NUM

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

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

このオプションは、アラインするブランチのタイプを指定します。TYPE は、jcc(条件ジャンプ)、fused(フューズド条件ジャンプ)、jmp(無条件ジャンプ)、call(コール)、ret(リターン)、indirect(間接ジャンプおよびコール)の組み合わせです。デフォルトは -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

これらのオプションは、アセンブラがロード命令の後に lfence を生成するかどうかを制御します。-mlfence-after-load=yes は lfence を生成し、-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

これらのオプションは、アセンブラが間接ニア・ブランチ命令の前に lfence を生成するかどうかを制御します。-mlfence-before-indirect-branch=all は、レジスタ経由の間接ニア・ブランチの前に lfence を生成し、メモリ経由の間接ニア・ブランチの前に警告を発行します。また、明示的な -mlfence-before-ret がない場合は、-mlfence-before-ret=shl を暗黙的に設定します。-mlfence-before-indirect-branch=register は、レジスタ経由の間接ニア・ブランチの前に lfence を生成します。-mlfence-before-indirect-branch=memory は、メモリ経由の間接ニア・ブランチの前に警告を発行します。-mlfence-before-indirect-branch=none は、lfence を生成も警告を発行もせず、これはデフォルトです。-mlfence-after-load=yes の場合、レジスタ経由の間接ニア・ブランチの前に lfence は生成されません。これは、ブランチのターゲット・レジスタをロードした後に 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 命令とともに or 命令を生成します。 -mlfence-before-ret=shl または -mlfence-before-ret=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 命令をそれぞれ RC ビットを 01、10、および 11 でエンコードします。

-mamd64
-mintel64

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

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

命令エンコーディングを最適化し、より小さい命令サイズにします。-O および -O1 は、64 ビットレジスタに読み込まれる命令を、31 ビットまたは 32 ビットの即値を持つ 32 ビットレジスタに読み込まれる命令としてエンコードし、64 ビットレジスタをクリアする命令を、32 ビットレジスタをクリアする命令としてエンコードし、256 ビット/512 ビットの VEX/EVEX ベクトルレジスタをクリアする命令を、128 ビットの VEX ベクトルレジスタをクリアする命令としてエンコードし、128 ビット/256 ビットの EVEX ベクトルレジスタをロード/ストアする命令を、VEX ベクトルレジスタをロード/ストアする命令としてエンコードし、128 ビット/256 ビットの EVEX パックされた整数の論理命令を、128 ビット/256 ビットの VEX パックされた整数の論理命令としてエンコードします。

-O2 は、-O1 の最適化に加えて、256 ビット/512 ビットの EVEX ベクトルレジスタをクリアする命令を、128 ビットの EVEX ベクトルレジスタをクリアする命令としてエンコードします。64 ビットモードでは、VEX でエンコードされた、交換可能なソースオペランドを持つ命令は、ソースオペランドを交換し、2 バイトの VEX プレフィックス形式を使用できるようにします (3 バイトの形式の代わりに)。AND や OR などの特定の形式で、同じ (レジスタ) オペランドが 2 回指定されている場合、TEST 命令に変更されます。

-Os は、-O2 最適化に加えて、16ビット、32ビット、および64ビットのレジスタテストを、8ビットレジスタの即値テストとしてエンコードします。-O0 はこの最適化を無効にします。

次のオプションは、as が Ubicom IP2K シリーズ用に構成されている場合に利用できます。

-mip2022ext

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

-mip2022

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

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

-m32c

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

-m16c

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

-relax

リンク時のリラックスを有効にします。

-h-tick-hex

0x00 スタイルのヘクス定数の代わりに、H'00 スタイルのヘクス定数をサポートします。

次のオプションは、as が Renesas M32R(旧 Mitsubishi M32R)シリーズ用に構成されている場合に利用できます。

--m32rx

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

--warn-explicit-parallel-conflicts または --Wp

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

--no-warn-explicit-parallel-conflicts または --Wnp

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

次のオプションは、as が 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 と互換性はありませんが、両方を組み合わせることもできます。これは、コプロセッサ命令をメインプロセッサでエミュレートできるためです。

-m68851 | -mno-68851

ターゲットマシンは、メモリ管理ユニットコプロセッサを持っている(または持っていない)。デフォルトでは、68020 以降では MMU が存在するものと想定します。

PDP-11 マシン依存の機能オプションの詳細については、PDP-11-Options を参照してください。

-mpic | -mno-pic

位置に依存しないコード(または位置に依存するコード)を生成します。デフォルトは -mpic です。

-mall
-mall-extensions

すべての命令セット拡張を有効にします。これはデフォルトです。

-mno-extensions

すべての命令セット拡張を無効にします。

-mextension | -mno-extension

特定の命令セット拡張を有効にする(または無効にする)。

-mcpu

特定の CPU でサポートされている命令セット拡張を有効にし、他のすべての拡張を無効にします。

-mmachine

特定のマシンモデルでサポートされている命令セット拡張を有効にし、他のすべての拡張を無効にします。


次のオプションは、アセンブラが picoJava プロセッサ用に構成されている場合に利用できます。

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

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

次のオプションは、アセンブラが PRU プロセッサ用に構成されている場合に利用できます。

-mlink-relax

LD が LDI32 命令を最適化し、式の上位 16 ビットをチェックすることを前提とします。それらがすべてゼロの場合、LD は LDI32 命令を単一の LDI 命令に短縮します。この場合、「as」は異なる式に対して DIFF リロケーションを出力します。

-mno-link-relax

LD が LDI32 命令を最適化しないことを前提とします。その結果、DIFF リロケーションは出力されません。

-mno-warn-regname-label

ラベル名がレジスタ名と一致する場合に警告を表示しないようにします。通常、アセンブラのプログラマーは、この警告が表示されるようにしたいと考えます。C コンパイラは、これをオフにすることを検討する場合があります。

次のオプションは、アセンブラが MIPS プロセッサ用に構成されている場合に利用できます。

-G num

このオプションは、「gp」レジスタを使用して暗黙的に参照できるオブジェクトの最大サイズを設定します。これは、DECstation で Ultrix を実行する場合など、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 リリース 2、MIPS32 リリース 3、MIPS32 リリース 5、MIPS32 リリース 6、MIPS64、MIPS64 リリース 2、MIPS64 リリース 3、MIPS64 リリース 5、および MIPS64 リリース 6 ISA プロセッサに対応します。

-march=cpu

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

-mtune=cpu

特定の MIPS CPU 用にスケジュールおよび調整を行います。

-mfix7000
-mno-fix7000

mfhi または mflo 命令の宛先レジスタの読み取りが、次の 2 つの命令で発生する場合に、nop を挿入します。

-mfix-rm7000
-mno-fix-rm7000

dmult または dmultu 命令の後にロード命令が続く場合に、nop を挿入します。

-mfix-r5900
-mno-fix-r5900

ブランチ命令が 6 以下の命令からなる短いループの終わりに配置され、その先行命令の遅延スロットへのスケジュールを試みないようにします。代わりに、常に「nop」命令をスケジュールします。特定の条件下では、ハードウェアのバグにより、短いループバグが発生し、ループが 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リリース2命令を受け入れるようになります。-mno-dspr2は、このオプションを無効にします。

-mdspr3
-mno-dspr3
DSPリリース3アプリケーション固有の拡張のコードを生成します。このオプションは-mdspと-mdspr2を意味します。これにより、アセンブラはDSPリリース3命令を受け入れるようになります。-mno-dspr3は、このオプションを無効にします。

-mmsa
-mno-msa

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

-mxpa
-mno-xpa

MIPS拡張物理アドレス(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

グローバル無効化(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拡張(EXT)命令用のコードを生成します。これにより、アセンブラはLoongson EXT命令を受け入れるようになります。-mno-loongson-extは、このオプションを無効にします。

-mloongson-ext2
-mno-loongson-ext2

Loongson拡張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つのシングル幅の浮動小数点レジスタ(ダブル幅レジスタを構成するもの)に値の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
このオプションは、かつては IRIX 5 などの ELF と ECOFF の出力の間で切り替えるために使用されていました。GAS 2.24 で MIPS ECOFF のサポートが削除されたため、このオプションはほとんど役に立たなくなりました。ただし、後方互換性のために保持されています。

利用可能な構成名は、mipself、mipslelf、および mipsbelf です。mipself を選択しても、出力は常に ELF であるため、効果はありません。mipslelf と mipsbelf はそれぞれリトルエンディアン出力とビッグエンディアン出力を選択しますが、-EL および -EB が推奨されるオプションです。

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

--trap
--no-trap
--break
--no-break
乗算のオーバーフローとゼロ除算をどのように処理するかを制御します。--trap または --no-break (同義) はトラップ例外を発生させます (ISA レベル 2 以上でのみ機能します)。--break または --no-trap (これも同義で、デフォルト) はブレーク例外を発生させます。

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

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

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

-fno-pic
位置に依存しないコードを生成しません (デフォルト)。

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

"-mcpu=metac11"
Meta 1.1 用のコードを生成します。

"-mcpu=metac12"
Meta 1.2 用のコードを生成します。

"-mcpu=metac21"
Meta 2.1 用のコードを生成します。

"-mfpu=metac21"
Meta 2.1 の FPU ハードウェアを使用するコードを許可します。

MMIX 固有のオプションについては、info ページを参照してください。

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

"-O1"
パフォーマンスのために最適化します。

"-Os"
スペースのために最適化します。

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

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

"-mpic"
PIC を生成します。

"-mno-fp-as-gp-relax"
このファイルに対する fp-as-gp リラックスを抑制します。

"-mb2bb-relax"
バックツーバック分岐の最適化。

"-mno-all-relax"

このファイルに対するすべてのリラックス処理を抑制します。

"-march=<arch name>"

^ arch name>アーキテクチャ用にアセンブルします。v3, v3j, v3m, v3f, v3s, v2, v2j, v2f, v2sなどが使用できます。

"-mbaseline=<baseline>"

^ baseline>ベースライン用にアセンブルします。v2, v3, v3mなどが使用できます。

"-mfpu-freg=FREG"

FPU構成を指定します。

"0      8 SP /  4 DP レジスタ"
"1     16 SP /  8 DP レジスタ"
"2     32 SP / 16 DP レジスタ"
"3     32 SP / 32 DP レジスタ"
"-mabi=abi"

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"

すべての拡張および命令サポートを有効にします。

次のオプションは、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

PowerPC 64用のコードを生成し、ブリッジ命令を含めます。

-mbooke

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


-ma2

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

-maltivec

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

-mvle

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

-mvsx

ベクトル・スカラー(VSX)命令を持つプロセッサ用のコードを生成します。

-mhtm

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

-mpower4, -mpwr4

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

-mpower5, -mpwr5, -mpwr5x

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

-mpower6, -mpwr6

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

-mpower7, -mpwr7

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

-mpower8, -mpwr8

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

-mpower9, -mpwr9

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

-mpower10, -mpwr10

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

-mpower11, -mpwr11

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

-mfuture

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

-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

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

-nops=count

アライメントディレクティブがcount個以上のNOPを挿入する場合、NOPの実行をスキップするために、最初に分岐を追加します。

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

-fpic
-fPIC

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

-fno-pic

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

-march=ISA|Profiles|Profiles_ISA

ベースISA、Profiles、またはProfiles_ISAで指定されたISAを選択します。例:-march=rv32ima、-march=RVI20U64、-march=RVI20U64_d。このオプションとアーキテクチャ属性が設定されていない場合、アセンブラはデフォルトの構成設定--with-arch=ISAを確認します。

-misa-spec=ISAspec

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

-mpriv-spec=PRIVspec

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

-mabi=ABI

ABIを選択します。ABIは「ilp32」または「lp64」のいずれかで、オプションで「f」、「d」、または「q」を付けて、それぞれ単精度、倍精度、または四倍精度の浮動小数点呼び出し規約を示します。または、いずれも使用しない場合、または「e」を使用して、ソフトフローティングポイント呼び出し規約(「e」はソフトフローティングポイントRVE ABIを示します)を示します。


-mrelax

リンカーのリラックス機能を利用して、シンボルのアドレスを生成するために必要な命令数を削減します。(デフォルト)

-mno-relax

リンカーのリラックス機能を無効にします。

-march-attr

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

-mno-arch-attr

^ attributeディレクティブが設定されていない場合に、デフォルトのRISC-V ELF属性セクションを生成しません。

-mcsr-check

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

-mno-csr-check

CSRチェックを行いません。

-mlittle-endian

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

-mbig-endian

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

RX固有のオプションについては、infoページを参照してください。

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

-m31
-m64

ワードサイズを、31/32ビットまたは64ビットのいずれかを選択します。

-mesa
-mzarch

アーキテクチャモードを、エンタープライズシステムアーキテクチャ(esa)またはz/アーキテクチャモード(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)、またはz17(またはarch15)を指定できます。

-mregnames
-mno-regnames

レジスタのシンボリック名を許可するかどうかを制御します。

-mwarn-areg-zero

ベースまたはインデックスレジスタのオペランドが指定されたものの、評価結果がゼロになった場合に警告を発します。

-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch

アセンブラがレジスタ名の型チェックを実行するかどうかを制御し、オペランドレジスタの型との不一致がある場合に警告メッセージを生成します。デフォルト(relaxed引数を使用して復元できます)では、緩やかなレジスタ名の型チェックが実行されます。これにより、浮動小数点レジスタ(FPR)の名前%f0から%f15がベクトルレジスタ(VR)オペランドの引数として指定でき、ベクトルレジスタ(VR)の名前%v0から%v0が浮動小数点レジスタ(FPR)オペランドの引数として指定できます。これは、FPRがVRの下位半分に埋め込まれているため許容されます。strict引数を使用すると、厳密なレジスタ名の型チェックが実行されます。no引数(-mno-warn-regtype-mismatchと同等)を使用すると、レジスタ名の型チェックが無効になります。

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


-march=arch
アーキテクチャ arch の命令のみを有効にします。デフォルトでは、すべての命令が許可されます。

次の arch の値が受け入れられます。"c62x", "c64x", "c64x+", "c67x", "c67x+", "c674x"。

-mdsbt
-mno-dsbt
-mdsbt オプションは、アセンブラに "Tag\_ABI\_DSBT" 属性を値 1 で生成させ、コードが DSBT アドレス指定を使用していることを示します。-mno-dsbt オプションはデフォルトであり、タグに値 0 を設定し、コードが DSBT アドレス指定を使用していないことを示します。リンカーは、DSBT 形式と非 DSBT 形式が異なるオブジェクトがリンクされる場合に警告を発します。

-mpid=no
-mpid=near
-mpid=far
-mpid= オプションは、アセンブラに "Tag\_ABI\_PID" 属性を値で生成させ、コードが使用するデータアドレス指定の形式を示します。-mpid=no はデフォルトであり、位置依存のデータアドレス指定を示します。-mpid=near は、GOT アクセスを使用して、近くの DP アドレス指定を使用した位置独立のアドレス指定を示します。-mpid=far は、GOT アクセスを使用して、遠くの DP アドレス指定を使用した位置独立のアドレス指定を示します。リンカーは、これらのオプションの設定が異なるオブジェクトがリンクされる場合に警告を発します。

-mpic
-mno-pic
-mpic オプションは、アセンブラに "Tag\_ABI\_PIC" 属性を値 1 で生成させ、コードが位置独立のコードアドレス指定を使用していることを示します。-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" ディレクティブは必要ありません。これは、単一のリテラルプールが関数の先頭に配置されている場合、関数の最後に配置された "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

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


--abi-windowed | --abi-call0

アセンブリコードのABIを示すABIタグを".xtensa.info"セクションに書き込みます。リンカーは、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"(ez80のみ、ADL CPUモードがデフォルト)、"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)、およびbinutilsとldのInfoエントリ。

著作権

Copyright (c) 1991-2025 Free Software Foundation, Inc.

このドキュメントは、GNU Free Documentation License、Version 1.3、またはFree Software Foundationによって発行されたそれ以降のバージョンの条項の下で、コピー、配布、および/または変更することができます。不変セクション、フロントカバーテキスト、バックカバーテキストはありません。ライセンスのコピーは、「GNU Free Documentation License」というセクションに記載されています。