AS(1) GNU Development Tools AS(1)

AS - اسمبلر چندسکویی گنو

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]]
[--gsframe-3]
[--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]
[--reloc-section-sym=[all|internal|none]]
[--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]

گزینه‌های معماری 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].PP گزینه‌های هدف 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]]

گزینه‌های هدف Meta:
[-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] گزینه‌های هدف MICROBLAZE:
[-mlittle-endian] [-mbig-endian]

گزینه‌های هدف 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]

گزینه‌های هدف 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]
[-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 <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].SH "توضیحات (DESCRIPTION)" در واقع، GNU as خانواده‌ای از اسمبلرها است. اگر از اسمبلر GNU روی یک معماری استفاده می‌کنید (یا قبلاً استفاده کرده‌اید)، هنگام استفاده از آن روی معماری دیگر با محیط نسبتاً مشابهی روبرو خواهید شد. هر نسخه اشتراکات فراوانی با نسخه‌های دیگر دارد، از جمله قالب‌های فایل شیء (object file)، بیشتر دستورالعمل‌های اسمبلر (که اغلب pseudo-ops یا شبه‌دستور نامیده می‌شوند) و نحو (syntax) اسمبلر.

هدف اصلی as اسمبل کردن خروجی کامپایلر C گنو، "gcc"، برای استفاده توسط پیونددهنده "ld" است. با این حال، تلاش شده است تا as هر آنچه را که دیگر اسمبلرهای همان ماشین اسمبل می‌کنند، به درستی اسمبل کند. هرگونه استثنا به‌طور صریح مستند شده است. این بدان معنا نیست که as همیشه از همان نحوی استفاده می‌کند که اسمبلر دیگری برای همان معماری به کار می‌برد؛ برای مثال، چندین نسخه ناسازگار از نحو زبان اسمبلی 680x0 شناخته شده است.

هر بار که as را اجرا می‌کنید، دقیقاً یک برنامه مبدأ را اسمبل می‌کند. برنامه مبدأ از یک یا چند فایل تشکیل شده است. (ورودی استاندارد نیز یک فایل محسوب می‌شود.)

شما به as یک خط فرمان می‌دهید که شامل صفر یا چند نام فایل ورودی است. فایل‌های ورودی (از نام فایل سمت چپ به راست) خوانده می‌شوند. هر آرگومان خط فرمان (در هر موقعیتی) که معنای خاصی نداشته باشد، به عنوان نام فایل ورودی در نظر گرفته می‌شود.

اگر هیچ نام فایلی به as ندهید، تلاش می‌کند یک فایل ورودی را از ورودی استاندارد as بخواند که معمولاً ترمینال شما است. ممکن است لازم باشد ctl-D را وارد کنید تا به as اعلام کنید برنامه‌ای برای اسمبل کردن باقی نمانده است.

اگر نیاز دارید صراحتاً فایل ورودی استاندارد را در خط فرمان خود مشخص کنید، از -- استفاده کنید.

اگر مبدأ خالی باشد، as یک فایل شیء کوچک و خالی تولید می‌کند.

ممکن است as هشدارها و پیام‌های خطا را در فایل خطای استاندارد (معمولاً ترمینال شما) بنویسد. زمانی که یک کامپایلر as را به‌طور خودکار اجرا می‌کند، نباید چنین اتفاقی بیفتد. هشدارها فرضیاتی را گزارش می‌دهند که برای ادامه اسمبل یک برنامه ناقص توسط as اتخاذ شده‌اند؛ خطاها مشکلات جدی را گزارش می‌دهند که فرایند اسمبل را متوقف می‌سازد.

اگر as را از طریق کامپایلر C گنو فراخوانی می‌کنید، می‌توانید از گزینه -Wa برای ارسال آرگومان‌ها به اسمبلر استفاده کنید. آرگومان‌های اسمبلر باید با کاما از یکدیگر (و از -Wa) جدا شوند. برای مثال:

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

این دستور دو گزینه را به اسمبلر ارسال می‌کند: -alh (انتشار فهرستی در خروجی استاندارد شامل کد مبدأ سطح‌بالا و کد اسمبلی) و -L (نگه‌داشتن نمادهای داخلی در جدول نمادها).

معمولاً نیازی به استفاده از این سازوکار -Wa ندارید، زیرا بسیاری از گزینه‌های خط فرمان کامپایلر به‌طور خودکار توسط کامپایلر به اسمبلر ارسال می‌شوند. (می‌توانید گرداننده کامپایلر گنو را با گزینه -v فراخوانی کنید تا دقیقاً ببینید چه گزینه‌هایی را به هر مرحله کامپایل، از جمله اسمبلر، ارسال می‌کند.)

@file
گزینه‌های خط فرمان را از file می‌خواند. گزینه‌های خوانده‌شده به جای گزینه اصلی @file درج می‌شوند. اگر file وجود نداشته باشد یا خوانده نشود، با گزینه به صورت لغوی برخورد شده و حذف نخواهد شد.

گزینه‌ها در file با نویسه‌های فاصله از هم جدا می‌شوند. یک نویسه فاصله را می‌توان با احاطه کردن کل گزینه درون نقل‌قول تکی یا دوتایی گنجاند. هر نویسه‌ای (از جمله بک‌اسلش) را می‌توان با درج یک پیشوند بک‌اسلش قبل از آن وارد کرد. خود file ممکن است شامل گزینه‌های @file اضافی باشد؛ هر یک از این گزینه‌ها به‌طور بازگشتی پردازش خواهند شد.

فعال‌سازی فهرست‌بندی به روش‌های گوناگون:
صرف‌نظر از شرطی‌های نادرست
صرف‌نظر از رهنمودهای اشکال‌زدایی
شامل اطلاعات عمومی، مانند نسخه as و گزینه‌های ارسال‌شده
شامل کد مبدأ سطح‌بالا
شامل کد اسمبلی
شامل کد اسمبلی همراه با ginsn
شامل بسط‌های ماکرو
صرف‌نظر از پردازش فرم‌ها (forms)
شامل نمادها
=file
تنظیم نام فایل فهرست‌بندی

می‌توانید این گزینه‌ها را ترکیب کنید؛ برای مثال، از -aln برای فهرست اسمبلی بدون پردازش فرم‌ها استفاده کنید. گزینه =file، در صورت استفاده، باید آخرین گزینه باشد. گزینه -a به تنهایی به‌طور پیش‌فرض معادل -ahls است.

شروع در حالت ماکروی جایگزین (alternate macro mode).
بخش‌های اشکال‌زدایی DWARF را با استفاده از zlib به همراه SHF_COMPRESSED برگرفته از ELF ABI فشرده می‌کند. فایل شیء حاصل ممکن است با پیونددهنده‌ها و ابزارهای قدیمی‌تر فایل شیء سازگار نباشد. توجه داشته باشید که اگر فشرده‌سازی باعث بزرگ‌تر شدن یک بخش شود، فشرده نخواهد شد.
این گزینه‌ها چگونگی فشرده‌سازی بخش‌های اشکال‌زدایی 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 بخش‌های اشکال‌زدایی DWARF را با استفاده از قالب منسوخ‌شده zlib-gnu فشرده می‌کند. نام بخش‌های اشکال‌زدایی تغییر یافته تا با .zdebug آغاز شوند. --compress-debug-sections=zstd بخش‌های اشکال‌زدایی DWARF را با استفاده از zstd فشرده می‌کند. توجه داشته باشید که اگر فشرده‌سازی در عمل باعث بزرگ‌تر شدن یک بخش شود، نه فشرده می‌شود و نه نام آن تغییر می‌یابد.
بخش‌های اشکال‌زدایی DWARF را فشرده نمی‌کند. این معمولاً حالت پیش‌فرض برای همه هدف‌ها به جز x86/x86_64 است، اما می‌توان با یک گزینه زمان پیکربندی آن را بازنویسی کرد.
اشکال‌زدایی را در بخش‌های پشتی (backends) مختص هدف، در صورت پشتیبانی، فعال می‌کند؛ در غیر این صورت نادیده گرفته می‌شود. حتی در صورت نادیده گرفته شدن، این گزینه برای سازگاری اسکریپت‌ها با فراخوانی سایر اسمبلرها پذیرفته می‌شود.
هنگام اسمبل کردن فایل‌ها در دایرکتوری old، اطلاعات اشکال‌زدایی مربوط به آن‌ها را در عوض به‌صورت قرار داشتن در new ثبت می‌کند.
نماد sym را قبل از اسمبل کردن فایل ورودی برابر با مقدار value تعریف می‌کند. value باید یک ثابت عدد صحیح باشد. همانند زبان C، پیشوند 0x نشان‌دهنده یک مقدار هگزادسیمال، و پیشوند 0 نشان‌دهنده یک مقدار اکتال است. مقدار این نماد می‌تواند درون یک فایل مبدأ با استفاده از شبه‌دستور ".set" بازنویسی شود.
چگونگی پیکربندی اسمبلر را نمایش می‌دهد و سپس خارج می‌شود.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر ELF باید نمادهای عمومی (common symbols) را با نوع "STT_COMMON" تولید کند یا خیر. حالت پیش‌فرض می‌تواند با گزینه پیکربندی --enable-elf-stt-common کنترل شود.
حتی نمادهای مطلق پیش‌تعریف‌شده (محلی) را در جدول نماد خروجی منتشر می‌کند. توجه داشته باشید که این گزینه دقیقاً برعکس --strip-local-absolute نیست.
اگر اسمبلر برای پشتیبانی از چندین پیکربندی هدف مختلف پیکربندی شده باشد، از این گزینه می‌توان برای انتخاب حالت مورد نظر استفاده کرد.
«سریع» (fast)---رد شدن از پیش‌پردازش فاصله‌ها و توضیحات (با این فرض که کد مبدأ خروجی کامپایلر است).
تولید اطلاعات اشکال‌زدایی برای هر خط از سورس اسمبلر با استفاده از قالب اشکال‌زدایی ترجیح‌داده‌شده توسط هدف (target). در حال حاضر این به معنای یکی از قالب‌های STABS، ECOFF یا DWARF2 است. هنگامی که قالب اشکال‌زدایی DWARF باشد، بخش‌های ".debug_info" و ".debug_line" تنها زمانی منتشر می‌شوند که فایل اسمبلی خودش آن‌ها را تولید نکرده باشد.
تولید اطلاعات اشکال‌زدایی stabs برای هر خط اسمبلر. در صورتی که اشکال‌زدا بتواند آن را مدیریت کند، ممکن است به اشکال‌زدایی کد اسمبلی کمک کند.
تولید اطلاعات اشکال‌زدایی stabs برای هر خط اسمبلر، همراه با پسوندهای GNU که احتمالاً تنها gdb می‌تواند آن‌ها را مدیریت کند، و ممکن است باعث از کار افتادن سایر اشکال‌زداها یا امتناع آن‌ها از خواندن برنامه شما شود. این گزینه ممکن است به اشکال‌زدایی کد اسمبلی کمک کند. در حال حاضر تنها پسوند GNU، مکان دایرکتوری کاری فعلی در زمان اسمبل کردن است.
تولید اطلاعات اشکال‌زدایی DWARF2 برای هر خط اسمبلر. در صورتی که اشکال‌زدا بتواند آن را مدیریت کند، ممکن است به اشکال‌زدایی کد اسمبلی کمک کند. توجه کنید---این گزینه تنها توسط برخی از هدف‌ها پشتیبانی می‌شود، نه همه آن‌ها.
این گزینه مشابه گزینهٔ --gdwarf-2 است، با این تفاوت که امکان تولید اطلاعات اشکال‌زدایی اضافی بر اساس نسخهٔ ۳ از مشخصات DWARF را فراهم می‌کند. توجه - فعال‌سازی این گزینه تولید هیچ اطلاعات اضافی را تضمین نمی‌کند و تصمیم برای انجام آن بر پایهٔ هر هدف اتخاذ می‌شود.
این گزینه مشابه گزینهٔ --gdwarf-2 است، با این تفاوت که امکان تولید اطلاعات اشکال‌زدایی اضافی بر اساس نسخهٔ ۴ از مشخصات DWARF را فراهم می‌کند. توجه - فعال‌سازی این گزینه تولید هیچ اطلاعات اضافی را تضمین نمی‌کند و تصمیم برای انجام آن بر پایهٔ هر هدف اتخاذ می‌شود.
این گزینه مشابه گزینهٔ --gdwarf-2 است، با این تفاوت که امکان تولید اطلاعات اشکال‌زدایی اضافی بر اساس نسخهٔ ۵ از مشخصات DWARF را فراهم می‌کند. توجه - فعال‌سازی این گزینه تولید هیچ اطلاعات اضافی را تضمین نمی‌کند و تصمیم برای انجام آن بر پایهٔ هر هدف اتخاذ می‌شود.
به جای ایجاد یک بخش .debug_line، مجموعه‌ای از بخش‌های .debug_line.foo ایجاد می‌کند که در آن foo نام بخش کد مربوطه است. به عنوان مثال، یک بخش کد به نام .text.func اطلاعات شماره خط dwarf خود را در بخشی به نام .debug_line.text.func قرار خواهد داد. اگر بخش کد فقط .text نامیده شود، آنگاه بخش خط اشکال‌زدایی همچنان بدون هیچ پسوندی فقط .debug_line نامیده خواهد شد.
کنترل می‌کند کدام نسخه از مدخل‌های اطلاعات مشترک DWARF (یا CIEها) تولید شوند. زمانی که این پرچم مشخص نشود، مقدار پیش‌فرض نسخهٔ ۱ است، اگرچه برخی از هدف‌ها می‌توانند این مقدار پیش‌فرض را تغییر دهند. سایر مقادیر ممکن برای version عبارتند از ۳ یا ۴.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر ELF در صورت عدم وجود یادداشت‌های ویژگی ساخت GNU در سورس‌های ورودی، باید آن‌ها را تولید کند یا خیر. مقدار پیش‌فرض را می‌توان از طریق گزینهٔ پیکربندی --enable-generate-build-notes کنترل کرد.
ایجاد بخش .sframe از دستورالعمل‌های CFI. گزینهٔ صریح --gsframe=yes همانند --gsframe عمل می‌کند. تولید آن را می‌توان با --gsframe=no متوقف کرد. مقدار پیش‌فرض را می‌توان توسط گزینهٔ پیکربندی --enable-default-sframe کنترل کرد. نسخهٔ فعلی داده‌های ردپای پشتهٔ SFrame منتشر شده، SFRAME_VERSION_3 است.
تولید اطلاعات ردپای پشتهٔ SFrame بر اساس نسخهٔ ۳ از مشخصات آن.
نادیده گرفته می‌شود. جهت سازگاری خط فرمان با سایر اسمبلرها پشتیبانی می‌شود.
چاپ خلاصه‌ای از گزینه‌های خط فرمان و خروج.
چاپ خلاصه‌ای از تمامی گزینه‌های خاصِ هدف و خروج.
پیام‌های اطلاعاتی سرکوب (نادیده) نشوند.
پیام‌های اطلاعاتی سرکوب (نادیده) شوند.
افزودن دایرکتوری dir به فهرست جستجو برای دستورالعمل‌های ".include".
در مورد سرریز علامت‌دار (signed overflow) هشدار نده.
هنگامی که جدول‌های تفاضل برای جابه‌جایی‌های طویل (long displacements) تغییر می‌یابند، هشدار صادر کن.
نگه‌داشتن نمادهای داخلی (در جدول نمادها). این نمادها با پیشوندهای برچسب محلی وابسته به سیستم شروع می‌شوند، معمولاً .L برای سیستم‌های ELF یا L برای سیستم‌های سنتی a.out.
تنظیم حداکثر عرض ستون دادهٔ خروجی برای سیاههٔ اسمبلر، بر حسب کلمه (words)، به number.
تنظیم حداکثر عرض ستون دادهٔ خروجی برای خطوط ادامه‌دار در سیاههٔ اسمبلر، بر حسب کلمه (words)، به number.
تنظیم حداکثر عرض یک خط از سورس ورودی به صورت نمایش‌یافته در سیاهه، به number بایت.
تنظیم حداکثر تعداد خطوط چاپ‌شده در سیاهه برای یک خط ورودی واحد به number + 1.
چگونگی مدیریت نویسه‌های چندبایتی در ورودی توسط اسمبلر را کنترل می‌کند. حالت پیش‌فرض (که با استفاده از آرگومان allow قابل بازیابی است) این است که اجازهٔ ورود چنین نویسه‌هایی بدون اشکال داده شود. استفاده از آرگومان warn باعث می‌شود اسمبلر در صورت مواجهه با هر نویسهٔ چندبایتی، یک پیام هشدار صادر کند. استفاده از آرگومان warn-sym-only تنها زمانی موجب تولید هشدار می‌شود که نمادی با نام حاوی نویسه‌های چندبایتی تعریف شود. (ارجاع به نمادهای تعریف‌نشده هشداری تولید نخواهد کرد).
از پر کردن (padding) انتهای بخش‌های خروجی توسط اسمبلر برای تراز شدن با تراز آن بخش جلوگیری می‌کند. حالت پیش‌فرض، پد کردن بخش‌ها است؛ اما این کار می‌تواند فضایی را که ممکن است در هدف‌های دارای محدودیت شدید حافظه مورد نیاز باشد، هدر دهد.
نام‌گذاری فایل هدف خروجی از as به عنوان objfile.
ادغام بخش داده (data section) در بخش متن (text section).
نادیده گرفته می‌شود. جهت سازگاری با ابزارهایی پشتیبانی می‌شود که همین گزینه را هم به اسمبلر و هم به پیونددهنده ارسال می‌کنند.
کنترل می‌کند که آیا بازنشانی‌های ارجاع‌دهنده به نمادهای با پیوند محلی، برای استفاده از نمادهای بخش به جای آن‌ها تنظیم شوند یا خیر. با "all" (پیش‌فرض)، بازنشانی‌های مربوط به تمامی نمادهای پیوند محلی واجد شرایط تبدیل می‌شوند. با "internal"، تنها بازنشانی‌های مربوط به برچسب‌های داخلی (نمادهای مطابق با پیشوند ".L") تبدیل می‌شوند. با "none"، هیچ تبدیلی از این دست انجام نمی‌گیرد.
این گزینه کنترل می‌کند که آیا اسمبلر باید CFI را برای ورودی دست‌نویس ترکیب (synthesize) کند یا خیر. اگر ورودی از قبل حاوی برخی دستورالعمل‌های قابل ترکیب CFI باشد، اسمبلر آن‌ها را نادیده گرفته و هشداری صادر می‌کند. توجه داشته باشید که "--scfi=experimental" برای استفاده در کدهای تولیدشده توسط کامپایلر، از جمله اسمبلی درون‌خطی (inline assembly)، در نظر گرفته نشده است. این پشتیبانی تجربی همچنان در دست توسعه است. تنها System V AMD64 ABI پشتیبانی می‌شود.

هر تابع ورودی در اسمبلی باید با دستورالعمل ".type" آغاز شود و در حالت ایده‌آل باید با استفاده از یک دستورالعمل ".size" خاتمه یابد. هنگام استفاده از SCFI، هر دستورالعمل ".type" موجب می‌شود GAS یک FDE جدید (یا مدخل توصیف‌گر تابع) را شروع کند. این بدان معناست که با هر دستورالعمل ".type"، بلوک قبلی دستورالعمل‌ها (در صورت وجود) به عنوان یک FDE مجزا نهایی می‌شود.

رعایت دنباله‌های جایگزینی در نام بخش‌ها..IP --size-check=error 4
صادر کردن یک خطا یا هشدار برای دایرکتیو نامعتبر .size در ELF.
چاپ حداکثر فضای استفاده‌شده (به بایت) و کل زمان صرف‌شده (به ثانیه) توسط فرایند اسمبل.
حذف نمادهای محلی مطلق از جدول نماد خروجی.
چاپ نسخهٔ as.
چاپ نسخهٔ as و خروج.
فرونشاندن پیام‌های هشدار.
پیام‌های هشدار فرونشانده نمی‌شوند و با آن‌ها به عنوان خطا رفتار نمی‌شود.
در نظر گرفتن هشدارها به عنوان خطا.
نادیده گرفته می‌شود.
نادیده گرفته می‌شود.
تولید فایل شیء حتی پس از بروز خطا.
-- | files ...
ورودی استاندارد، یا فایل‌های منبع برای اسمبل کردن.

گزینه‌های زیر هنگامی در دسترس هستند که as برای حالت ۶۴-بیتی معماری ARM یعنی (AArch64) پیکربندی شده باشد.

این گزینه مشخص می‌کند که خروجی تولیدشده توسط اسمبلر باید به صورت کدگذاری‌شده برای یک پردازندهٔ big-endian علامت‌گذاری شود.
این گزینه مشخص می‌کند که خروجی تولیدشده توسط اسمبلر باید به صورت کدگذاری‌شده برای یک پردازندهٔ little-endian علامت‌گذاری شود.
مشخص می‌کند که کد منبع از کدام ABI استفاده می‌کند. آرگومان‌های شناخته‌شده عبارتند از: "ilp32" و "lp64"، که قالب فایل شیء تولیدی را به ترتیب در قالب‌های ELF32 و ELF64 تعیین می‌کنند. مقدار پیش‌فرض "lp64" است.
این گزینه پردازندهٔ هدف را مشخص می‌کند. در صورتی که تلاشی برای اسمبل کردن دستورالعملی صورت گیرد که روی پردازندهٔ هدف اجرا نخواهد شد، اسمبلر یک پیام خطا صادر می‌کند. نام‌های پردازندهٔ زیر شناخته‌شده هستند: "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" می‌تواند به کار رود تا به اسمبلر اجازه دهد دستورالعمل‌های معتبر برای هر پردازندهٔ پشتیبانی‌شده، شامل تمامی افزونه‌های اختیاری را بپذیرد.

علاوه بر مجموعه دستورالعمل پایه، می‌توان به اسمبلر اعلام کرد که نمادهای یادافزار (mnemonics) افزونه‌های گوناگونی را که پردازنده را گسترش می‌دهند، بپذیرد یا محدود کند.

اگر برخی پیاده‌سازی‌های یک پردازندهٔ خاص بتوانند افزونه‌ای داشته باشند، آن افزونه‌ها به‌طور خودکار فعال می‌شوند. در نتیجه، معمولاً نیازی به مشخص کردن هیچ افزونهٔ اضافی نخواهید داشت.

این گزینه معماری هدف را مشخص می‌کند. در صورتی که تلاشی برای اسمبل کردن دستورالعملی صورت گیرد که روی معماری هدف اجرا نخواهد شد، اسمبلر یک پیام خطا صادر می‌کند. نام‌های معماری زیر شناخته‌شده هستند: "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، افزونه‌ها همیشه به‌طور پیش‌فرض فعال نیستند.

در هدف‌های PE/COFF این گزینه استفاده از قالب فایل شیء بزرگ را اجباری می‌کند که امکان وجود بیش از ۳۲۷۶۸ بخش (section) را فراهم می‌سازد.
این گزینه پیام‌های خطای پرگو (verbose) را برای gas در AArch64 فعال می‌کند. این گزینه به‌طور پیش‌فرض فعال است.
این گزینه پیام‌های خطای پرگو (verbose) را در gas برای AArch64 غیرفعال می‌کند.
این گزینه پیام‌های خطایی را فعال می‌کند که در صورت تلاش برای اسمبل کردن دسترسی به یک ثبات سیستم که روی معماری هدف اجرا نخواهد شد، صادر می‌شوند.

گزینه‌های زیر هنگامی در دسترس هستند که as برای یک پردازندهٔ Alpha پیکربندی شده باشد.

این گزینه پردازندهٔ هدف را مشخص می‌کند. اگر تلاشی برای اسمبل کردن دستورالعملی صورت گیرد که روی پردازندهٔ هدف اجرا نخواهد شد، اسمبلر ممکن است دستورالعمل را به صورت یک ماکرو بسط دهد یا یک پیام خطا صادر کند. این گزینه معادل دایرکتیو ".arch" است.

نام‌های پردازندهٔ زیر شناخته‌شده هستند: 21064, "21064a", 21066, 21068, 21164, "21164a", "21164pc", 21264, "21264a", "21264b", "ev4", "ev5", "lca45", "ev5", "ev56", "pca56", "ev6", "ev67", "ev68". نام ویژهٔ "all" می‌تواند به کار رود تا به اسمبلر اجازه دهد دستورالعمل‌های معتبر برای هر پردازندهٔ Alpha را بپذیرد.

به منظور پشتیبانی از رویهٔ موجود در OSF/1 در رابطه با ".arch"، و رویهٔ موجود در MILO (بوت‌لودر ARC در لینوکس)، نام‌های شماره‌دار پردازنده‌ها (مانند 21064) دستورالعمل‌های PALcode مختص پردازنده را فعال می‌کنند، در حالی که نام‌های «electro-vlasic» (مانند "ev4") این کار را نمی‌کنند.

تولید بسته‌بندی کپسوله‌شدهٔ ".mdebug" را برای دایرکتیوهای stabs و توصیف‌کننده‌های رویه فعال یا غیرفعال می‌کند. مقدار پیش‌فرض این است که هنگام مشاهدهٔ نخستین دایرکتیو stabs، گزینهٔ ".mdebug" به‌طور خودکار فعال شود..IP -relax 4 این گزینه به جای صرفه‌جویی در فضا و حل‌وفصل برخی از بازآدرس‌دهی‌ها در زمان اسمبلی، قرار گرفتن تمام بازآدرس‌دهی‌ها (relocations) را در فایل شیء اجباری می‌کند. توجه داشته باشید که این گزینه تمام محاسبات نمادها را به فایل شیء منتقل نمی‌کند، زیرا همه محاسبات نمادها قابل بازنمایی نیستند. با این حال، این گزینه همچنان می‌تواند در کاربردهای خاص مفید باشد.
بهینه‌سازی فراخوانی رویه‌ها (procedure calls) را چه در زمان اسمبلی و چه در زمان پیوند، فعال یا غیرفعال می‌کند. این گزینه‌ها فقط برای مقصدهای VMS در دسترس هستند و "-replace" حالت پیش‌فرض است. بخش 1.4.1 از OpenVMS Linker Utility Manual را ببینید.
این گزینه زمانی استفاده می‌شود که کامپایلر اطلاعات اشکال‌زدایی (debug) تولید می‌کند. هنگامی که gcc از mips-tfile برای تولید اطلاعات اشکال‌زدایی برای ECOFF استفاده می‌کند، برچسب‌های محلی باید به فایل شیء منتقل شوند. در غیر این صورت، این گزینه تأثیری ندارد.
یک نماد عمومی محلی بزرگ‌تر از size در ".bss" قرار می‌گیرد، در حالی که نمادهای کوچک‌تر در ".sbss" قرار می‌گیرند.
-32addr
این گزینه‌ها برای سازگاری با نسخه‌های پیشین نادیده گرفته می‌شوند.

گزینه‌های زیر زمانی در دسترس هستند که as برای یک پردازنده ARC پیکربندی شده باشد.

این گزینه گونه پردازنده اصلی را انتخاب می‌کند.
خروجی big-endian (-EB) یا little-endian (-EL) را انتخاب می‌کند.
دستورالعمل‌های افزونه Code Density را فعال می‌کند.

گزینه‌های زیر زمانی در دسترس هستند که as برای خانواده پردازنده ARM پیکربندی شده باشد.

مشخص می‌کند که کدام گونه پردازنده ARM هدف است.
مشخص می‌کند که کدام گونه معماری ARM توسط هدف استفاده می‌شود.
معماری ممیز شناور (Floating Point) هدف را انتخاب می‌کند.
مشخص می‌کند که کدام ABI ممیز شناور در حال استفاده است.
رمزگشایی دستورالعمل‌های فقط Thumb را فعال می‌کند.
قرارداد فراخوانی رویه مورد استفاده را انتخاب می‌کند.
خروجی big-endian (-EB) یا little-endian (-EL) را انتخاب می‌کند.
مشخص می‌کند که کد با در نظر گرفتن تعامل متقابل بین کدهای Thumb و ARM تولید شده است.
حالت سازگاری نحو اسمبلی CodeComposer Studio را فعال می‌کند.
مشخص می‌کند که کد PIC تولید شده است.

گزینه‌های زیر زمانی در دسترس هستند که as برای خانواده پردازنده Blackfin پیکربندی شده باشد.

این گزینه پردازنده هدف را مشخص می‌کند. مقدار اختیاری 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".
اسمبل برای FDPIC ABI.
غیرفعال کردن -mfdpic.

گزینه‌های زیر زمانی در دسترس هستند که as برای خانواده پردازنده BPF هسته لینوکس پیکربندی شده باشد.

@chapter ویژگی‌های وابسته به BPF.SS "گزینه‌های BPF"

این گزینه مشخص می‌کند که اسمبلر باید eBPF از نوع big-endian تولید کند.
این گزینه مشخص می‌کند که اسمبلر باید eBPF از نوع little-endian تولید کند.
این گزینه گویش زبان اسمبلی را برای شناسایی در هنگام اسمبل مشخص می‌کند. اسمبلر از normal و pseudoc پشتیبانی می‌کند.
این گزینه نسخهٔ مجموعه دستورالعمل‌های BPF را برای استفاده هنگام اسمبل مشخص می‌کند. نسخه‌های پشتیبانی‌شدهٔ BPF ISA عبارتند از v1، v2، v3 و v4.

مقدار xbpf را می‌توان برای شناسایی دستورالعمل‌های اضافی که توسط GCC برای اهداف آزمایشی استفاده می‌شوند تعیین کرد. اما توجه داشته باشید که این یک BPF معتبر نیست.

این گزینه به اسمبلر می‌گوید که دستورالعمل‌ها را تعدیل (relax) نکند.

توجه داشته باشید که اگر هیچ گزینهٔ ترتیب بایتی (endianness) در خط فرمان مشخص نشده باشد، ترتیب بایت میزبان استفاده می‌شود. برای مستندات گزینه‌های خاص CRIS به صفحات info مراجعه کنید.

گزینه‌های زیر زمانی در دسترس هستند که as برای خانوادهٔ پردازنده‌های C-SKY پیکربندی شده باشد.

اسمبل کردن برای معماری archname. گزینهٔ --help فهرست مقادیر معتبر برای archname را نمایش می‌دهد.
اسمبل کردن برای معماری cpuname. گزینهٔ --help فهرست مقادیر معتبر برای cpuname را نمایش می‌دهد.
تولید خروجی little-endian.
تولید خروجی big-endian.
تولید کد مستقل از موقعیت (position-independent code).
فعال/غیرفعال کردن تبدیل دستورالعمل‌های پرش کوتاه "jbf"، "jbt" و "jbr" به "jmpi". این گزینه فقط مخصوص پردازنده‌های V2 است. روی مقصدهای CK801 و CK802 که از دستورالعمل "jmpi" پشتیبانی نمی‌کنند نادیده گرفته می‌شود، و برای سایر پردازنده‌ها به‌طور پیش‌فرض فعال است.
ارسال بازنشانی‌های "R_CKCORE_PCREL_IMM26BY2" برای دستورالعمل‌های "bsr" به پیونددهنده (linker).

این گزینه تنها برای مقصدهای bare-metal C-SKY V2 ELF در دسترس است، جایی که به‌طور پیش‌فرض فعال است. نمی‌توان از آن در کدی استفاده کرد که قرار است به‌صورت پویا با کتابخانه‌های اشتراکی پیوند داده شود.

فعال/غیرفعال کردن تبدیل دستورالعمل‌های "jbsr" به "bsr". این گزینه همیشه برای مقصدهای CK801/CK802 فعال است (و -mno-force2bsr نادیده گرفته می‌شود). همچنین زمانی که -mbranch-stub برقرار باشد، همیشه فعال است.
فعال/غیرفعال کردن تبدیل دستورالعمل‌های "jsri" به "bsr". این گزینه به‌طور پیش‌فرض فعال است.
فعال/غیرفعال کردن تبدیل دستورالعمل‌های "lrw" به یک جفت "movih"/"ori".
فعال/غیرفعال کردن دستورالعمل‌های گسترش‌یافتهٔ "lrw". این گزینه به‌طور پیش‌فرض برای پردازنده‌های سری CK800 فعال است.
فعال/غیرفعال کردن قرار دادن مخازن لیترال (literal pools) بعد از هر تابع.
فعال/غیرفعال کردن قرار دادن مخازن لیترال (literal pools) بعد از پرش‌های نامشروط. این گزینه به‌طور پیش‌فرض فعال است.
فعال/غیرفعال کردن دستورالعمل‌های پشتهٔ وقفه (interrupt stack). این گزینه به‌طور پیش‌فرض در پردازنده‌های CK801، CK802 و CK802 فعال است.

گزینه‌های زیر به صراحت دستورالعمل‌های اختیاری خاصی را فعال می‌کنند. این ویژگی‌ها همچنین با استفاده از "-mcpu=" برای تعیین پردازنده‌ای که از آن پشتیبانی می‌کند، به صورت ضمنی فعال می‌شوند.

فعال کردن دستورالعمل‌های ممیز شناور سخت‌افزاری.
فعال کردن دستورالعمل‌های چندپردازنده‌ای.
فعال کردن دستورالعمل‌های پردازندهٔ کمکی (coprocessor).
فعال کردن دستورالعمل پیش‌واکشی حافظهٔ نهان (cache prefetch).
فعال کردن دستورالعمل‌های امنیتی C-SKY.
فعال کردن دستورالعمل‌های اعتماد (trust) مربوط به C-SKY.
فعال کردن دستورالعمل‌های DSP.
فعال کردن دستورالعمل‌های DSP بهبودیافته.
فعال کردن دستورالعمل‌های DSP برداری.

گزینه‌های زیر زمانی در دسترس هستند که as برای یک پردازندهٔ Epiphany پیکربندی شده باشد.

مشخص می‌کند که هر دو نوع دستورالعمل‌های ۱۶ و ۳۲ بیتی مجاز هستند. این رفتار پیش‌فرض است.
دستورالعمل‌های مجاز را فقط به مجموعهٔ ۱۶ بیتی محدود می‌کند.

گزینه‌های زیر زمانی در دسترس هستند که as برای پردازندهٔ H8/300 پیکربندی شده باشد. @chapter ویژگی‌های وابسته به H8/300.SS "گزینه‌ها (Options)" نسخهٔ Renesas H8/300 از "as" دارای یک گزینهٔ وابسته به ماشین است:

پشتیبانی از ثابت‌های هگزادسیمال به سبک H'00 علاوه بر سبک 0x00.
گونهٔ ماشین H8300 را تعیین می‌کند. نام‌های ماشین زیر شناخته‌شده هستند: "h8300h"، "h8300hn"، "h8300s"، "h8300sn"، "h8300sx" و "h8300sxn".

گزینه‌های زیر هنگامی در دسترس هستند که as برای یک پردازندهٔ i386 پیکربندی شده باشد.

--32 | --x32 | --64
اندازهٔ کلمه (word size) را تعیین می‌کند، یا ۳۲ بیت یا ۶۴ بیت. --32 بیانگر معماری Intel i386 است، در حالی که --x32 و --64 به‌ترتیب بیانگر معماری AMD x86-64 با اندازهٔ کلمهٔ ۳۲ بیتی یا ۶۴ بیتی هستند.

این گزینه‌ها تنها در قالب فایل شیء ELF در دسترس هستند، و نیازمند گنجانده شدن پشتیبانی لازم از BFD می‌باشند (روی یک پلتفرم ۳۲ بیتی باید --enable-64-bit-bfd را به configure اضافه کنید تا استفادهٔ ۶۴ بیتی فعال شده و از x86-64 به‌عنوان پلتفرم مقصد استفاده شود).

به‌طور پیش‌فرض، x86 GAS چندین دستور nop متوالی را که برای هم‌ترازی در بخش‌های کد استفاده می‌شوند با دستورهای چندبایتی nop مانند leal 0(%esi,1),%esi جایگزین می‌کند. این سوییچ در صورتی که یک بایتِ تک‌بایتیِ nop‏ (0x90) صراحتاً به‌عنوان بایت پرکننده برای هم‌ترازی مشخص شده باشد، این بهینه‌سازی را غیرفعال می‌کند.
در پلتفرم‌های مشتق‌شده از SVR4، نویسهٔ / به‌عنوان یک نویسهٔ توضیح (comment) در نظر گرفته می‌شود، بدان معنا که نمی‌توان از آن در عبارات استفاده کرد. گزینهٔ --divide نویسهٔ / را به یک نویسهٔ عادی تبدیل می‌کند. این گزینه استفاده از / را در ابتدای خط برای شروع توضیح غیرفعال نمی‌کند، و بر استفاده از # برای شروع توضیح نیز تأثیری ندارد.
این گزینه پردازندهٔ مقصد را مشخص می‌کند. در صورتی که تلاشی برای اسمبل کردن دستوری انجام شود که روی پردازندهٔ مقصد قابل اجرا نیست، اسمبلر یک پیام خطا صادر می‌کند. نام‌های پردازندهٔ زیر شناخته‌شده هستند: "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".

علاوه بر مجموعه دستورالعمل پایه، می‌توان به اسمبلر دستور داد تا نمادهای یادافزای (mnemonics) افزونه‌های مختلف را بپذیرد. برای نمونه، "-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>" محدودیت طول بردار را اعمال می‌کنند؛ یعنی با وجود اینکه این گزینه‌ها در حالت عادی «فعال‌کننده» هستند، استفاده از این پسوندها تمامی دستورالعمل‌هایی (insns) را که عملوندهای ثبات برداری یا ثبات ماسک عریض‌تر دارند غیرفعال خواهد کرد.

هنگامی که دایرکتیو ".arch" همراه با -march استفاده شود، دایرکتیو ".arch" اولویت خواهد داشت..IP -mtune=CPU 4 این گزینه پردازنده‌ای را مشخص می‌کند که کد برای آن بهینه‌سازی می‌شود. هنگامی که در کنار گزینهٔ -march استفاده شود، فقط دستورالعمل‌های پردازندهٔ مشخص‌شده توسط گزینهٔ -march تولید خواهند شد.

مقادیر معتبر برای CPU، مشابه با فهرست پردازنده‌های -march=CPU است.

این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید عملوندهای مشخصی از دستورالعمل‌ها یا ترکیب‌های عملوند را بررسی کند یا خیر. یک نمونه، دستورالعمل‌هایی هستند که اندازهٔ عملوند را نمی‌توان از خود عملوندها استنتاج کرد و همچنین با پسوند دستورالعمل نیز مشخص نشده است. -moperand-check=none باعث می‌شود اسمبلر این بررسی‌ها را انجام ندهد. -moperand-check=warning در صورت شکست بررسی‌های مربوطه، یک هشدار صادر می‌کند که حالت پیش‌فرض است. -moperand-check=error در صورت شکست بررسی‌های مربوطه، یک خطا صادر خواهد کرد.
این گزینه مشخص می‌کند که اسمبلر باید دستورالعمل‌های SSE را با پیشوند VEX کدگذاری کند که نیازمند در دسترس بودن AVX است. دستورالعمل‌های SSE که از GPRهای گسترش‌یافته استفاده می‌کنند با پیشوند EVEX کدگذاری خواهند شد که نیازمند در دسترس بودن AVX512 یا AVX10 است.
این گزینه مشخص می‌کند که اسمبلر باید جابه‌جایی‌های برداری هم‌تراز (aligned) را به صورت جابه‌جایی‌های برداری ناهم‌تراز (unaligned) کدگذاری کند.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید دستورالعمل‌های SSE را بررسی کند یا خیر. -msse-check=none باعث می‌شود اسمبلر دستورالعمل‌های SSE را بررسی نکند که حالت پیش‌فرض است. -msse-check=warning برای هر دستورالعمل SSE یک هشدار صادر می‌کند. -msse-check=error برای هر دستورالعمل SSE یک خطا صادر خواهد کرد.
این گزینه‌ها نحوهٔ کدگذاری دستورالعمل‌های اسکالر AVX توسط اسمبلر را کنترل می‌کنند. گزینهٔ -mavxscalar=128 دستورالعمل‌های اسکالر AVX را با طول بردار ۱۲۸ بیتی کدگذاری می‌کند که حالت پیش‌فرض است. -mavxscalar=256 دستورالعمل‌های اسکالر AVX را با طول بردار ۲۵۶ بیتی کدگذاری خواهد کرد.

هشدار: از این گزینه برای کدهای محیط عملیاتی (production) استفاده نکنید - به دلیل خطاهای سخت‌افزاری پردازنده (CPU errata)، کد حاصل ممکن است روی برخی مدل‌ها کار نکند.

این گزینه‌ها نحوهٔ کدگذاری دستورالعمل‌های VEX با بیت W نادیده‌گرفته‌شده (WIG یا VEX.W-ignored) را کنترل می‌کنند. گزینهٔ -mvexwig=0 دستورالعمل‌های WIG VEX را با vex.w = 0 کدگذاری می‌کند که حالت پیش‌فرض است. -mvexwig=1 دستورالعمل‌های WIG EVEX را با vex.w = 1 کدگذاری خواهد کرد.

هشدار: از این گزینه برای کدهای محیط عملیاتی (production) استفاده نکنید - به دلیل خطاهای سخت‌افزاری پردازنده (CPU errata)، کد حاصل ممکن است روی برخی مدل‌ها کار نکند.

این گزینه‌ها نحوهٔ کدگذاری دستورالعمل‌های EVEX با طول نادیده‌گرفته‌شده (LIG یا length-ignored) را کنترل می‌کنند. گزینهٔ -mevexlig=128 دستورالعمل‌های LIG EVEX را با طول بردار ۱۲۸ بیتی کدگذاری می‌کند که حالت پیش‌فرض است. -mevexlig=256 و -mevexlig=512 دستورالعمل‌های LIG EVEX را به ترتیب با طول بردار ۲۵۶ بیتی و ۵۱۲ بیتی کدگذاری خواهند کرد.
این گزینه‌ها نحوهٔ کدگذاری دستورالعمل‌های EVEX با بیت w نادیده‌گرفته‌شده (WIG یا w-ignored) را کنترل می‌کنند. گزینهٔ -mevexwig=0 دستورالعمل‌های WIG EVEX را با evex.w = 0 کدگذاری می‌کند که حالت پیش‌فرض است. -mevexwig=1 دستورالعمل‌های WIG EVEX را با evex.w = 1 کدگذاری خواهد کرد.
این گزینه نماد یادافزا (mnemonic) را برای تطبیق دستورالعمل‌ها مشخص می‌کند. دستورهای راهنمای ".att_mnemonic" و ".intel_mnemonic" اولویت خواهند داشت.
این گزینه نحو (syntax) دستورالعمل را هنگام پردازش دستورات مشخص می‌کند. دستورهای راهنمای ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
این گزینه مشخص می‌کند که ثبات‌ها نیازی به پیشوند % ندارند. دستورهای راهنمای ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
این گزینه اسمبلر را ملزم می‌کند تا پیشوند BND را به تمام شاخه‌ها (branches) اضافه کند، حتی اگر چنین پیشوندی به صراحت در کد منبع مشخص نشده باشد.
در معماری مقصد ELF، اسمبلر به طور معمول بازنشانی‌های غیر PLT را در برابر مقصدهای شاخه‌بندی سراسری تعریف‌شدهٔ غیرضعیف (non-weak) با نمایانی پیش‌فرض بهینه‌سازی و حذف می‌کند. گزینهٔ -mshared به اسمبلر دستور می‌دهد کدی تولید کند که ممکن است در یک کتابخانهٔ مشترک قرار گیرد، جایی که تمام مقصدهای شاخه‌بندی سراسری غیرضعیف با نمایانی پیش‌فرض قابل پیش‌دستی (preemptible) هستند. کد حاصل کمی بزرگ‌تر خواهد بود. این گزینه فقط بر نحوهٔ پردازش دستورالعمل‌های شاخه‌بندی تأثیر می‌گذارد.
در معماری مقصد PE/COFF، این گزینه استفاده از قالب فایل شیء بزرگ (big object file format) را اجباری می‌کند که امکان استفاده از بیش از ۳۲۷۶۸ بخش (section) را فراهم می‌سازد.
این گزینه‌ها نحوهٔ کدگذاری پیشوند lock توسط اسمبلر را کنترل می‌کنند. این گزینه به عنوان یک راهکار جایگزین برای پردازنده‌هایی که در پیشوند lock دچار خطا می‌شوند در نظر گرفته شده است. از این گزینه تنها می‌توان در رایانه‌های تک‌هسته‌ای و تک‌رشته‌ای با اطمینان استفاده کرد. -momit-lock-prefix=yes تمام پیشوندهای lock را حذف خواهد کرد. -momit-lock-prefix=no پیشوند lock را مطابق معمول کدگذاری می‌کند که حالت پیش‌فرض است.
این گزینه‌ها نحوهٔ کدگذاری lfence،‏ mfence و sfence توسط اسمبلر را کنترل می‌کنند. -mfence-as-lock-add=yes دستورالعمل‌های lfence،‏ mfence و sfence را در حالت ۶۴ بیتی به صورت lock addl $0x0, (%rsp) و در حالت ۳۲ بیتی به صورت lock addl $0x0, (%esp) کدگذاری خواهد کرد. -mfence-as-lock-add=no دستورالعمل‌های lfence،‏ mfence و sfence را مطابق معمول کدگذاری می‌کند که حالت پیش‌فرض است.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید بازنشانی‌های کاهش‌یافته (relax relocations)، یعنی R_386_GOT32X در حالت ۳۲ بیتی، یا R_X86_64_GOTPCRELX و R_X86_64_REX_GOTPCRELX در حالت ۶۴ بیتی را تولید کند یا خیر. -mrelax-relocations=yes بازنشانی‌های کاهش‌یافته را تولید خواهد کرد. -mrelax-relocations=no بازنشانی‌های کاهش‌یافته را تولید نخواهد کرد.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر بازنشانی tls را بررسی کند یا خیر. -mtls-check=yes بازنشانی tls را بررسی خواهد کرد. -mtls-check=no بازنشانی tls را بررسی نخواهد کرد. حالت پیش‌فرض را می‌توان از طریق گزینهٔ پیکربندی --enable-x86-tls-check تعیین کرد.
این گزینه نحوهٔ هم‌تراز کردن شاخه‌ها با پیشوندهای قطعه (segment) یا NOP را توسط اسمبلر کنترل می‌کند. مقدار NUM باید توانی از ۲ باشد؛ این مقدار باید ۰ یا عددی نه کمتر از ۱۶ باشد. شاخه‌ها درون مرز NUM بایتی هم‌تراز خواهند شد. گزینهٔ -malign-branch-boundary=0 که حالت پیش‌فرض است، شاخه‌ها را هم‌تراز نمی‌کند.
این گزینه انواع شاخه‌ها را برای هم‌ترازی مشخص می‌کند. مقدار TYPE ترکیبی است از: jcc که پرش‌های شرطی را هم‌تراز می‌کند، fused که پرش‌های شرطی ادغام‌شده را هم‌تراز می‌کند، jmp که پرش‌های بدون شرط را هم‌تراز می‌کند، call که فراخوانی‌ها را هم‌تراز می‌کند، ret که دستورات بازگشت (ret) را هم‌تراز می‌کند، و indirect که پرش‌ها و فراخوانی‌های غیرمستقیم را هم‌تراز می‌کند. حالت پیش‌فرض -malign-branch=jcc+fused+jmp است..IP -malign-branch-prefix-size=NUM 4 این گزینه بیشینهٔ تعداد پیشوندهای روی یک دستورالعمل را برای تراز کردن شاخه‌ها مشخص می‌کند. NUM باید بین 0 و 5 باشد. مقدار پیش‌فرض NUM برابر 5 است.
این گزینه پرش‌های شرطی، پرش‌های شرطی ادغام‌شده (fused) و پرش‌های غیرشرطی را با حداکثر 5 پیشوند سگمنت روی یک دستورالعمل، در مرز 32 بایتی تراز می‌کند. این گزینه معادل است با: -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. حالت پیش‌فرض شاخه‌ها را تراز نمی‌کند.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید پس از دستورالعمل‌های بارگذاری (load)، دستور lfence تولید کند یا خیر. -mlfence-after-load=yes دستور lfence را تولید خواهد کرد. -mlfence-after-load=no که پیش‌فرض است، lfence تولید نمی‌کند.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید قبل از دستورالعمل‌های شاخه‌بندی نزدیک غیرمستقیم (indirect near branch) دستور 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 پس از بارگذاری ثباتِ هدفِ شاخه تولید می‌شود.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید قبل از ret دستور lfence تولید کند یا خیر. -mlfence-before-ret=or دستور or را همراه با lfence تولید می‌کند. -mlfence-before-ret=shl/yes دستور shl را همراه با lfence تولید می‌کند. -mlfence-before-ret=not دستور not را همراه با lfence تولید می‌کند. -mlfence-before-ret=none هیچ دستور lfence ای تولید نخواهد کرد، که حالت پیش‌فرض است.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید یادداشت‌های ویژگی‌های گنو (GNU property notes) شامل GNU_PROPERTY_X86_ISA_1_USED و GNU_PROPERTY_X86_FEATURE_2_USED را تولید کند یا خیر. حالت پیش‌فرض می‌تواند با گزینهٔ پیکربندی --enable-x86-used-note کنترل شود.
این گزینه‌ها چگونگی کدگذاری دستورالعمل‌های EVEX فقط-SAE (SAE-only) توسط اسمبلر را کنترل می‌کنند. گزینهٔ -mevexrcig=rne بیت‌های RC دستورالعمل EVEX را با 00 کدگذاری می‌کند که حالت پیش‌فرض است. گزینه‌های -mevexrcig=rd، -mevexrcig=ru و -mevexrcig=rz دستورالعمل‌های EVEX فقط-SAE را به ترتیب با بیت‌های RC برابر با 01، 10 و 11 کدگذاری می‌کنند.
این گزینه مشخص می‌کند که اسمبلر در حالت 64-بیتی فقط ISA مربوط به AMD64 یا Intel64 را بپذیرد. پیش‌فرض این است که ISA مشترک، مختص Intel64 و AMD64 پذیرفته شوند.
کدگذاری دستورالعمل‌ها را با اندازهٔ دستور کوچک‌تر بهینه‌سازی می‌کند. گزینه‌های -O و -O1 دستورالعمل‌های بارگذاری ثبات 64-بیتی با مقدار فوری 64-بیتی را به‌صورت دستورالعمل‌های بارگذاری ثبات 32-بیتی با مقادیر فوری 31-بیتی یا 32-بیتی کدگذاری می‌کنند، دستورالعمل‌های پاک‌سازی ثبات 64-بیتی را با دستورالعمل‌های پاک‌سازی ثبات 32-بیتی کدگذاری می‌کنند، دستورالعمل‌های پاک‌سازی ثبات برداری VEX/EVEX بیست‌وپنجاه‌وشش بیتی/512-بیتی را با دستورالعمل‌های پاک‌سازی ثبات برداری VEX صدوبیست‌وهشت بیتی کدگذاری می‌کنند، دستورالعمل‌های بارگذاری/ذخیره ثبات برداری EVEX صدوبیست‌وهشت بیتی/256-بیتی را با دستورالعمل‌های بارگذاری/ذخیره ثبات برداری VEX کدگذاری می‌کنند، و دستورالعمل‌های منطقی صحیح فشردهٔ (packed integer) EVEX صدوبیست‌وهشت بیتی/256-بیتی را با دستورالعمل‌های منطقی صحیح فشردهٔ VEX صدوبیست‌وهشت بیتی/256-بیتی کدگذاری می‌کنند.

گزینهٔ -O2 شامل بهینه‌سازی‌های -O1 به علاوهٔ کدگذاری دستورالعمل‌های پاک‌سازی ثبات برداری EVEX با اندازهٔ 256-بیتی/512-بیتی به‌صورت دستورالعمل‌های پاک‌سازی ثبات برداری EVEX با اندازهٔ 128-بیتی است. در حالت 64-بیتی، چنانچه امکان استفاده از قالب پیشوند 2-بایتی VEX به جای قالب 3-بایتی فراهم شود، عملوندهای مبدأ دستورالعمل‌های کدگذاری‌شده با VEX که عملوندهای مبدأ جابجایی‌پذیر دارند نیز جابجا می‌شوند. همچنین اشکال خاصی از AND و همچنین OR با عملوند (ثبات) یکسان که دو بار مشخص شده باشد به TEST تبدیل خواهند شد.

گزینهٔ -Os شامل بهینه‌سازی‌های -O2 به علاوهٔ کدگذاری آزمایش‌های (tests) ثبات 16-بیتی، 32-بیتی و 64-بیتی با مقدار فوری به‌صورت آزمایش ثبات 8-بیتی با مقدار فوری است. گزینهٔ -O0 این بهینه‌سازی را خاموش می‌کند.

گزینه‌های زیر زمانی در دسترس هستند که as برای سری Ubicom IP2K پیکربندی شده باشد.

مشخص می‌کند که دستورالعمل‌های گسترش‌یافتهٔ IP2022 مجاز هستند.
رفتار پیش‌فرض را بازیابی می‌کند، که دستورالعمل‌های مجاز را فقط به دستورالعمل‌های پایه‌ای IP2022 محدود می‌سازد.

گزینه‌های زیر زمانی در دسترس هستند که as برای پردازنده‌های Renesas M32C و M16C پیکربندی شده باشد.

دستورالعمل‌های M32C را اسمبل می‌کند.
دستورالعمل‌های M16C را اسمبل می‌کند (پیش‌فرض).
پشتیبانی از کاهش‌های زمان پیوند (link-time relaxations) را فعال می‌کند.
پشتیبانی از ثابت‌های هگزادسیمال به سبک H'00 علاوه بر سبک 0x00.

گزینه‌های زیر زمانی در دسترس هستند که as برای سری Renesas M32R (که پیش‌تر Mitsubishi M32R نامیده می‌شد) پیکربندی شده باشد.

مشخص می‌کند کدام پردازنده از خانوادهٔ M32R هدف است. حالت پیش‌فرض معمولاً M32R است، اما این گزینه آن را به M32RX تغییر می‌دهد.
هنگام مواجهه با ساختارهای موازی مشکوک، پیام‌های هشدار صادر می‌کند.
هنگام مواجهه با ساختارهای موازی مشکوک، پیام‌های هشدار صادر نمی‌کند.

گزینه‌های زیر زمانی در دسترس هستند که as برای سری Motorola 68000 پیکربندی شده باشد.

ارجاعات به نمادهای تعریف‌نشده را به‌جای دو کلمه به یک کلمه (word) کوتاه می‌کند.
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
مشخص می‌کند چه پردازنده‌ای از خانوادهٔ 68000 هدف است. حالت پیش‌فرض معمولاً 68020 است، اما این مقدار در زمان پیکربندی قابل تغییر است.
ماشین هدف دارای (یا فاقد) پردازنده کمکی ممیز شناور (floating-point coprocessor) است. پیش‌فرض این است که برای 68020، 68030 و cpu32 پردازنده کمکی در نظر گرفته شود. اگرچه 68000 پایه با 68881 سازگار نیست، اما می‌توان ترکیبی از این دو را مشخص کرد، چرا که شبیه‌سازی دستورالعمل‌های پردازنده کمکی با پردازنده اصلی امکان‌پذیر است.
ماشین هدف دارای (یا فاقد) پردازنده کمکی واحد مدیریت حافظه (MMU) است. حالت پیش‌فرض این است که برای 68020 و بالاتر یک MMU در نظر گرفته شود.

برای مشاهدهٔ جزئیات دربارهٔ گزینه‌های ویژگی‌های وابسته به ماشین PDP-11، به PDP-11-Options مراجعه کنید.

تولید کد مستقل از موقعیت (یا وابسته به موقعیت). حالت پیش‌فرض -mpic است..IP -mall 4
فعال کردن تمام افزونه‌های مجموعه دستورالعمل. این حالت پیش‌فرض است.
غیرفعال کردن تمام افزونه‌های مجموعه دستورالعمل.
فعال (یا غیرفعال) کردن یک افزونه خاص مجموعه دستورالعمل.
فعال کردن افزونه‌های مجموعه دستورالعملِ پشتیبانی‌شده توسط یک CPU خاص، و غیرفعال کردن تمام افزونه‌های دیگر.
فعال کردن افزونه‌های مجموعه دستورالعملِ پشتیبانی‌شده توسط یک مدل ماشین خاص، و غیرفعال کردن تمام افزونه‌های دیگر.

گزینه‌های زیر زمانی در دسترس هستند که as برای پردازنده picoJava پیکربندی شده باشد.

تولید خروجی با قالب «بزرگ‌پایان» (big endian).
تولید خروجی با قالب «کوچک‌پایان» (little endian).

گزینه‌های زیر زمانی در دسترس هستند که as برای یک پردازنده PRU پیکربندی شده باشد.

فرض می‌کند که LD دستورالعمل‌های LDI32 را با بررسی ۱۶ بیت بالایی expression بهینه‌سازی خواهد کرد. اگر همه آن‌ها صفر باشند، LD دستورالعمل LDI32 را به یک LDI تکی کوتاه می‌کند. در چنین حالتی "as" بازنشانی‌های DIFF را برای عبارت‌های تفاضلی صادر خواهد کرد.
فرض می‌کند که LD دستورالعمل‌های LDI32 را بهینه‌سازی نخواهد کرد. در نتیجه، بازنشانی‌های DIFF صادر نخواهند شد.
اگر نام یک برچسب با نام یک ثبات یکسان باشد، اخطار نمی‌دهد. معمولاً برنامه‌نویسان اسمبلی می‌خواهند این اخطار صادر شود. کامپایلرهای C ممکن است بخواهند این اخطار را غیرفعال کنند.
این گزینه نسخه هسته PRU را برای اسمبل کردن مشخص می‌کند. نسخه‌های زیر شناسایی می‌شوند: "V1"، "V2"، "V3" و "V4". مقدار پیش‌فرض اسمبلر "V3" است.

گزینه‌های زیر زمانی در دسترس هستند که as برای یک پردازنده MIPS پیکربندی شده باشد.

این گزینه بیشترین اندازه یک شیء را که می‌تواند به طور ضمنی با ثبات "gp" مورد ارجاع قرار گیرد، تعیین می‌کند. این گزینه فقط برای مقصدهایی که از قالب ECOFF استفاده می‌کنند، مانند DECstation که Ultrix را اجرا می‌کند، پذیرفته می‌شود. مقدار پیش‌فرض ۸ است.
تولید خروجی با قالب «بزرگ‌پایان» (big endian).
تولید خروجی با قالب «کوچک‌پایان» (little endian).
تولید کد برای یک سطح خاص از معماری مجموعه دستورالعمل 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 Release 6 هستند.
تولید کد برای یک پردازنده MIPS خاص.
زمان‌بندی و بهینه‌سازی برای یک پردازنده MIPS خاص.
در صورتی که خواندن ثبات مقصدِ یک دستورالعمل mfhi یا mflo در دو دستورالعمل بعدی رخ دهد، باعث درج دستورات nop می‌شود.
اگر پس از یک دستورالعمل dmult یا dmultu یک دستورالعمل بارگذاری (load) قرار گیرد، باعث درج دستورات nop می‌شود.
از زمان‌بندی دستورالعمل قبلی درون شکاف تاخیر (delay slot) یک دستورالعمل پرش قرارگرفته در انتهای یک حلقه کوتاه شش دستورالعملی یا کمتر خودداری می‌کند و همیشه به جای آن یک دستورالعمل "nop" را در آنجا قرار می‌دهد. اشکال حلقه‌های کوتاه تحت شرایط خاصی به دلیل یک نقص سخت‌افزاری در تراشه R5900، باعث می‌شود حلقه‌ها فقط یک یا دو بار اجرا شوند.
باعث می‌شود خروجی اشکال‌زدایی با سبک stabs به جای بخش‌های استاندارد ELF .stabs در یک بخش .mdebug با سبک ECOFF قرار گیرد.
تولید بخش‌های ".pdr" را کنترل می‌کند.
اندازه‌های ثبات معمولاً از روی ISA و ABI استنباط می‌شوند، اما این پرچم‌ها گروه خاصی از ثبات‌ها را وادار می‌کنند که همواره به صورت ۳۲ بیتی مدیریت شوند. -mgp32 اندازه ثبات‌های همه‌منظوره و -mfp32 اندازه ثبات‌های ممیز شناور را کنترل می‌کند.
اندازه‌های ثبات معمولاً از روی ISA و ABI استنباط می‌شوند، اما این پرچم‌ها گروه خاصی از ثبات‌ها را وادار می‌کنند که همواره به صورت ۶۴ بیتی مدیریت شوند. -mgp64 اندازه ثبات‌های همه‌منظوره و -mfp64 اندازه ثبات‌های ممیز شناور را کنترل می‌کند.
اندازه‌های ثبات معمولاً از روی ISA و ABI استنباط می‌شوند، اما استفاده از این پرچم در ترکیب با -mabi=32 یک گونه از ABI را فعال می‌کند که با ثبات‌های ممیز شناور ۳۲ یا ۶۴ بیتی به درستی کار خواهد کرد.
استفاده از عملیات ممیز شناور روی ثبات‌های دقت‌تکی (single-precision) با شماره فرد را در صورت پشتیبانی توسط ISA فعال می‌کند. -mfpxx مستلزم -mno-odd-spreg است، در غیر این صورت حالت پیش‌فرض -modd-spreg است.
تولید کد برای پردازنده MIPS 16. این گزینه معادل قرار دادن ".module mips16" در ابتدای فایل اسمبلی است. -no-mips16 این گزینه را غیرفعال می‌کند..IP -mmips16e2 4
استفاده از دستورالعمل‌های MIPS16e2 را در حالت MIPS16 فعال می‌کند. این کار معادل قرار دادن ".module mips16e2" در آغاز فایل اسمبلی است. -mno-mips16e2 این گزینه را غیرفعال می‌کند.
تولید کد برای پردازنده microMIPS. این کار معادل قرار دادن ".module micromips" در آغاز فایل اسمبلی است. -mno-micromips این گزینه را غیرفعال می‌کند. این معادل قرار دادن ".module nomicromips" در آغاز فایل اسمبلی است.
افزونه SmartMIPS را به مجموعه دستورالعمل‌های MIPS32 فعال می‌کند. این کار معادل قرار دادن ".module smartmips" در آغاز فایل اسمبلی است. -mno-smartmips این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره MIPS-3D. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MIPS-3D را بپذیرد. -no-mips3d این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره MDMX. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MDMX را بپذیرد. -no-mdmx این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره DSP Release 1. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های DSP Release 1 را بپذیرد. -mno-dsp این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره DSP Release 2. این گزینه متضمن -mdsp است. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های DSP Release 2 را بپذیرد. -mno-dspr2 این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره DSP Release 3. این گزینه متضمن -mdsp و -mdspr2 است. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های DSP Release 3 را بپذیرد. -mno-dspr3 این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه MIPS SIMD Architecture. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MSA را بپذیرد. -mno-msa این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه MIPS eXtended Physical Address (XPA). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های XPA را بپذیرد. -mno-xpa این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره MT. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MT را بپذیرد. -mno-mt این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره MCU. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MCU را بپذیرد. -mno-mcu این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره MIPS cyclic redundancy check (CRC). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های CRC را بپذیرد. -mno-crc این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره Global INValidate (GINV). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های GINV را بپذیرد. -mno-ginv این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص‌منظوره Loongson MultiMedia extensions Instructions (MMI). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MMI را بپذیرد. -mno-loongson-mmi این گزینه را غیرفعال می‌کند.
تولید کد برای دستورالعمل‌های Loongson Content Address Memory (CAM). این به اسمبلر می‌گوید که دستورالعمل‌های Loongson CAM را بپذیرد. -mno-loongson-cam این گزینه را غیرفعال می‌کند.
تولید کد برای دستورالعمل‌های Loongson EXTensions (EXT). این به اسمبلر می‌گوید که دستورالعمل‌های Loongson EXT را بپذیرد. -mno-loongson-ext این گزینه را غیرفعال می‌کند.
تولید کد برای دستورالعمل‌های Loongson EXTensions R2 (EXT2). این گزینه متضمن -mloongson-ext است. این به اسمبلر می‌گوید که دستورالعمل‌های Loongson EXT2 را بپذیرد. -mno-loongson-ext2 این گزینه را غیرفعال می‌کند.
هنگام تولید کد برای پردازنده microMIPS فقط از کدگذاری‌های دستورالعمل ۳۲-بیتی استفاده می‌کند. این گزینه مانع استفاده از هرگونه دستورالعمل ۱۶-بیتی می‌شود. این کار معادل قرار دادن ".set insn32" در آغاز فایل اسمبلی است. -mno-insn32 این گزینه را غیرفعال می‌کند. این معادل قرار دادن ".set noinsn32" در آغاز فایل اسمبلی است. به‌طور پیش‌فرض -mno-insn32 انتخاب شده است که اجازه استفاده از همه دستورالعمل‌ها را می‌دهد.
گزینه --no-construct-floats ساخت ثابت‌های ممیز شناور با عرض دوگانه (double width) را از طریق بارگذاری دو نیمه مقدار در دو ثبات ممیز شناور با عرض تکی (single width) که ثبات با عرض دوگانه را تشکیل می‌دهند، غیرفعال می‌کند. به‌طور پیش‌فرض --construct-floats انتخاب شده است، که ساخت این ثابت‌های ممیز شناور را مجاز می‌داند.
گزینه --relax-branch قابلیت تعدیل (relaxation) شاخه‌های خارج از محدوده را فعال می‌کند. به‌طور پیش‌فرض --no-relax-branch انتخاب شده است، که باعث می‌شود هر شاخه خارج از محدوده خطایی ایجاد کند..IP -mignore-branch-isa 4
نادیده گرفتن بررسی‌های پرش برای انتقال‌های نامعتبر بین حالت‌های ISA. معناشناسی پرش‌ها امکان تعویض حالت ISA را فراهم نمی‌کند، بنابراین در بیشتر موارد حالت ISA که یک پرش برای آن کُدگذاری شده است باید با حالت ISA برچسبِ هدفِ پرش یکسان باشد. از این رو، GAS بررسی‌هایی را پیاده‌سازی کرده است که در زمان اسمبلی پرش، تطابق دو حالت ISA را اعتبارسنجی می‌کند. -mignore-branch-isa این بررسی‌ها را غیرفعال می‌کند. به‌طور پیش‌فرض، -mno-ignore-branch-isa انتخاب شده است که باعث می‌شود هر پرش نامعتبر نیازمند انتقال بین حالت‌های ISA، یک خطا تولید کند.
انتخاب میان قالب کُدگذاری NaN استاندارد IEEE 754-2008 (-mnan=2008) یا موروثی (-mnan=legacy). حالت دوم پیش‌فرض است.
این گزینه سابقاً برای جابه‌جایی میان خروجی ELF و ECOFF در مقصدهایی مانند IRIX 5 که از هر دو پشتیبانی می‌کردند به کار می‌رفت. پشتیبانی از MIPS ECOFF در GAS 2.24 حذف شد، بنابراین اکنون این گزینه کاربرد چندانی ندارد و صرفاً برای سازگاری با نسخه‌های پیشین حفظ شده است.

نام‌های پیکربندی دردسترس عبارت‌اند از: mipself، mipslelf و mipsbelf. انتخاب mipself اکنون تأثیری ندارد، چرا که خروجی همیشه ELF است. گزینه‌های mipslelf و mipsbelf به‌ترتیب خروجی‌های little- و big-endian را انتخاب می‌کنند، اما اکنون گزینه‌های -EL و -EB به‌جای آن‌ها ترجیح داده می‌شوند.

as این گزینه را نادیده می‌گیرد. این گزینه برای سازگاری با ابزارهای بومی پذیرفته می‌شود.
کنترل نحوهٔ برخورد با سرریز ضرب و تقسیم بر صفر. --trap یا --no-break (که مترادف هستند) یک استثنای trap ایجاد می‌کنند (و تنها برای معماری مجموعه دستورالعمل سطح ۲ و بالاتر کار می‌کنند)؛ --break یا --no-trap (نیز مترادف، و پیش‌فرض) یک استثنای break ایجاد می‌کنند.
هنگامی که از این گزینه استفاده شود، as هر بار که از یک ماکرو دستور nop تولید کند، یک هشدار صادر خواهد کرد.

گزینه‌های زیر زمانی که as برای یک پردازندهٔ LoongArch پیکربندی شده باشد، در دسترس هستند.

تولید کد مستقل از موقعیت (position-independent code).
عدم تولید کد مستقل از موقعیت (پیش‌فرض).

گزینه‌های زیر زمانی که as برای یک پردازندهٔ Meta پیکربندی شده باشد، در دسترس هستند.

"-mcpu=metac11"
تولید کد برای Meta 1.1.
"-mcpu=metac12"
تولید کد برای Meta 1.2.
"-mcpu=metac21"
تولید کد برای Meta 2.1.
"-mfpu=metac21"
مجاز دانستن کد به استفاده از سخت‌افزار FPU در Meta 2.1.

برای مستندات گزینه‌های خاص MMIX، به صفحات info مراجعه کنید.

گزینه‌های زیر زمانی که as برای یک پردازندهٔ NDS32 پیکربندی شده باشد، در دسترس هستند.

"-O1"
بهینه‌سازی برای کارایی.
"-Os"
بهینه‌سازی برای اندازه.
"-EL"
تولید خروجی دادهٔ little endian.
"-EB"
تولید خروجی دادهٔ big endian.
"-mpic"
تولید PIC.
"-mno-fp-as-gp-relax"
جلوگیری از تعدیل (relaxation) fp-as-gp برای این فایل.
"-mb2bb-relax"
بهینه‌سازی پرش‌های پشت‌سر‌هم (Back-to-back).
"-mno-all-relax"
جلوگیری از تمام تعدیل‌ها (relaxation) برای این فایل.
"-march=<arch name>";
اسمبلی برای معماری <arch name> که می‌تواند v3، v3j، v3m، v3f، v3s، v2، v2j، v2f، v2s باشد.
"-mbaseline=<baseline>"
اسمبلی برای خط مبنای (baseline) <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؛ پارامتر <abi> می‌تواند v1، v2، v2fp، v2fpp باشد.
"-m[no-]mac"
فعال/غیرفعال کردن پشتیبانی از دستورالعمل‌های ضرب (Multiply).
"-m[no-]div"
فعال/غیرفعال کردن پشتیبانی از دستورالعمل‌های تقسیم (Divide).
"-m[no-]16bit-ext"
فعال/غیرفعال کردن افزونهٔ ۱۶ بیتی.
"-m[no-]dx-regs"
فعال/غیرفعال کردن ثبات‌های d0/d1.
"-m[no-]perf-ext"
فعال/غیرفعال کردن افزونهٔ کارایی (Performance extension).
"-m[no-]perf2-ext"
فعال/غیرفعال کردن افزونهٔ کارایی ۲ (Performance extension 2).
"-m[no-]string-ext"
فعال/غیرفعال کردن افزونهٔ رشته (String extension).
"-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"
فعال/غیرفعال کردن دستورالعمل‌های fused-multiply-add در FPU.
"-mall-ext"
فعال کردن تمام افزونه‌ها و پشتیبانی از دستورالعمل‌ها..PP گزینه‌های زیر هنگامی که as برای پردازندهٔ PowerPC پیکربندی شده باشد، در دسترس هستند.
تولید ELF32 یا XCOFF32.
تولید ELF64 یا XCOFF64.
تنظیم EF_PPC_RELOCATABLE_LIB در پرچم‌های ELF.
تولید کد برای POWER/2 (RIOS2).
تولید کد برای POWER (RIOS1).
تولید کد برای PowerPC 601.
تولید کد برای PowerPC 603/604.
تولید کد برای PowerPC 403/405.
تولید کد برای PowerPC 440. دستورالعمل‌های BookE و برخی دستورالعمل‌های 405.
تولید کد برای PowerPC 464.
تولید کد برای PowerPC 476.
تولید کد برای PowerPC 7400/7410/7450/7455.
تولید کد برای PowerPC 750CL/Gekko/Broadway.
تولید کد برای PowerPC 821/850/860.
تولید کد برای PowerPC 620/625/630.
تولید کد برای گونه‌های e200، پردازندهٔ e200z2 با LSP و e200z4 با SPE.
تولید کد برای خانوادهٔ PowerPC e300.
تولید کد برای مجموعهٔ هستهٔ Motorola e500.
تولید کد برای مجموعهٔ هستهٔ Freescale e500mc.
تولید کد برای مجموعهٔ هستهٔ Freescale e500mc64.
تولید کد برای مجموعهٔ هستهٔ Freescale e5500.
تولید کد برای مجموعهٔ هستهٔ Freescale e6500.
فعال‌سازی دستورالعمل‌های LSP. (غیرفعال‌سازی SPE و SPE2.)
تولید کد برای دستورالعمل‌های Motorola SPE. (غیرفعال‌سازی LSP.)
تولید کد برای دستورالعمل‌های Freescale SPE2. (غیرفعال‌سازی LSP.)
تولید کد برای مجموعهٔ هستهٔ AppliedMicro Titan.
تولید کد برای PowerPC 64، شامل دستورالعمل‌های bridge.
تولید کد برای BookE ۳۲-بیتی.
تولید کد برای معماری A2.
تولید کد برای پردازنده‌های دارای دستورالعمل‌های AltiVec.
تولید کد برای دستورالعمل‌های Freescale PowerPC VLE.
تولید کد برای پردازنده‌های دارای دستورالعمل‌های Vector-Scalar (VSX).
تولید کد برای پردازنده‌های دارای دستورالعمل‌های Hardware Transactional Memory.
تولید کد برای معماری Power4.
تولید کد برای معماری Power5.
تولید کد برای معماری Power6.
تولید کد برای معماری Power7.
تولید کد برای معماری Power8.
تولید کد برای معماری Power9.
تولید کد برای معماری Power10.
تولید کد برای معماری Power11.
تولید کد برای معماری 'future'.
تولید کد برای معماری Cell Broadband Engine.
تولید کد برای دستورالعمل‌های مشترک Power/PowerPC.
تولید کد برای هر معماری (PWR/PWRX/PPC).
مجاز شمردن نام‌های نمادین برای ثبات‌ها.
غیرمجاز شمردن نام‌های نمادین برای ثبات‌ها.
پشتیبانی از گزینهٔ -mrelocatable در GCC.
پشتیبانی از گزینهٔ -mrelocatable-lib در GCC.
تنظیم بیت PPC_EMB در پرچم‌های ELF.
تولید کد برای یک ماشین little endian.
تولید کد برای یک ماشین big endian.
اگر یک دستور هم‌ترازسازی بیش از count دستور nop درج کند، یک پرش (branch) در ابتدا قرار می‌دهد تا از اجرای nopها صرف‌نظر شود.

گزینه‌های زیر هنگامی که as برای یک پردازندهٔ RISC-V پیکربندی شده باشد، در دسترس هستند.

تولید کد مستقل از موقعیت (position-independent code).
تولید نکردن کد مستقل از موقعیت (پیش‌فرض).
انتخاب isa پایه، همان‌طور که توسط ISA یا Profiles یا Profiles_ISA مشخص شده است. برای نمونه -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. اگر این گزینه و مشخصه‌های معماری تنظیم نشده باشند، اسمبلر تنظیمات پیش‌فرضِ پیکربندی --with-arch=ISA را بررسی خواهد کرد.
انتخاب نسخهٔ مشخصات پیش‌فرض isa. اگر نسخهٔ ISA با -march مشخص نشده باشد، اسمبلر در تعیین نسخه بر پایهٔ مشخصات پیش‌فرض برگزیده کمک می‌کند. اگر این گزینه تنظیم نشده باشد، اسمبلر تنظیمات پیش‌فرض پیکربندی --with-isa-spec=ISAspec را بررسی خواهد کرد.
انتخاب نسخهٔ مشخصات سطح دسترسی ویژه (privileged spec). می‌توان معتبر بودن یا نبودن CSR را بر پایهٔ مشخصات انتخاب‌شده تعیین کرد. اگر این گزینه و مشخصه‌های سطح دسترسی ویژه تنظیم نشده باشند، اسمبلر تنظیمات پیش‌فرض پیکربندی --with-priv-spec=PRIVspec را بررسی خواهد کرد.
انتخاب ABI، که یکی از مقادیر "ilp32" یا "lp64" است، که می‌تواند در صورت نیاز با "f"، "d"، یا "q" دنبال شود تا قرارداد فراخوانی ممیز شناور با دقت یگانه (single-precision)، دقت مضاعف (double-precision)، یا دقت چهارگانه (quad-precision) را مشخص کند، یا بدون پسوند یا با "e" همراه باشد تا قرارداد فراخوانی ممیز شناور نرم‌افزاری (soft-float) را مشخص کند ("e" نشان‌دهندهٔ یک soft-float RVE ABI است)..IP -mrelax 4 بهره‌گیری از ساده‌سازی‌های پیونددهنده (linker relaxations) برای کاهش تعداد دستورالعمل‌های مورد نیاز جهت تحقق نشانی‌های نمادها. (پیش‌فرض)
ساده‌سازی‌های پیونددهنده را انجام نده.
تولید محتوای پیش‌فرض برای بخش ویژگی‌های riscv elf در صورتی که دایرکتیوهای .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی استفاده می‌شود که یک پیونددهنده یا بارگذار زمان اجرا برای بررسی سازگاری به آن نیاز دارد. این اطلاعات شامل رشته ISA، نیازمندی‌های تراز پشته، دسترسی‌های حافظه ترازبندی‌نشده، و نسخه‌های major، minor و revision از مشخصات ممتاز (privileged specification) است.
در صورت عدم تنظیم دایرکتیوهای .attribute، بخش پیش‌فرض ویژگی‌های riscv elf را تولید نکن.
فعال‌سازی بررسی CSR برای CSRهای وابسته به ISA و CSRهای فقط‌خواندنی. CSRهای وابسته به ISA تنها زمانی معتبرند که ISA مشخص‌شده تنظیم شده باشد. در CSRهای فقط‌خواندنی نمی‌توان با دستورالعمل‌های CSR نوشت.
بررسی CSR را انجام نده.
تولید کد برای یک ماشین با ترتیب بایت ریزانتهایی (little endian).
تولید کد برای یک ماشین با ترتیب بایت کلان‌انتهایی (big endian).

برای مستندات گزینه‌های مختص RX، به صفحه‌های info مراجعه کنید.

گزینه‌های زیر زمانی در دسترس هستند که as برای خانواده پردازنده‌های s390 پیکربندی شده باشد.

انتخاب اندازه کلمه (word size)، یا ۳۱/۳۲ بیت یا ۶۴ بیت.
انتخاب حالت معماری، یا Enterprise System Architecture (esa) یا حالت z/Architecture (zarch).
مشخص می‌کند کدام گونه از پردازنده 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).
مجاز کردن یا غیرمجاز کردن نام‌های نمادین برای ثبات‌ها.
هرگاه عملوند یک ثبات پایه یا شاخص مشخص شده باشد اما مقدار آن برابر با صفر ارزیابی شود، هشدار بده.
کنترل می‌کند که آیا اسمبلر بررسی نوع نام ثبات را انجام دهد و در صورت عدم تطابق با نوع ثبات عملوند، پیام هشدار تولید کند یا خیر. حالت پیش‌فرض (که با استفاده از آرگومان relaxed قابل بازیابی است) انجام بررسی‌های نوع نام ثبات به صورت آسان‌گیرانه است، که به نام‌های ثبات ممیز شناور (FPR) از %f0 تا %f15 اجازه می‌دهد به عنوان آرگومان به عملوندهای ثبات برداری (VR) مشخص شوند و به نام‌های ثبات برداری (VR) از %v0 تا %v15 اجازه می‌دهد به عنوان آرگومان به عملوندهای ثبات ممیز شناور (FPR) داده شوند. این امر قابل قبول است زیرا FPR در نیمه پایینی VR تعبیه شده است. با استفاده از آرگومان strict، بررسی‌های سخت‌گیرانه نوع نام ثبات انجام می‌شود. آرگومان no، که معادل -mno-warn-regtype-mismatch است، هرگونه بررسی نوع نام ثبات را غیرفعال می‌کند.

گزینه‌های زیر زمانی در دسترس هستند که as برای پردازنده TMS320C6000 پیکربندی شده باشد.

دستورالعمل‌ها را (تنها) از معماری arch فعال می‌کند. به صورت پیش‌فرض، تمام دستورالعمل‌ها مجاز هستند.

مقدارهای زیر برای arch پذیرفته می‌شوند: "c62x"، "c64x"، "c64x+"، "c67x"، "c67x+"، "c674x".

گزینه -mdsbt موجب می‌شود که اسمبلر ویژگی "Tag_ABI_DSBT" را با مقدار 1 تولید کند که نشان می‌دهد کد از آدرس‌دهی DSBT استفاده می‌کند. گزینه -mno-dsbt، که پیش‌فرض است، باعث می‌شود این برچسب دارای مقدار 0 باشد که نشان می‌دهد کد از آدرس‌دهی DSBT استفاده نمی‌کند. اگر اشیایی از انواع متفاوت (DSBT و غیر-DSBT) با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
گزینه -mpid= موجب می‌شود که اسمبلر ویژگی "Tag_ABI_PID" را با مقداری تولید کند که شکل آدرس‌دهی داده‌های مورد استفاده کد را نشان می‌دهد. -mpid=no، که پیش‌فرض است، نشان‌دهنده آدرس‌دهی داده وابسته به مکان است، -mpid=near نشان‌دهنده آدرس‌دهی مستقل از مکان با دسترسی‌های GOT با استفاده از آدرس‌دهی DP نزدیک است، و -mpid=far نشان‌دهنده آدرس‌دهی مستقل از مکان با دسترسی‌های GOT با استفاده از آدرس‌دهی DP دور است. اگر اشیای ساخته‌شده با تنظیمات مختلف این گزینه با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
گزینه -mpic موجب می‌شود که اسمبلر ویژگی "Tag_ABI_PIC" را با مقدار 1 تولید کند که نشان می‌دهد کد از آدرس‌دهی کد مستقل از مکان استفاده می‌کند. گزینه "-mno-pic"، که پیش‌فرض است، باعث می‌شود این برچسب دارای مقدار 0 باشد که نشان‌دهنده آدرس‌دهی کد وابسته به مکان است. اگر اشیایی از انواع متفاوت (وابسته به مکان و مستقل از مکان) با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
تولید کد برای ترتیب بایت مشخص‌شده. پیش‌فرض، ریزانتهایی (little-endian) است.

گزینه‌های زیر زمانی در دسترس هستند که as برای پردازنده TILE-Gx پیکربندی شده باشد.

انتخاب اندازه کلمه، یا ۳۲ بیت یا ۶۴ بیت.
انتخاب ترتیب بایت، یا کلان‌انتهایی (-EB) یا ریزانتهایی (-EL).

گزینه زیر زمانی در دسترس است که as برای یک پردازنده Visium پیکربندی شده باشد.

این گزینه معماری هدف را مشخص می‌کند. اگر تلاشی برای اسمبل کردن دستورالعملی که بر روی معماری هدف اجرا نخواهد شد صورت گیرد، اسمبلر یک پیام خطا صادر خواهد کرد.

نام‌های زیر شناخته‌شده هستند: "mcm24" "mcm" "gr5" "gr6"

گزینه‌های زیر زمانی در دسترس هستند که as برای یک پردازنده Xtensa پیکربندی شده باشد.

کنترل نحوه رفتار با استخرهای مقادیر صریح (literal pools). حالت پیش‌فرض --no-text-section-literals است که مقادیر صریح را در بخش‌های جداگانه در فایل خروجی قرار می‌دهد. این کار اجازه می‌دهد تا استخر مقادیر صریح در یک RAM/ROM داده قرار گیرد. با --text-section-literals، مقادیر صریح در بخش text پراکنده می‌شوند تا در نزدیک‌ترین حالت ممکن به مراجع خود نگهداری شوند. این امر ممکن است برای فایل‌های اسمبلی بزرگ ضروری باشد، جایی که در غیر این صورت مقادیر صریح خارج از محدوده دستورالعمل‌های "L32R" در بخش text قرار می‌گیرند. مقادیر صریح پس از دایرکتیوهای ".literal_position" یا قبل از دستورالعمل‌های "ENTRY" در استخرها دسته‌بندی می‌شوند. این گزینه‌ها تنها بر مقادیر صریحی که از طریق دستورالعمل‌های "L32R" وابسته به شمارنده برنامه (PC-relative) ارجاع داده شده‌اند تأثیر می‌گذارند؛ مقادیر صریح برای دستورالعمل‌های "L32R" در حالت مطلق به طور جداگانه مدیریت می‌شوند.
کنترل نحوه رفتار با استخرهای مقادیر صریح. حالت پیش‌فرض --no-auto-litpools است، که در نبود --text-section-literals، مقادیر صریح را در بخش‌های جداگانه در فایل خروجی قرار می‌دهد. این کار اجازه می‌دهد استخر مقادیر صریح در یک RAM/ROM داده قرار گیرد. با --auto-litpools، مقادیر صریح در بخش text پراکنده می‌شوند تا در نزدیک‌ترین فاصله ممکن به مراجع خود قرار گیرند؛ دایرکتیوهای صریح ".literal_position" مورد نیاز نیستند. این ویژگی ممکن است برای توابع بسیار بزرگ ضروری باشد، جایی که یک استخر مقادیر صریح منفرد در ابتدای تابع ممکن است برای دستورالعمل‌های "L32R" در انتهای آن قابل دسترسی نباشد. این گزینه‌ها تنها بر مقادیر صریحی که از طریق دستورالعمل‌های "L32R" وابسته به PC ارجاع داده شده‌اند تأثیر می‌گذارند؛ مقادیر صریح برای دستورالعمل‌های "L32R" در حالت مطلق به طور جداگانه مدیریت می‌شوند. در صورت استفاده هم‌زمان با --text-section-literals، گزینه --auto-litpools اولویت دارد..IP "--absolute-literals | --no-absolute-literals" 4 به اسمبلر مشخص می‌کند که آیا دستورالعمل‌های "L32R" از آدرس‌دهی مطلق (absolute) استفاده می‌کنند یا نسبی به "PC" (PC-relative). اگر پردازنده شامل گزینهٔ آدرس‌دهی مطلق باشد، حالت پیش‌فرض استفاده از بازنشانی‌های (relocations) مطلق "L32R" است. در غیر این صورت، تنها بازنشانی‌های نسبی به PC برای "L32R" قابل استفاده خواهند بود.
ترازسازی خودکار را برای کاهش جریمه‌های انشعاب (branch penalties) با مقداری افزایش در حجم کد فعال یا غیرفعال می‌کند. این بهینه‌سازی به طور پیش‌فرض فعال است. توجه داشته باشید که اسمبلر همواره دستورالعمل‌هایی مانند "LOOP" را که نیازمندی‌های ترازسازی ثابتی دارند، تراز خواهد کرد.
تبدیل دستورالعمل‌های فراخوانی (call) را برای امکان‌پذیر ساختن فراخوانی‌ها در بازهٔ وسیع‌تری از آدرس‌ها فعال یا غیرفعال می‌کند. این گزینه باید زمانی استفاده شود که مقصدهای فراخوانی ممکن است خارج از محدوده باشند. این کار ممکن است حجم کد و کارایی را کاهش دهد، اما پیونددهنده (linker) معمولاً در مواردی که فراخوانی در نهایت درون محدوده قرار گیرد، می‌تواند سربار غیرضروری را بهینه‌سازی و حذف کند. حالت پیش‌فرض --no-longcalls است.
تمام تبدیلات اسمبلر روی دستورالعمل‌های Xtensa، شامل هر دو مورد سست‌سازی (relaxation) و بهینه‌سازی (optimization) را فعال یا غیرفعال می‌کند. حالت پیش‌فرض --transform است؛ گزینهٔ --no-transform فقط باید در موارد نادری به کار رود که دستورالعمل‌ها باید دقیقاً همان‌گونه که در کد منبع اسمبلی مشخص شده‌اند باشند. استفاده از --no-transform باعث می‌شود عملوندهای دستورالعمل خارج از محدوده به عنوان خطا در نظر گرفته شوند.
نام بخش oldname را به newname تغییر می‌دهد. این گزینه می‌تواند چندین بار برای تغییر نام چندین بخش استفاده شود.
تبدیل دستورالعمل‌های پرش (jump) را برای امکان‌پذیر ساختن پرش‌ها در بازهٔ وسیع‌تری از آدرس‌ها فعال یا غیرفعال می‌کند. این گزینه باید زمانی استفاده شود که مقصدهای پرش ممکن است خارج از محدوده باشند. در غیاب چنین پرش‌هایی، این گزینه تأثیری بر حجم کد یا کارایی نخواهد داشت. حالت پیش‌فرض --trampolines است.
برچسب ABI نوشته‌شده در بخش ".xtensa.info" را تعیین می‌کند. برچسب ABI نشان‌دهندهٔ ABI کد اسمبلی است. در صورت تلاش برای پیوند دادن فایل‌های شیء با برچسب‌های ABI ناسازگار، هشداری توسط پیونددهنده صادر می‌شود. ABI پیش‌فرض توسط پیکربندی هستهٔ Xtensa تعیین می‌شود.

گزینه‌های زیر زمانی در دسترس هستند که as برای پردازندهٔ Z80 پیکربندی شده باشد.

@chapter ویژگی‌های وابسته به Z80

این گزینه پردازندهٔ مقصد را مشخص می‌کند. اگر تلاشی برای اسمبل کردن دستورالعملی صورت گیرد که بر روی پردازندهٔ مقصد اجرا نمی‌شود، اسمبلر یک پیام خطا صادر خواهد کرد. نام پردازنده‌های زیر شناخته‌شده هستند: "z80"، "z180"، "ez80"، "gbz80"، "z80n"، "r800". علاوه بر مجموعه دستورالعمل‌های پایه، می‌توان به اسمبلر اعلام کرد که برخی از نمادهای اختصاری افزونه‌ها (extension mnemonics) را بپذیرد. برای مثال، "-march=z180+sli+infc" پردازندهٔ z180 را با دستورالعمل‌های SLI و IN F,(C) گسترش می‌دهد. افزونه‌های زیر در حال حاضر پشتیبانی می‌شوند: "full" (تمام دستورالعمل‌های شناخته‌شده)، "adl" (حالت پردازندهٔ ADL به طور پیش‌فرض، فقط برای 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" در نظر گرفته می‌شود.

تمام برچسب‌های دارای پیشوند مشخص‌شده را به عنوان محلی علامت‌گذاری می‌کند. با این حال چنین برچسبی می‌تواند صریحاً در کد به صورت سراسری (global) علامت‌گذاری شود. این گزینه پیشوند پیش‌فرض برچسب محلی ".L" را تغییر نمی‌دهد، بلکه فقط یک پیشوند جدید اضافه می‌کند.
برچسب‌های بدون دونقطه را می‌پذیرد. تمام نمادها در ابتدای خط به عنوان برچسب در نظر گرفته می‌شوند.
کد اسمبلی تولیدشده توسط SDCC را می‌پذیرد.
قالب اعداد ممیز شناور با دقت یگانه (single precision). پیش‌فرض: ieee754 (۳۲ بیتی).
قالب اعداد ممیز شناور با دقت مضاعف (double precision). پیش‌فرض: ieee754 (۶۴ بیتی).

gcc(1)، ld(1) و مدخل‌های Info برای binutils و ld.

حق نشر (c) 1991-2026 Free Software Foundation, Inc.

اجازه‌نامه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ بالاتر منتشر شده توسط بنیاد نرم‌افزارهای آزاد (Free Software Foundation) اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» قرار داده شده است.

2026-08-31 binutils-2.47