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

گزینه‌های مقصد i386:
[--32|--x32|--64] [-n]
[-march=CPU[+EXTENSION...]] [-mtune=CPU]

گزینه‌های مقصد IA-64:
[-mconstant-gp|-mauto-pic]
[-milp32|-milp64|-mlp64|-mp64]
[-mle|mbe]
[-mtune=itanium1|-mtune=itanium2]
[-munwind-check=warning|-munwind-check=error]
[-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
[-x|-xexplicit] [-xauto] [-xdebug]

گزینه‌های مقصد IP2K:
[-mip2022|-mip2022ext].PP گزینه‌های هدف 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]
[-msolaris|-mno-solaris]
[-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 در واقع خانواده‌ای از اسمبلرها است. اگر از اسمبلر گنو در یک معماری استفاده می‌کنید (یا استفاده کرده‌اید)، هنگام استفاده از آن در معماری دیگر با محیطی نسبتاً مشابه روبرو خواهید شد. هر نسخه اشتراکات فراوانی با سایر نسخه‌ها دارد، از جمله قالب‌های فایل شیء (object file)، بیشتر دستورالعمل‌های اسمبلر (که اغلب pseudo-ops یا شبه‌دستور نامیده می‌شوند) و نحو (syntax) اسمبلر.

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

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

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

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

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

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

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

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

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

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

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

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

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

فعال کردن فهرست‌ها (listings) به روش‌های گوناگون:
صرف‌نظر از شرطی‌های نادرست
صرف‌نظر از دستورالعمل‌های اشکال‌زدایی
شامل کردن اطلاعات عمومی، مانند نسخهٔ as و گزینه‌های فرستاده‌شده
شامل کردن کد مبدأ سطح‌بالا
شامل کردن کد اسمبلی
شامل کردن کد اسمبلی به همراه ginsn
شامل کردن بسط ماکروها
صرف‌نظر از پردازش فرم‌ها
شامل کردن نمادها
=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 است، اما می‌توان با گزینه‌ای در زمان پیکربندی (configure time) این رفتار را بازنویسی کرد.
فعال‌سازی اشکال‌زدایی در بک‌اند‌های وابسته به هدف، در صورت پشتیبانی؛ در غیر این صورت نادیده گرفته می‌شود. حتی اگر نادیده گرفته شود، این گزینه به منظور سازگاری اسکریپت‌ها با فراخوانی سایر اسمبلرها پذیرفته می‌شود.
هنگام اسمبل کردن فایل‌ها در دایرکتوری old، اطلاعات اشکال‌زدایی را به‌گونه‌ای ثبت می‌کند که گویی در new قرار دارند.
تعریف نماد sym با مقدار value پیش از اسمبل کردن فایل ورودی. مقدار value باید یک ثابت عددی صحیح باشد. مانند زبان C، پیشوند 0x نشان‌دهندهٔ یک مقدار هگزادسیمال، و پیشوند 0 نشان‌دهندهٔ یک مقدار هشت‌هشتی (octal) است. مقدار این نماد می‌تواند درون فایل مبدأ از طریق به‌کارگیری شبه‌دستور ".set" بازنویسی شود.
نمایش نحوهٔ پیکربندی اسمبلر و سپس خروج.
این گزینه‌ها تعیین می‌کنند که آیا اسمبلر ELF باید نمادهای عمومی (common symbols) را با نوع "STT_COMMON" تولید کند یا خیر. حالت پیش‌فرض را می‌توان توسط گزینهٔ پیکربندی --enable-elf-stt-common کنترل کرد.
درج نمادهای مطلق از پیش تعریف‌شده (محلی) در جدول نمادهای خروجی. توجه داشته باشید که این گزینه دقیقاً برعکس --strip-local-absolute نیست.
اگر اسمبلر برای پشتیبانی از چندین پیکربندی هدف مختلف تنظیم شده باشد، می‌توان از این گزینه برای انتخاب حالت مورد نظر استفاده کرد.
«سریع»---صرف‌نظر از پیش‌پردازش فاصله‌ها و توضیحات (با این فرض که مبدأ، خروجی کامپایلر است).
تولید اطلاعات اشکال‌زدایی برای هر خط از سورس اسمبلر با استفاده از هر قالب اشکال‌زدایی که هدف ترجیح می‌دهد. این مورد در حال حاضر به معنای STABS، ECOFF یا DWARF2 است. هنگامی که قالب اشکال‌زدایی DWARF باشد، بخش‌های ".debug_info" و ".debug_line" تنها زمانی منتشر می‌شوند که فایل اسمبلی خودش آن‌ها را تولید نکرده باشد.
تولید اطلاعات اشکال‌زدایی stabs برای هر خط اسمبلر. در صورتی که اشکال‌زدا بتواند آن را مدیریت کند، این گزینه ممکن است به اشکال‌زدایی کد اسمبلی کمک کند.
تولید اطلاعات اشکال‌زدایی stabs برای هر خط اسمبلر، همراه با گسترش‌های GNU که احتمالاً تنها gdb قادر به مدیریت آن‌هاست و ممکن است موجب از کار افتادن (crash) یا امتناع سایر اشکال‌زداها از خواندن برنامه شما شود. این گزینه ممکن است به اشکال‌زدایی کد اسمبلی کمک کند. در حال حاضر تنها گسترش 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 لغو کرد.
نادیده گرفته می‌شود. برای سازگاری خط فرمان با سایر اسمبلرها پشتیبانی می‌شود.
چاپ خلاصه‌ای از گزینه‌های خط فرمان و خروج.
چاپ خلاصه‌ای از تمامی گزینه‌های مختص هدف و خروج.
جلوگیری نکردن از نمایش پیام‌های اطلاعاتی.
جلوگیری از نمایش پیام‌های اطلاعاتی.
افزودن دایرکتوری dir به فهرست جستجو برای دستورالعمل‌های ".include".
عدم هشدار درباره سرریز علامت‌دار.
صدور هشدار هنگامی که جدول‌های تفاضل برای جابه‌جایی‌های بزرگ تغییر می‌کنند.
نگه‌داری نمادهای محلی (در جدول نمادها). این نمادها با پیشوندهای برچسب محلی مختص سیستم شروع می‌شوند؛ معمولاً .L برای سیستم‌های ELF یا L برای سیستم‌های سنتی a.out.
تنظیم حداکثر عرض ستون داده‌های خروجی برای سیاهه اسمبلر، بر حسب word، روی number.
تنظیم حداکثر عرض ستون داده‌های خروجی برای خطوط ادامه‌دار در سیاهه اسمبلر، بر حسب word، روی number.
تنظیم حداکثر عرض یک خط سورس ورودی، آن‌گونه که در سیاهه نمایش داده می‌شود، روی number بایت.
تنظیم حداکثر تعداد خطوط چاپ‌شده در یک سیاهه برای یک خط ورودی تکی روی number + 1.
نحوه مدیریت نویسه‌های چندبایتی در ورودی توسط اسمبلر را کنترل می‌کند. حالت پیش‌فرض (که با استفاده از آرگومان allow قابل بازیابی است) اجازه دادن به این نویسه‌ها بدون اعلام خطا است. استفاده از آرگومان warn باعث می‌شود اسمبلر در صورت مواجهه با هر نویسه چندبایتی یک پیام هشدار تولید کند. استفاده از آرگومان warn-sym-only تنها زمانی موجب صدور هشدار می‌شود که نمادی با نام حاوی نویسه‌های چندبایتی تعریف شده باشد. (ارجاع به نمادهای تعریف‌نشده هشداری تولید نخواهد کرد).
متوقف کردن پر کردن (padding) انتهای بخش‌های خروجی توسط اسمبلر تا تراز آن بخش. حالت پیش‌فرض پر کردن بخش‌ها است، اما این کار می‌تواند فضایی را که ممکن است در اهداف دارای محدودیت شدید حافظه مورد نیاز باشد، هدر دهد.
نام‌گذاری فایل شیء خروجی از as به objfile.
ادغام بخش داده (data) در بخش کد (text).
نادیده گرفته می‌شود. برای سازگاری با ابزارهایی پشتیبانی می‌شود که گزینه یکسانی را به هر دو، یعنی اسمبلر و پیونددهنده (linker)، ارسال می‌کنند.
این گزینه کنترل می‌کند که آیا اسمبلر باید CFI را برای ورودی‌های دست‌نویس ترکیب (synthesize) کند یا خیر. اگر ورودی در حال حاضر حاوی برخی دستورالعمل‌های ترکیب‌پذیر CFI باشد، اسمبلر آن‌ها را نادیده گرفته و یک هشدار صادر می‌کند. توجه داشته باشید که "--scfi=experimental" برای کدهای تولیدشده توسط کامپایلر، از جمله اسمبلی درون‌خطی (inline assembly)، در نظر گرفته نشده است. این پشتیبانی آزمایشی در حال توسعه است. تنها System V AMD64 ABI پشتیبانی می‌شود.

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

رعایت و اعمال توالی‌های جایگزینی در نام بخش‌ها.
صدور خطا یا هشدار برای دستورالعمل نامعتبر .size در ELF.
چاپ حداکثر فضای استفاده‌شده (به بایت) و کل زمان صرف‌شده (به ثانیه) توسط اسمبلر.
حذف نمادهای محلی مطلق از جدول نمادهای خروجی.
چاپ نسخه as..IP --version 4
نسخهٔ 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، افزونه‌ها همیشه به‌طور پیش‌فرض فعال نیستند.

این گزینه پیام‌های خطای پرگو (verbose) را برای AArch64 gas فعال می‌کند. این گزینه به‌طور پیش‌فرض فعال است.
این گزینه پیام‌های خطای پرگو را در AArch64 gas غیرفعال می‌کند.
این گزینه پیام‌های خطایی را فعال می‌کند که در صورت تلاش برای اسمبل کردن دسترسی به یک ثبات سیستمی صادر می‌شوند که روی معماری هدف اجرا نخواهد شد.

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

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

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

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

مشخص می‌کند که کدام گونه از پردازندهٔ ARM هدف است.
مشخص می‌کند که کدام گونه از معماری ARM توسط هدف استفاده می‌شود.
معماری ممیز شناور هدف را انتخاب می‌کند.
مشخص می‌کند که کدام ABI ممیز شناور در حال استفاده است.
رمزگشایی دستورالعمل‌های منحصراً Thumb را فعال می‌کند.
مشخص می‌کند که کدام قرارداد فراخوانی روال (procedure calling convention) در حال استفاده است.
خروجی بزرگ‌پایان (-EB) یا کوچک‌پایان (-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".
برای ABI مربوط به FDPIC اسمبل می‌کند.
غیرفعال کردن -mfdpic.

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

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

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

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

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

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

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

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

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

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

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

گزینه‌های زیر هنگامی در دسترس هستند که as برای یک پردازندهٔ H8/300 پیکربندی شده باشد. @chapter ویژگی‌های وابسته به H8/300

نسخهٔ 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 گنجانده شده باشد (در یک پلتفرم ۳۲ بیتی برای فعال‌سازی استفاده از ۶۴ بیت و استفاده از x86-64 به عنوان پلتفرم مقصد، باید --enable-64-bit-bfd را به configure اضافه کنید).

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

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

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

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

این گزینه‌ها چگونگی کدگذاری دستورالعمل‌های EVEX با طول نادیده‌گرفته‌شده (LIG) توسط اسِمبلر را کنترل می‌کنند. -mevexlig=128، که پیش‌فرض است، دستورالعمل‌های LIG EVEX را با طول بردار ۱۲۸ بیتی کدگذاری می‌کند. -mevexlig=256 و -mevexlig=512 دستورالعمل‌های LIG EVEX را به ترتیب با طول بردار ۲۵۶ بیتی و ۵۱۲ بیتی کدگذاری می‌کنند.
این گزینه‌ها چگونگی کدگذاری دستورالعمل‌های EVEX با بیت w نادیده‌گرفته‌شده (WIG) توسط اسِمبلر را کنترل می‌کنند. -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 را به همهٔ انشعاب‌ها اضافه کند، حتی اگر چنین پیشوندی صراحتاً در کد منبع مشخص نشده باشد.
در مقصد ELF، اسِمبلر معمولاً بازنشانی‌های (relocations) غیر PLT را در برابر اهداف انشعاب سراسری غیرضعیف (non-weak) و تعریف‌شده با قابلیت مشاهدهٔ پیش‌فرض، حذف و بهینه‌سازی می‌کند. گزینهٔ -mshared به اسِمبلر اعلام می‌کند کدی تولید کند که ممکن است وارد یک کتابخانهٔ اشتراکی شود؛ جایی که همهٔ اهداف انشعاب سراسری غیرضعیف با قابلیت مشاهدهٔ پیش‌فرض می‌توانند قبضه‌پذیر (preempted) باشند. کد حاصل کمی حجیم‌تر خواهد بود. این گزینه فقط بر پردازش دستورالعمل‌های انشعاب تأثیر می‌گذارد.
در مقصد PE/COFF، این گزینه استفاده از قالب فایل هدف بزرگ (big object file) را اجباری می‌کند که امکان داشتن بیش از ۳۲۷۶۸ بخش را فراهم می‌سازد.
این گزینه‌ها چگونگی کدگذاری پیشوند 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 بازنشانی‌های کاهشی را تولید نخواهد کرد. پیش‌فرض را می‌توان از طریق گزینهٔ پیکربندی --enable-x86-relax-relocations کنترل کرد.
این گزینه‌ها کنترل می‌کنند که آیا اسِمبلر بازنشانی tls را بررسی کند یا خیر. -mtls-check=yes بازنشانی tls را بررسی می‌کند. -mtls-check=no بازنشانی tls را بررسی نمی‌کند. پیش‌فرض را می‌توان از طریق گزینهٔ پیکربندی --enable-x86-tls-check کنترل کرد.
این گزینه چگونگی هم‌ترازی انشعاب‌ها با پیشوندهای سگمنت یا NOP توسط اسِمبلر را کنترل می‌کند. NUM باید توانی از ۲ باشد؛ این مقدار باید ۰ یا عددی نه کمتر از ۱۶ باشد. انشعاب‌ها در مرز NUM بایتی هم‌تراز خواهند شد. -malign-branch-boundary=0، که پیش‌فرض است، انشعاب‌ها را هم‌تراز نمی‌کند.
این گزینه انواع انشعاب‌هایی را که باید هم‌تراز شوند مشخص می‌کند. TYPE ترکیبی است از: jcc (که پرش‌های شرطی را هم‌تراز می‌کند)، fused (که پرش‌های شرطی ادغام‌شده را هم‌تراز می‌کند)، jmp (که پرش‌های غیرشرطی را هم‌تراز می‌کند)، call (که فراخوانی‌ها را هم‌تراز می‌کند)، ret (که بازگشت‌ها را هم‌تراز می‌کند)، و indirect (که پرش‌ها و فراخوانی‌های غیرمستقیم را هم‌تراز می‌کند). مقدار پیش‌فرض -malign-branch=jcc+fused+jmp است..IP -malign-branch-prefix-size=NUM 4 این گزینه بیشینهٔ تعداد پیشوندهای روی یک دستورالعمل را برای تراز کردن انشعاب‌ها مشخص می‌کند. NUM باید بین 0 و 5 باشد. مقدار پیش‌فرض NUM برابر 5 است.
این گزینه پرش‌های شرطی، پرش‌های شرطی ادغام‌شده (fused) و پرش‌های بدون‌شرط را در یک مرز ۳۲ بایتی با حداکثر ۵ پیشوند سگمنت روی یک دستورالعمل تراز می‌کند. این گزینه معادل است با: -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 تولید می‌کند و نه هشداری صادر می‌کند، که حالت پیش‌فرض است. توجه داشته باشید که به دلیل تولید شدن lfence پس از بارگذاری ثبات مقصد انشعاب، با فعال بودن -mlfence-after-load=yes دستور 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 کُدگذاری خواهند کرد.
این گزینه مشخص می‌کند که اسمبلر در حالت ۶۴ بیتی باید فقط ISA مربوط به AMD64 یا Intel64 را بپذیرد. حالت پیش‌فرض، پذیرش ISAهای مشترک، فقط-Intel64 و AMD64 است.
کُدگذاری دستورالعمل‌ها را با اندازهٔ دستورالعمل کوچک‌تر بهینه‌سازی می‌کند. گزینه‌های -O و -O1 دستورالعمل‌های بارگذاری ثبات ۶۴ بیتی با مقدار بی‌درنگ (immediate) ۶۴ بیتی را به‌صورت دستورالعمل‌های بارگذاری ثبات ۳۲ بیتی با مقادیر بی‌درنگ ۳۱ بیتی یا ۳۲ بیتی کُدگذاری می‌کنند، دستورالعمل‌های پاک‌سازی ثبات ۶۴ بیتی را به‌صورت دستورالعمل‌های پاک‌سازی ثبات ۳۲ بیتی کُدگذاری می‌کنند، دستورالعمل‌های پاک‌سازی ثبات برداری ۲۵۶ بیتی/۵۱۲ بیتی VEX/EVEX را با دستورالعمل‌های پاک‌سازی ثبات برداری ۱۲۸ بیتی VEX کُدگذاری می‌کنند، دستورالعمل‌های بارگذاری/ذخیره ثبات برداری ۱۲۸ بیتی/۲۵۶ بیتی EVEX را با دستورالعمل‌های بارگذاری/ذخیره ثبات برداری VEX کُدگذاری می‌کنند، و دستورالعمل‌های منطقی اعداد صحیح بسته‌بندی‌شدهٔ ۱۲۸ بیتی/۲۵۶ بیتی EVEX را با دستورالعمل‌های منطقی اعداد صحیح بسته‌بندی‌شدهٔ ۱۲۸ بیتی/۲۵۶ بیتی VEX کُدگذاری می‌کنند.

-O2 شامل بهینه‌سازی‌های -O1 به علاوهٔ کُدگذاری دستورالعمل‌های پاک‌سازی ثبات برداری ۲۵۶ بیتی/۵۱۲ بیتی EVEX با دستورالعمل‌های پاک‌سازی ثبات برداری ۱۲۸ بیتی EVEX است. در حالت ۶۴ بیتی، عملوندهای مبدأ دستورالعمل‌های کُدگذاری‌شده با VEX که جابه‌جایی‌پذیر هستند نیز در صورتی که امکان استفاده از پیشوند ۲ بایتی VEX را به جای پیشوند ۳ بایتی فراهم کند، جابه‌جا می‌شوند. شکل‌های خاصی از AND و همچنین OR با یک عملوند (ثبات) یکسان که دو بار مشخص شده باشد نیز به TEST تغییر می‌یابند.

-Os شامل بهینه‌سازی‌های -O2 به علاوهٔ کُدگذاری آزمایش‌های ثبات ۱۶ بیتی، ۳۲ بیتی و ۶۴ بیتی با مقدار بی‌درنگ به‌صورت آزمایش ثبات ۸ بیتی با مقدار بی‌درنگ است. -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 است، اما این مقدار را می‌توان در زمان پیکربندی تغییر داد.
ماشین هدف دارای هم‌پردازندهٔ ممیز شناور هست (یا نیست). حالت پیش‌فرض، در نظر گرفتن یک هم‌پردازنده برای 68020، 68030 و cpu32 است. اگرچه پردازندهٔ پایهٔ 68000 با 68881 سازگار نیست، اما می‌توان ترکیبی از این دو را مشخص کرد، زیرا شبیه‌سازی دستورالعمل‌های هم‌پردازنده با پردازندهٔ اصلی امکان‌پذیر است.
ماشین هدف دارای هم‌پردازندهٔ واحد مدیریت حافظه (MMU) هست (یا نیست). حالت پیش‌فرض، در نظر گرفتن یک MMU برای 68020 و بالاتر است.

برای جزئیات دربارهٔ گزینه‌های ویژگی‌های وابسته به ماشین 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 را برای عبارت‌های diff صادر خواهد کرد.
فرض می‌کند که LD دستورالعمل‌های LDI32 را بهینه‌سازی نخواهد کرد. در نتیجه، بازنشانی‌های DIFF صادر نخواهند شد.
در صورتی که نام یک برچسب با نام یک ثبات مطابقت داشته باشد، هشدار ندهد. معمولاً برنامه‌نویسان اسمبلی مایلند این هشدار صادر شود. کامپایلرهای C ممکن است بخواهند این گزینه را غیرفعال کنند.

گزینه‌های زیر هنگامی در دسترس هستند که 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 به ترتیب متناظر با پردازنده‌های عمومی ISA از نوع 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 هستند.
تولید کد برای یک CPU خاص از MIPS.
زمان‌بندی و بهینه‌سازی برای یک CPU خاص از MIPS.
در صورتی که خواندن ثبات مقصدِ یک دستورالعمل mfhi یا mflo در دو دستورالعمل بعدی رخ دهد، باعث درج دستورالعمل‌های nop می‌شود.
در صورتی که پس از یک دستورالعمل dmult یا dmultu یک دستورالعمل load قرار گیرد، باعث درج دستورالعمل‌های nop می‌شود.
از زمان‌بندی دستورالعمل قبلی درون شکاف تأخیر (delay slot) یک دستورالعمل انشعاب که در انتهای یک حلقه کوتاه شامل شش دستورالعمل یا کمتر قرار گرفته خودداری می‌کند و همیشه به جای آن یک دستورالعمل "nop" در آنجا قرار می‌دهد. اشکال حلقه کوتاه به دلیل یک باگ سخت‌افزاری در تراشه R5900، تحت شرایط خاصی باعث می‌شود که حلقه‌ها تنها یک یا دو بار اجرا شوند.
باعث می‌شود خروجی اشکال‌زدایی با سبک stabs به جای بخش‌های استاندارد .stabs در ELF، در یک بخش .mdebug با سبک ECOFF قرار گیرد.
کنترل تولید بخش‌های ".pdr".
اندازه ثبات‌ها به‌طور معمول از ISA و ABI استنباط می‌شود، اما این پرچم‌ها گروه خاصی از ثبات‌ها را وادار می‌کنند که در همه حال با پهنای ۳۲ بیتی در نظر گرفته شوند. -mgp32 اندازه ثبات‌های همه‌منظوره و -mfp32 اندازه ثبات‌های ممیز شناور را کنترل می‌کند.
اندازه ثبات‌ها به‌طور معمول از ISA و ABI استنباط می‌شود، اما این پرچم‌ها گروه خاصی از ثبات‌ها را وادار می‌کنند که در همه حال با پهنای ۶۴ بیتی در نظر گرفته شوند. -mgp64 اندازه ثبات‌های همه‌منظوره و -mfp64 اندازه ثبات‌های ممیز شناور را کنترل می‌کند.
اندازه ثبات‌ها به‌طور معمول از ISA و ABI استنباط می‌شود، اما استفاده از این پرچم در ترکیب با -mabi=32 یک گونه از ABI را فعال می‌کند که با ثبات‌های ممیز شناور ۳۲ یا ۶۴ بیتی به‌درستی کار خواهد کرد.
فعال‌سازی استفاده از عملیات‌های ممیز شناور روی ثبات‌های فرد با دقت یگانه در صورت پشتیبانی توسط ISA. پرچم -mfpxx مستلزم -mno-odd-spreg است، در غیر این صورت پیش‌فرض -modd-spreg است.
تولید کد برای پردازنده MIPS 16. این معادل قرار دادن ".module mips16" در ابتدای فایل اسمبلی است. پرچم -no-mips16 این گزینه را غیرفعال می‌کند.
فعال‌سازی استفاده از دستورالعمل‌های MIPS16e2 در حالت MIPS16. این معادل قرار دادن ".module mips16e2" در ابتدای فایل اسمبلی است. پرچم -mno-mips16e2 این گزینه را غیرفعال می‌کند..IP -mmicromips 4
تولید کد برای پردازندهٔ microMIPS. این معادل قرار دادن ".module micromips" در ابتدای فایل اسمبلی است. -mno-micromips این گزینه را غیرفعال می‌کند. این معادل قرار دادن ".module nomicromips" در ابتدای فایل اسمبلی است.
افزونهٔ SmartMIPS را به مجموعه دستورالعمل‌های MIPS32 فعال می‌کند. این معادل قرار دادن ".module smartmips" در ابتدای فایل اسمبلی است. -mno-smartmips این گزینه را غیرفعال می‌کند.
تولید کد برای افزونهٔ کاربرد-خاص MIPS-3D (Application Specific Extension). این به اسمبلر می‌گوید که دستورالعمل‌های MIPS-3D را بپذیرد. -no-mips3d این گزینه را غیرفعال می‌کند.
تولید کد برای افزونهٔ کاربرد-خاص MDMX (Application Specific Extension). این به اسمبلر می‌گوید که دستورالعمل‌های 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 Extension. این به اسمبلر می‌گوید که دستورالعمل‌های MSA را بپذیرد. -mno-msa این گزینه را غیرفعال می‌کند.
تولید کد برای افزونهٔ MIPS eXtended Physical Address (XPA). این به اسمبلر می‌گوید که دستورالعمل‌های XPA را بپذیرد. -mno-xpa این گزینه را غیرفعال می‌کند.
تولید کد برای افزونهٔ کاربرد-خاص MT. این به اسمبلر می‌گوید که دستورالعمل‌های MT را بپذیرد. -mno-mt این گزینه را غیرفعال می‌کند.
تولید کد برای افزونهٔ کاربرد-خاص MCU. این به اسمبلر می‌گوید که دستورالعمل‌های MCU را بپذیرد. -mno-mcu این گزینه را غیرفعال می‌کند.
تولید کد برای افزونهٔ کاربرد-خاص بررسی افزونگی چرخه‌ای MIPS (معروف به 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 ساخت ثابت‌های ممیز شناور با عرض دوگانه را با بارگذاری دو نیمهٔ مقدار در دو ثبات ممیز شناور با عرض تکی که ثبات با عرض دوگانه را می‌سازند، غیرفعال می‌کند. به‌طور پیش‌فرض --construct-floats انتخاب شده است، که اجازهٔ ساخت این ثابت‌های ممیز شناور را می‌دهد.
گزینهٔ --relax-branch بازکردن (relaxation) انشعاب‌های خارج از محدوده را فعال می‌کند. به‌طور پیش‌فرض --no-relax-branch انتخاب شده است، که باعث می‌شود هر انشعاب خارج از محدوده خطایی ایجاد کند.
نادیده گرفتن بررسی‌های انشعاب برای گذارهای نامعتبر بین حالت‌های ISA. معناشناسی انشعاب‌ها امکان تغییر حالت ISA را فراهم نمی‌کند، بنابراین در اغلب موارد حالت ISA که یک انشعاب برای آن کدگذاری شده باید با حالت ISA برچسب هدف آن انشعاب یکسان باشد. از این رو GAS بررسی‌هایی را پیاده‌سازی کرده است که در اسمبل انشعاب مطابقت دو حالت ISA را تأیید می‌کند. -mignore-branch-isa این بررسی‌ها را غیرفعال می‌کند. به‌طور پیش‌فرض -mno-ignore-branch-isa انتخاب شده است، که باعث می‌شود هر انشعاب نامعتبر که نیازمند گذار بین حالت‌های ISA باشد خطا ایجاد کند..IP -mnan=encoding 4 انتخاب میان قالب‌های کدگذاری 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"
تولید خروجی داده‌های little 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> که می‌تواند 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"
فعال/غیرفعال کردن افزونهٔ 16-bit
"-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"
فعال‌سازی پشتیبانی از تمامی افزونه‌ها و دستورالعمل‌ها

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

تولید ELF32 یا XCOFF32..IP -a64 4 تولید 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.
تولید کد برای Solaris.
عدم تولید کد برای Solaris.
اگر یک دستورالعمل هم‌ترازی بیش از count عملگر nop درج کند، یک پرش (branch) در ابتدا قرار می‌دهد تا از اجرای nopها صرف‌نظر شود.

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

تولید کد مستقل از موقعیت (position-independent code).
عدم تولید کد مستقل از موقعیت (پیش‌فرض).
انتخاب ISA پایه، طبق آنچه توسط ISA یا Profiles یا Profies_ISA مشخص شده است. برای نمونه -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. اگر این گزینه و مشخصه‌های معماری تنظیم نشده باشند، اسمبلر تنظیم پیش‌فرض پیکربندی --with-arch=ISA را بررسی خواهد کرد.
انتخاب نسخهٔ مشخصات (spec) پیش‌فرض 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" نشان‌دهنده یک RVE ABI از نوع soft-float است)..IP -mrelax 4 بهره‌گیری از ساده‌سازی‌های پیونددهنده (linker relaxations) برای کاهش تعداد دستورالعمل‌های لازم جهت تشکیل آدرس‌های نماد. (پیش‌فرض)
انجام ندادن ساده‌سازی‌های پیونددهنده.
تولید محتوای پیش‌فرض برای بخش مشخصه riscv elf در صورتی که رهنمودهای .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی به کار می‌رود که پیونددهنده یا بارگذار زمان اجرا (runtime loader) برای بررسی سازگاری به آن نیاز دارند. این اطلاعات شامل رشته ISA، الزامات تراز پشته (stack alignment)، دسترسی‌های حافظه ترازنشده، و نسخه‌های major ،minor و revision از مشخصات ممتاز (privileged specification) می‌شود.
عدم تولید بخش مشخصه پیش‌فرض riscv elf در صورتی که رهنمودهای .attribute تنظیم نشده باشند.
فعال‌سازی بررسی 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).
مجاز دانستن یا ندانستن استفاده از نام‌های نمادین برای ثبات‌ها.
هشدار دادن در هر زمانی که عملوند مربوط به یک ثبات پایه (base) یا شاخص (index) مشخص شده باشد اما مقدار آن صفر ارزیابی شود.
کنترل می‌کند که آیا اسمبلر بررسی نوع نام ثبات را انجام داده و در صورت عدم تطابق با نوع ثبات عملوند، یک پیام هشدار صادر کند یا خیر. حالت پیش‌فرض (که می‌توان با استفاده از آرگومان 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 پیکربندی شده باشد.

انتخاب اندازه کلمه، ۳۲ بیتی یا ۶۴ بیتی.
انتخاب ترتیب بایت، big-endian (-EB) یا little-endian (-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" در استخرها گروه‌بندی می‌شوند. این گزینه‌ها تنها بر مقادیر مستقیمی تأثیر می‌گذارند که از طریق دستورالعمل‌های نسبی به PC با نام "L32R" ارجاع داده شده‌اند؛ مقادیر مستقیم برای دستورالعمل‌های حالت مطلق "L32R" به‌طور جداگانه مدیریت می‌شوند.
نحوه برخورد با استخرهای مقادیر مستقیم را کنترل می‌کند. حالت پیش‌فرض --no-auto-litpools است، که در غیاب --text-section-literals مقادیر مستقیم را در بخش‌های جداگانه‌ای در فایل خروجی قرار می‌دهد. این کار امکان قرار دادن استخر مقادیر مستقیم را در یک RAM/ROM داده فراهم می‌سازد. با --auto-litpools، مقادیر مستقیم در بخش text پراکنده می‌شوند تا تا حد امکان نزدیک به مراجع خود نگه داشته شوند؛ نیازی به رهنمودهای صریح ".literal_position" نیست. این امر ممکن است برای توابع بسیار بزرگ ضروری باشد، که در آن‌ها ممکن است یک استخر مقادیر مستقیم منفرد در ابتدای تابع توسط دستورالعمل‌های "L32R" در انتها قابل دسترسی نباشد. این گزینه‌ها تنها بر مقادیر مستقیمی تأثیر می‌گذارند که از طریق دستورالعمل‌های نسبی به PC با نام "L32R" ارجاع داده شده‌اند؛ مقادیر مستقیم برای دستورالعمل‌های حالت مطلق "L32R" به‌طور جداگانه مدیریت می‌شوند. هنگام استفاده هم‌زمان با --text-section-literals، گزینه --auto-litpools اولویت دارد..IP "--absolute-literals | --no-absolute-literals" 4 به اسمبلر مشخص می‌کند که آیا دستورهای "L32R" از آدرس‌دهی مطلق یا وابسته به شمارندهٔ برنامه (PC-relative) استفاده کنند یا خیر. اگر پردازنده شامل گزینهٔ آدرس‌دهی مطلق باشد، حالت پیش‌فرض استفاده از بازنشانی‌های (relocations) مطلق "L32R" است. در غیر این صورت، تنها بازنشانی‌های وابسته به شمارندهٔ برنامه برای "L32R" قابل استفاده هستند.
هم‌ترازی خودکار را برای کاهش جریمه‌های پرش شاخه‌ای به بهای افزایش اندکی در اندازه کد فعال یا غیرفعال می‌کند. این بهینه‌سازی به طور پیش‌فرض فعال است. توجه داشته باشید که اسمبلر همواره دستورهایی مانند "LOOP" را که نیازمندی‌های هم‌ترازی ثابت دارند، تراز خواهد کرد.
تبدیل دستورهای فراخوانی (call) را برای امکان‌پذیر ساختن فراخوانی‌ها در گسترهٔ بزرگ‌تری از آدرس‌ها فعال یا غیرفعال می‌کند. این گزینه باید زمانی به کار رود که مقصدهای فراخوانی ممکن است خارج از محدوده باشند. این گزینه ممکن است اندازه کد و کارایی را کاهش دهد، اما پیونددهنده (linker) معمولاً می‌تواند در صورتی که فراخوانی در نهایت درون محدوده باشد، این سربار غیرضروری را بهینه‌سازی و حذف کند. حالت پیش‌فرض --no-longcalls است.
تمام تبدیل‌های اسمبلر روی دستورهای Xtensa، شامل هر دو مورد واهلش (relaxation) و بهینه‌سازی را فعال یا غیرفعال می‌کند. حالت پیش‌فرض --transform است؛ --no-transform تنها باید در موارد نادری به کار رود که دستورها دقیقاً باید به همان صورتی باشند که در متن منبع اسمبلی مشخص شده‌اند. استفاده از --no-transform باعث می‌شود عملوندهای خارج از محدودهٔ دستور، خطا به شمار آیند.
بخش oldname را به newname تغییر نام می‌دهد. این گزینه می‌تواند چندین بار برای تغییر نام چندین بخش استفاده شود.
تبدیل دستورهای پرش (jump) را برای امکان‌پذیر ساختن پرش‌ها در گسترهٔ بزرگ‌تری از آدرس‌ها فعال یا غیرفعال می‌کند. این گزینه باید زمانی استفاده شود که مقصدهای پرش ممکن است خارج از محدوده باشند. در نبود چنین پرش‌هایی، این گزینه تأثیری بر اندازه کد یا کارایی نخواهد داشت. حالت پیش‌فرض --trampolines است.
برچسب ABI نوشته‌شده در بخش ".xtensa.info" را تعیین می‌کند. برچسب ABI نشان‌دهندهٔ ABI کد اسمبلی است. در صورت تلاش برای پیوند زدن فایل‌های شیء با برچسب‌های ABI ناسازگار، هشداری توسط پیونددهنده صادر می‌شود. ABI پیش‌فرض توسط پیکربندی هستهٔ Xtensa تعیین می‌شود.

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

@chapter Z80 Dependent Features

این گزینه پردازندهٔ مقصد را مشخص می‌کند. در صورتی که تلاشی برای اسمبل کردن دستوری انجام شود که روی پردازندهٔ مقصد اجرا نمی‌شود، اسمبلر پیامی حاوی خطا صادر خواهد کرد. نام‌های پردازنده‌های زیر شناخته می‌شوند: "z80"، "z180"، "ez80"، "gbz80"، "z80n"، "r800". علاوه بر مجموعه دستورهای پایه، می‌توان به اسمبلر دستور داد برخی نمادهای یادافزا (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" فرض می‌شود.

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

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

حق نشر (c) ۱۹۹۱-۲۰۲۵ Free Software Foundation, Inc.

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

2026-01-23 binutils-2.45.1