AS(1) GNU Development Tools AS(1)

arm-none-eabi-as, as - اسمبلر قابل حمل گنو (GNU Assembler)

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]

گزینه‌های معماری 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] [-no-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]

برنامه as گنو در واقع خانواده‌ای از اسمبلرها است. اگر از اسمبلر گنو در یک معماری استفاده می‌کنید (یا استفاده کرده‌اید)، هنگام استفاده از آن در معماری دیگر نیز با محیطی کاملاً مشابه مواجه خواهید شد. هر نسخه با سایر نسخه‌ها مشترکات زیادی دارد، از جمله قالب فایل‌های شیء (Object Files)، بیشتر دستورالعمل‌های اسمبلر (که اغلب pseudo-ops یا شبه‌دستور نامیده می‌شوند) و نحو زبان اسمبلی.

هدف اصلی 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 باشد؛ هر نوع گزینه از این دست به‌طور بازگشتی پردازش خواهد شد.

فعال‌سازی فهرست‌ها (Listings) به شیوه‌های گوناگون:
صرف‌نظر کردن از گزاره‌های شرطی نادرست (False).
صرف‌نظر کردن از دستورالعمل‌های اشکال‌زدایی.
شامل کردن اطلاعات عمومی، مانند نسخه as و گزینه‌های پاس‌داده‌شده.
شامل کردن کد منبع سطح بالا.
شامل کردن کد اسمبلی.
شامل کردن کد اسمبلی به همراه ginsn.
شامل کردن گسترش‌های ماکرو.
صرف‌نظر کردن از پردازش فرم‌ها (Forms Processing).
شامل کردن نمادها.
=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 نشان‌دهنده مقدار در مبنای هشت (اکتال) است. مقدار نماد را می‌توان در داخل فایل منبع با استفاده از شبه‌دستور ".set" بازنویسی کرد.
نمایش نحوه پیکربندی اسمبلر و سپس خروج.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر ELF باید نمادهای عمومی (Common symbols) را با نوع "STT_COMMON" تولید کند یا خیر. حالت پیش‌فرض را می‌توان با گزینه پیکربندی --enable-elf-stt-common کنترل کرد.
ارسال حتی نمادهای مطلق از پیش تعریف‌شده (محلی) به جدول نمادهای خروجی. توجه داشته باشید که این گزینه دقیقاً متضاد --strip-local-absolute نیست.
اگر اسمبلر طوری پیکربندی شده باشد که از چندین پیکربندی مقصد متفاوت پشتیبانی کند، این گزینه می‌تواند برای انتخاب حالت مورد نظر استفاده شود.
حالت «سریع»؛ صرف‌نظر کردن از پیش‌پردازش فاصله‌ها و توضیحات (با فرض این‌که منبع، خروجی مستقیم کامپایلر است).
تولید اطلاعات اشکال‌زدایی برای هر خط از کد منبع اسمبلی با استفاده از هر قالب اشکال‌زدایی که توسط مقصد ترجیح داده می‌شود. این قالب در حال حاضر شامل STABS، ECOFF یا DWARF2 است. هنگامی که قالب اشکال‌زدایی DWARF باشد، بخش‌های ".debug_info" و ".debug_line" تنها زمانی تولید می‌شوند که فایل اسمبلی خودش آن‌ها را تولید نکرده باشد.
تولید اطلاعات اشکال‌زدایی stabs برای هر خط اسمبلی. این گزینه در صورت پشتیبانی اشکال‌زدا (Debugger)، ممکن است به اشکال‌زدایی کد اسمبلی کمک کند.
تولید اطلاعات اشکال‌زدایی stabs برای هر خط اسمبلی، به همراه افزونه‌های گنو که احتمالاً فقط gdb می‌تواند آن‌ها را مدیریت کند و ممکن است باعث خرابی یا عدم خواندن برنامه توسط سایر اشکال‌زداها شود. این گزینه ممکن است به اشکال‌زدایی کد اسمبلی کمک کند. در حال حاضر تنها پسوند گنو، مکان پوشه کاری فعلی در زمان اسمبلی است.
تولید اطلاعات اشکال‌زدایی 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 Build attribute notes) در منابع ورودی موجود نباشد، آن‌ها را تولید کند یا خیر. مقدار پیش‌فرض را می‌توان با گزینه پیکربندی --enable-generate-build-notes کنترل کرد.
ایجاد بخش .sframe از دستورالعمل‌های CFI. گزینه صریح --gsframe=yes رفتاری مشابه --gsframe دارد. می‌توان با --gsframe=no از تولید آن جلوگیری کرد. حالت پیش‌فرض را می‌توان با گزینه پیکربندی --enable-default-sframe کنترل کرد. نسخه فعلی داده‌های ردگیری پشته SFrame منتشرشده، SFRAME_VERSION_3 است.
تولید اطلاعات ردگیری پشته SFrame مطابق با نسخه ۳ مشخصات.
نادیده گرفته می‌شود. برای سازگاری خط فرمان با سایر اسمبلرها پشتیبانی می‌شود.
چاپ خلاصه‌ای از گزینه‌های خط فرمان و خروج.
چاپ خلاصه‌ای از تمام گزینه‌های ویژه معماری مقصد و خروج.
عدم جلوگیری از نمایش پیام‌های اطلاعاتی.
جلوگیری از نمایش پیام‌های اطلاعاتی.
افزودن پوشه dir به فهرست جستجوی دستورالعمل‌های ".include".
عدم هشدار در مورد سرریز علامت‌دار (Signed overflow).
صدور هشدار هنگامی که جدول‌های تفاضلی برای جابه‌جایی‌های طولانی تغییر می‌کنند.
نگه‌داشتن نمادهای داخلی (در جدول نمادها). این نمادها با پیشوندهای برچسب محلی خاص سیستم شروع می‌شوند؛ معمولاً .L برای سیستم‌های ELF یا L برای سیستم‌های سنتی a.out.
تنظیم حداکثر عرض (به کلمه یا Words) ستون داده‌های خروجی برای یک فهرست اسمبلر به number.
تنظیم حداکثر عرض (به کلمه) ستون داده‌های خروجی برای خطوط ادامه‌دار در یک فهرست اسمبلر به number.
تنظیم حداکثر عرض خط کد منبع ورودی (همان‌طور که در فهرست نمایش داده می‌شود) به number بایت.
تنظیم حداکثر تعداد خطوط چاپ‌شده در فهرست برای یک خط واحد ورودی به number + 1.
کنترل نحوه مدیریت نویسه‌های چندبایتی در ورودی توسط اسمبلر. مقدار پیش‌فرض (که می‌توان با آرگومان allow آن را بازیابی کرد) مجاز دانستن چنین نویسه‌هایی بدون پیام است. استفاده از آرگومان warn باعث می‌شود اسمبلر در صورت مواجهه با هر نویسه چندبایتی پیام هشدار تولید کند. استفاده از آرگومان warn-sym-only فقط زمانی باعث ایجاد هشدار می‌شود که نمادی با نام حاوی نویسه‌های چندبایتی تعریف شده باشد (ارجاع به نمادهای تعریف‌نشده هشداری تولید نخواهد کرد).
جلوگیری از پر کردن (Padding) انتهای بخش‌های خروجی برای تراز شدن با هم‌ترازی آن بخش توسط اسمبلر. پیش‌فرض این است که بخش‌ها پد شوند، اما این کار می‌تواند فضایی را که ممکن است در مقصدهایی با محدودیت حافظه سخت مورد نیاز باشد، هدر دهد.
تعیین نام فایل شیء خروجی از as به objfile.
ادغام بخش داده‌ها (data section) در بخش متنی (text section).
نادیده گرفته می‌شود. جهت سازگاری با ابزارهایی پشتیبانی می‌شود که همین گزینه را به اسمبلر و پیونددهنده منتقل می‌کنند.
کنترل اینکه آیا بازنشانی‌های ارجاع‌دهنده به نمادهای اتصال محلی برای استفاده از نمادهای بخش به‌جای آن‌ها تنظیم می‌شوند یا خیر. با "all" (پیش‌فرض)، بازنشانی‌ها در برابر تمام نمادهای اتصال محلی واجد شرایط تبدیل می‌شوند. با "internal"، فقط بازنشانی‌ها در برابر برچسب‌های داخلی (نمادهایی که با پیشوند ".L" مطابقت دارند) تبدیل می‌شوند. با "none"، هیچ‌گونه تبدیلی انجام نمی‌شود.
این گزینه کنترل می‌کند که آیا اسمبلر باید CFI را برای ورودی‌های دست‌نویس سنتز کند یا خیر. اگر ورودی از قبل شامل برخی دستورالعمل‌های قابل سنتز CFI باشد، اسمبلر آن‌ها را نادیده گرفته و یک هشدار صادر می‌کند. توجه داشته باشید که "--scfi=experimental" برای کدهای تولیدشده توسط کامپایلر، از جمله اسمبلی درون‌خطی (Inline assembly) در نظر گرفته نشده است. این پشتیبانی آزمایشی در دست توسعه است. فقط System V AMD64 ABI پشتیبانی می‌شود.

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

رعایت توالی‌های جایگزینی در نام بخش‌ها.
صدور خطا یا هشدار برای دستورالعمل نامعتبر ELF .size.
چاپ حداکثر فضای استفاده‌شده (به بایت) و کل زمان صرف‌شده (به ثانیه) در فرآیند اسمبلی.
حذف نمادهای مطلق محلی از جدول نمادهای خروجی.
چاپ نسخه 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 این گزینه استفاده از قالب فایل شیء بزرگ را تحمیل می‌کند که امکان بیش از ۳۲۷۶۸ بخش را فراهم می‌سازد.
این گزینه پیام‌های خطای مشروح را برای gas در AArch64 فعال می‌کند. این گزینه به‌طور پیش‌فرض فعال است.
این گزینه پیام‌های خطای مشروح را در 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 و توصیف‌کننده‌های رویه فعال یا غیرفعال می‌کند. حالت پیش‌فرض، فعال‌سازی خودکار ".mdebug" در هنگام مشاهده اولین دستورالعمل stabs است.
این گزینه قرار گرفتن تمام بازنشانی‌ها را در فایل شیء تحمیل می‌کند، به جای این‌که فضا ذخیره شده و برخی از بازنشانی‌ها در زمان اسمبلی حل شوند. توجه داشته باشید که این گزینه محاسبات تمام نمادها را در فایل شیء منتشر نمی‌کند، زیرا همه محاسبات نمادها قابل نمایش نیستند. با این وجود، این گزینه می‌تواند در کاربردهای خاص مفید باشد.
بهینه‌سازی فراخوانی‌های رویه را هم در زمان اسمبلی و هم در زمان پیوند فعال یا غیرفعال می‌کند. این گزینه‌ها فقط برای مقصدهای VMS در دسترس هستند و "-replace" پیش‌فرض است. به بخش 1.4.1 کتابچه راهنمای ابزار پیونددهنده OpenVMS مراجعه کنید.
این گزینه زمانی استفاده می‌شود که کامپایلر اطلاعات اشکال‌زدایی تولید می‌کند. هنگامی که gcc از mips-tfile برای تولید اطلاعات اشکال‌زدایی برای ECOFF استفاده می‌کند، برچسب‌های محلی باید به فایل شیء منتقل شوند. در غیر این صورت این گزینه هیچ تاثیری ندارد.
یک نماد مشترک محلی بزرگتر از size در ".bss" قرار می‌گیرد، در حالی که نمادهای کوچکتر در ".sbss" قرار می‌گیرند.
-32addr
این گزینه‌ها به منظور سازگاری با گذشته نادیده گرفته می‌شوند.

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

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

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

مشخص کردن اینکه کدام گونه پردازنده ARM مقصد است.
مشخص کردن اینکه کدام گونه معماری ARM توسط مقصد استفاده می‌شود.
انتخاب معماری ممیز شناور مقصد.
انتخاب ABI ممیز شناور در حال استفاده.
فعال‌سازی رمزگشایی دستورالعمل‌های فقط Thumb.
انتخاب قرارداد فراخوانی رویه در حال استفاده.
انتخاب خروجی با ترتیب بایت بزرگ (-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 Dependent Features

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

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

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

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

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

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

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

فعال‌سازی دستورالعمل‌های ممیز شناور سخت‌افزاری.
فعال‌سازی دستورالعمل‌های چندپردازنده‌ای.
فعال‌سازی دستورالعمل‌های پردازنده کمکی (Coprocessor).
فعال‌سازی دستورالعمل واکشی پیش‌دستانه حافظه موقت (Cache prefetch).
فعال‌سازی دستورالعمل‌های امنیتی C-SKY.
فعال‌سازی دستورالعمل‌های اعتماد C-SKY.
فعال‌سازی دستورالعمل‌های DSP.
فعال‌سازی دستورالعمل‌های پیشرفته DSP.
فعال‌سازی دستورالعمل‌های برداری DSP.

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

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

گزینه‌های زیر هنگامی در دسترس هستند که as برای پردازنده H8/300 پیکربندی شده باشد: @chapter H8/300 Dependent Features

نسخه Renesas H8/300 از "as" دارای یک گزینه وابسته به ماشین است:

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

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

--32 | --x32 | --64
انتخاب اندازه کلمه (Word size)، ۳۲ بیتی یا ۶۴ بیتی. گزینه --32 نشان‌دهنده معماری اینتل 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، نویسه / به عنوان نویسه توضیح در نظر گرفته می‌شود، به این معنی که نمی‌توان از آن در عبارت‌ها استفاده کرد. گزینه --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".

علاوه بر مجموعه دستورالعمل‌های پایه، می‌توان به اسمبلر دستور داد که کدهای یادآور افزونه‌های گوناگون را بپذیرد. به عنوان مثال، "-march=i686+sse4+vmx" پردازنده i686 را با sse4 و vmx گسترش می‌دهد. افزونه‌های زیر در حال حاضر پشتیبانی می‌شوند: 8087, 287, 387, 687, "cmov", "fxsr", "mmx", "sse", "sse2", "sse3", "sse4a", "ssse3", "sse4.1", "sse4.2", "sse4", "avx", "avx2", "lahf_sahf", "monitor", "adx", "rdseed", "prfchw", "smap", "mpx", "sha", "rdpid", "ptwrite", "cet", "gfni", "vaes", "vpclmulqdq", "prefetchwt1", "clflushopt", "se1", "clwb", "movdiri", "movdir64b", "enqcmd", "serialize", "tsxldtrk", "kl", "widekl", "hreset", "avx512f", "avx512cd", "avx512er", "avx512pf", "avx512vl", "avx512bw", "avx512dq", "avx512ifma", "avx512vbmi", "avx512_4fmaps", "avx512_4vnniw", "avx512_vpopcntdq", "avx512_vbmi2", "avx512_vnni", "avx512_bitalg", "avx512_vp2intersect", "tdx", "avx512_bf16", "avx_vnni", "avx512_fp16", "avx512_bmm", "prefetchi", "avx_ifma", "avx_vnni_int8", "cmpccxadd", "wrmsrns", "msrlist", "avx_ne_convert", "rao_int", "fred", "lkgs", "avx_vnni_int16", "sha512", "sm3", "sm4", "pbndkb", "avx10.1", "avx10.1/512", "avx10.1/256", "avx10.1/128", "user_msr", "msr_imm", "apx_f", "apx_nci", "apx_ndd", "apx_nf", "apx_nci_ndd_nf", "avx10.2", "avx10.2/512", "avx10.2/256", "avx10.2/128", "movrs", "amx_int8", "amx_bf16", "amx_fp16", "amx_complex", "amx_transpose", "amx_tf32", "amx_fp8", "amx_movrs", "amx_avx512", "amx_tile", "vmx", "vmfunc", "smx", "xsave", "xsaveopt", "xsavec", "xsaves", "aes", "pclmul", "fsgsbase", "rdrnd", "f16c", "bmi2", "fma", "movbe", "ept", "lzcnt", "popcnt", "hle", "rtm", "tsx", "invpcid", "clflush", "mwaitx", "clzero", "wbnoinvd", "pconfig", "waitpkg", "uintr", "cldemote", "rdpru", "mcommit", "sev_es", "lwp", "fma4", "xop", "cx16", "syscall", "rdtscp", "3dnow", "3dnowa", "sse4a", "sse5", "snp", "invlpgb", "tlbsync", "rmpquery", "rmpread", "svme", "gmism2", "gmiccs", "padlockrng2", "padlockphe2", "padlockxmodx" و "padlock". توجه داشته باشید که این کدهای یادآور افزونه می‌توانند با پیشوند "no" همراه شوند تا قابلیت مربوطه (و هر قابلیت وابسته به آن) را باطل کنند. همچنین توجه داشته باشید که پسوندهای مجاز در "-march=avx10.<N>" محدودیت طول بردار را اعمال می‌کنند؛ یعنی علیرغم این‌که در حالت عادی گزینه‌های "فعال‌ساز" هستند، استفاده از این پسوندها تمام دستورالعمل‌هایی را که عملوندهای ثبات برداری یا ماسک عریض‌تری دارند، غیرفعال می‌کند.

هنگامی که دستورالعمل ".arch" همراه با -march استفاده شود، دستورالعمل ".arch" اولویت خواهد داشت.

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

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

این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید عملوندهای دستورالعمل خاص یا ترکیبات عملوند را بررسی کند یا خیر. به عنوان مثال، دستورالعمل‌هایی که اندازه عملوند آن‌ها از روی عملوندهای آن قابل استنباط نیست و از طریق پسوند دستورالعمل نیز مشخص نشده است. گزینه -moperand-check=none باعث می‌شود اسمبلر این بررسی‌ها را انجام ندهد. گزینه -moperand-check=warning باعث می‌شود در صورت عدم موفقیت در بررسی‌های مربوطه، اسمبلر یک هشدار صادر کند (رفتار پیش‌فرض). گزینه -moperand-check=error در صورت عدم موفقیت در بررسی‌های مربوطه، اسمبلر را وادار به صدور خطا می‌کند.
این گزینه مشخص می‌کند که اسمبلر باید دستورالعمل‌های SSE را با پیشوند VEX کدگذاری کند که نیازمند در دسترس بودن AVX است. دستورالعمل‌های SSE که از GPRهای گسترش‌یافته استفاده می‌کنند با پیشوند EVEX کدگذاری می‌شوند که نیازمند در دسترس بودن AVX512 یا AVX10 است.
این گزینه مشخص می‌کند که اسمبلر باید انتقال بردار هم‌تراز را به عنوان انتقال بردار غیرهم‌تراز کدگذاری کند.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید دستورالعمل‌های 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) را کدگذاری کند. گزینه -mvexwig=0 دستورالعمل‌های WIG VEX را با vex.w = 0 کدگذاری می‌کند (پیش‌فرض). گزینه -mvexwig=1 دستورالعمل‌های WIG EVEX را با vex.w = 1 کدگذاری می‌کند.

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

این گزینه‌ها کنترل می‌کنند که اسمبلر چگونه باید دستورالعمل‌های 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 کدگذاری می‌کند.
این گزینه کد یادآور دستورالعمل را برای تطبیق دستورالعمل‌ها مشخص می‌کند. دستورالعمل‌های ".att_mnemonic" و ".intel_mnemonic" اولویت خواهند داشت.
این گزینه نحو دستورالعمل را در هنگام پردازش دستورالعمل‌ها مشخص می‌کند. دستورالعمل‌های ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
این گزینه مشخص می‌کند که ثبات‌ها نیازی به پیشوند % ندارند. دستورالعمل‌های ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
این گزینه اسمبلر را وادار می‌کند که پیشوند BND را به تمام پرش‌ها اضافه کند، حتی اگر چنین پیشوندی صراحتاً در کد منبع مشخص نشده باشد.
در مقصد ELF، اسمبلر معمولاً بازنشانی‌های غیر PLT را در برابر مقاصد انشعاب سراسری غیرضعیف تعریف‌شده با دید پیش‌فرض بهینه‌سازی کرده و حذف می‌کند. گزینه -mshared به اسمبلر می‌گوید کدی تولید کند که ممکن است وارد یک کتابخانه اشتراکی شود که در آن تمام مقاصد انشعاب سراسری غیرضعیف با دید پیش‌فرض قابل پیش‌دستی (Preempt) باشند. کد حاصل کمی بزرگتر است. این گزینه فقط بر مدیریت دستورالعمل‌های انشعاب تاثیر می‌گذارد.
در مقصد PE/COFF، این گزینه استفاده از قالب فایل شیء بزرگ را تحمیل می‌کند که امکان داشتن بیش از ۳۲۷۶۸ بخش را فراهم می‌سازد.
این گزینه‌ها نحوه کدگذاری پیشوند 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 را طبق معمول کدگذاری می‌کند که پیش‌فرض است.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید بازنشانی‌های ریلکسیشن تولید کند یا خیر؛ 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 کنترل کرد.
این گزینه نحوه هم‌تراز کردن انشعاب‌ها با پیشوندهای بخش یا NOP را کنترل می‌کند. مقدار NUM باید توانی از ۲ باشد؛ این مقدار باید ۰ یا حداقل ۱۶ باشد. انشعاب‌ها در محدوده مرز NUM بایت هم‌تراز می‌شوند. گزینه -malign-branch-boundary=0 که پیش‌فرض است، انشعاب‌ها را هم‌تراز نمی‌کند.
این گزینه انواع انشعاب‌ها را برای هم‌تراز کردن مشخص می‌کند. مقدار TYPE ترکیبی از: jcc (که پرش‌های شرطی را هم‌تراز می‌کند)، fused (که پرش‌های شرطی ادغام‌شده را هم‌تراز می‌کند)، jmp (که پرش‌های غیرشرطی را هم‌تراز می‌کند)، call (که فراخوانی‌ها را هم‌تراز می‌کند)، ret (که بازگشت‌ها را هم‌تراز می‌کند)، و indirect (که پرش‌ها و فراخوانی‌های غیرمستقیم را هم‌تراز می‌کند) است. مقدار پیش‌فرض -malign-branch=jcc+fused+jmp است.
این گزینه حداکثر تعداد پیشوندها را روی یک دستورالعمل برای هم‌ترازی انشعاب‌ها مشخص می‌کند. مقدار NUM باید بین ۰ و ۵ باشد. مقدار پیش‌فرض ۵ است.
این گزینه پرش‌های شرطی، پرش‌های شرطی ادغام‌شده و پرش‌های غیرشرطی را در محدوده مرز ۳۲ بایتی با حداکثر ۵ پیشوند بخش روی یک دستورالعمل هم‌تراز می‌کند. این گزینه معادل موارد زیر است: -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. حالت پیش‌فرض انشعاب‌ها را هم‌تراز نمی‌کند.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید دستورالعمل lfence را پس از دستورالعمل‌های بارگذاری (load) تولید کند یا خیر. گزینه -mlfence-after-load=yes دستور lfence را تولید می‌کند. گزینه -mlfence-after-load=no دستور lfence را تولید نمی‌کند که حالت پیش‌فرض است.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید دستورالعمل 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 پس از بارگذاری ثبات مقصد انشعاب تولید می‌شود.
این گزینه‌ها کنترل می‌کنند که آیا اسمبلر باید دستورالعمل lfence را قبل از ret تولید کند یا خیر. گزینه -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_X86_ISA_1_USED و GNU_PROPERTY_X86_FEATURE_2_USED را تولید کند یا خیر. مقدار پیش‌فرض را می‌توان با گزینه پیکربندی --enable-x86-used-note کنترل کرد.
این گزینه‌ها کنترل می‌کنند که اسمبلر چگونه باید دستورالعمل‌های EVEX فقط دارای SAE را کدگذاری کند. گزینه -mevexrcig=rne بیت‌های RC دستورالعمل EVEX را با 00 کدگذاری می‌کند که پیش‌فرض است. گزینه‌های -mevexrcig=rd، -mevexrcig=ru و -mevexrcig=rz دستورالعمل‌های EVEX فقط دارای SAE را به ترتیب با بیت‌های RC معادل 01، 10 و 11 کدگذاری می‌کنند.
این گزینه مشخص می‌کند که اسمبلر در حالت ۶۴ بیتی فقط باید ISAهای AMD64 یا Intel64 را بپذیرد. پیش‌فرض پذیرش ISAهای مشترک، فقط اینتل ۶۴ و AMD64 است.
بهینه‌سازی کدگذاری دستورالعمل‌ها با اندازه دستورالعمل کوچکتر. گزینه‌های -O و -O1 دستورالعمل‌های بارگذاری ثبات ۶۴ بیتی با مقدار فوری ۶۴ بیتی را به عنوان دستورالعمل‌های بارگذاری ثبات ۳۲ بیتی با مقادیر فوری ۳۱ یا ۳۲ بیتی کدگذاری می‌کنند، دستورالعمل‌های پاکسازی ثبات ۶۴ بیتی را با دستورالعمل‌های پاکسازی ثبات ۳۲ بیتی کدگذاری می‌کنند، دستورالعمل‌های پاکسازی ثبات برداری ۲۵۶ بیتی/۵۱۲ بیتی VEX/EVEX را با دستورالعمل‌های پاکسازی ثبات برداری ۱۲۸ بیتی VEX کدگذاری می‌کنند، دستورالعمل‌های بارگذاری/ذخیره ثبات برداری ۱۲۸ بیتی/۲۵۶ بیتی EVEX را با دستورالعمل‌های بارگذاری/ذخیره ثبات برداری VEX کدگذاری می‌کنند، و دستورالعمل‌های منطقی صحیح فشرده‌شده ۱۲۸ بیتی/۲۵۶ بیتی EVEX را با دستورالعمل‌های منطقی صحیح فشرده‌شده ۱۲۸ بیتی/۲۵۶ بیتی VEX کدگذاری می‌کنند.

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

گزینه -Os شامل بهینه‌سازی‌های -O2 به علاوه کدگذاری آزمون‌های ثبات ۱۶ بیتی، ۳۲ بیتی و ۶۴ بیتی با مقدار فوری به عنوان آزمون ثبات ۸ بیتی با مقدار فوری است. گزینه -O0 این بهینه‌سازی را غیرفعال می‌کند.

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

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

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

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

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

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

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

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

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

تولید خروجی با قالب ترتیب بایت بزرگ (Big-endian).
تولید خروجی با قالب ترتیب بایت کوچک (Little-endian).

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

فرض بر این است که LD دستورالعمل‌های LDI32 را با بررسی ۱۶ بیت بالایی expression بهینه‌سازی می‌کند. اگر همه آن‌ها صفر باشند، LD دستورالعمل LDI32 را به یک LDI واحد کوتاه می‌کند. در چنین حالتی "as" بازنشانی‌های DIFF را برای عبارت‌های 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 نگارش ۲، MIPS32 نگارش ۳، MIPS32 نگارش ۵، MIPS32 نگارش ۶، MIPS64، MIPS64 نگارش ۲، MIPS64 نگارش ۳، MIPS64 نگارش ۵ و MIPS64 نگارش ۶ مطابقت دارند.
تولید کد برای یک CPU خاص MIPS.
زمان‌بندی و تنظیم کارایی برای یک CPU خاص MIPS.
در صورتی که خواندن ثبات مقصد یک دستورالعمل mfhi یا mflo در دو دستورالعمل بعدی رخ دهد، باعث درج دستورالعمل‌های nop می‌شود.
در صورتی که یک دستورالعمل dmult یا dmultu توسط یک دستورالعمل بارگذاری دنبال شود، باعث درج دستورالعمل‌های nop می‌شود.
تلاشی برای زمان‌بندی دستورالعمل قبلی در شکاف تاخیر (Delay slot) یک دستورالعمل انشعاب قرارگرفته در انتهای یک حلقه کوتاه شش دستورالعملی یا کمتر انجام نده و همیشه به جای آن یک دستورالعمل "nop" در آنجا قرار بده. این اشکال حلقه کوتاه تحت شرایط خاص باعث می‌شود حلقه‌ها به دلیل یک ایراد سخت‌افزاری در تراشه R5900 فقط یک یا دو بار اجرا شوند.
باعث می‌شود خروجی اشکال‌زدایی به سبک stabs به جای بخش‌های استاندارد ELF .stabs، وارد بخش .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 این گزینه را غیرفعال می‌کند.
تولید کد برای پردازنده microMIPS. این معادل قرار دادن ".module micromips" در ابتدای فایل اسمبلی است. گزینه -mno-micromips این گزینه را خاموش می‌کند که معادل قرار دادن ".module nomicromips" در ابتدای فایل اسمبلی است.
افزونه SmartMIPS را برای مجموعه دستورالعمل‌های MIPS32 فعال می‌کند. این معادل قرار دادن ".module smartmips" در ابتدای فایل اسمبلی است. گزینه -mno-smartmips این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه MIPS-3D. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MIPS-3D را بپذیرد. گزینه -no-mips3d این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه MDMX. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MDMX را بپذیرد. گزینه -no-mdmx این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه DSP نگارش ۱. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های DSP Release 1 را بپذیرد. گزینه -mno-dsp این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه DSP نگارش ۲. این گزینه به‌طور ضمنی -mdsp را فعال می‌کند. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های DSP Release 2 را بپذیرد. گزینه -mno-dspr2 این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه DSP نگارش ۳. این گزینه به‌طور ضمنی -mdsp و -mdspr2 را فعال می‌کند. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های DSP Release 3 را بپذیرد. گزینه -mno-dspr3 این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه معماری MIPS SIMD (یا MSA). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MSA را بپذیرد. گزینه -mno-msa این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه آدرس فیزیکی گسترش‌یافته MIPS (یا XPA). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های XPA را بپذیرد. گزینه -mno-xpa این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه چندرشته‌ای (MT). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MT را بپذیرد. گزینه -mno-mt این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه کنترل‌کننده حافظه (MCU). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MCU را بپذیرد. گزینه -mno-mcu این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه بررسی افزونگی چرخه‌ای (CRC) در MIPS. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های CRC را بپذیرد. گزینه -mno-crc این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه ابطال سراسری (GINV). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های GINV را بپذیرد. گزینه -mno-ginv این گزینه را غیرفعال می‌کند.
تولید کد برای افزونه خاص برنامه دستورالعمل‌های چندرسانه‌ای لونسون (MMI). این گزینه به اسمبلر می‌گوید که دستورالعمل‌های MMI را بپذیرد. گزینه -mno-loongson-mmi این گزینه را غیرفعال می‌کند.
تولید کد برای دستورالعمل‌های حافظه با آدرس‌دهی محتوا (CAM) لونسون. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های Loongson CAM را بپذیرد. گزینه -mno-loongson-cam این گزینه را غیرفعال می‌کند.
تولید کد برای دستورالعمل‌های افزونه‌های لونسون (EXT). این گزینه به اسمبلر می‌گوید دستورالعمل‌های Loongson EXT را بپذیرد. گزینه -mno-loongson-ext این گزینه را غیرفعال می‌کند.
تولید کد برای دستورالعمل‌های افزونه‌های لونسون نگارش ۲ (EXT2). این گزینه به‌طور ضمنی -mloongson-ext را فعال می‌کند. این گزینه به اسمبلر می‌گوید که دستورالعمل‌های Loongson EXT2 را بپذیرد. گزینه -mno-loongson-ext2 این گزینه را غیرفعال می‌کند.
هنگام تولید کد برای پردازنده microMIPS فقط از کدگذاری‌های دستورالعمل ۳۲ بیتی استفاده کن. این گزینه استفاده از هرگونه دستورالعمل ۱۶ بیتی را مهار می‌کند. این معادل قرار دادن ".set insn32" در ابتدای فایل اسمبلی است. گزینه -mno-insn32 این گزینه را غیرفعال می‌کند که معادل قرار دادن ".set noinsn32" در ابتدای فایل اسمبلی است. به‌طور پیش‌فرض -mno-insn32 انتخاب شده است که امکان استفاده از همه دستورالعمل‌ها را فراهم می‌آورد.
گزینه --no-construct-floats ساخت ثوابت ممیز شناور با عرض دوگانه را با بارگذاری دو نیمه مقدار در دو ثبات ممیز شناور با عرض تکی که ثبات با عرض دوگانه را تشکیل می‌دهند، غیرفعال می‌کند. به‌طور پیش‌فرض --construct-floats انتخاب شده است که ساخت این ثوابت ممیز شناور را ممکن می‌سازد.
گزینه --relax-branch بهینه‌سازی ریلکسیشن انشعاب‌های خارج از محدوده را فعال می‌کند. به‌طور پیش‌فرض --no-relax-branch انتخاب شده است که باعث می‌شود هر انشعاب خارج از محدوده منجر به تولید خطا شود.
نادیده گرفتن بررسی‌های انشعاب برای انتقال نامعتبر بین حالت‌های 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 به ترتیب خروجی‌های با ترتیب بایت کوچک و بزرگ را انتخاب می‌کنند، اما اکنون به جای آن‌ها گزینه‌های -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"
بهینه‌سازی برای کارایی (Performance).
"-Os"
بهینه‌سازی برای اندازه فضا (Space).
"-EL"
تولید خروجی داده با ترتیب بایت کوچک (Little-endian).
"-EB"
تولید خروجی داده با ترتیب بایت بزرگ (Big-endian).
"-mpic"
تولید کد مستقل از موقعیت (PIC).
"-mno-fp-as-gp-relax"
جلوگیری از ریلکسیشن fp-as-gp برای این فایل.
"-mb2bb-relax"
بهینه‌سازی انشعاب پشت سر هم (Back-to-back branch optimization).
"-mno-all-relax"
جلوگیری از تمام ریلکسیشن‌ها برای این فایل.
"-march=<arch name>";
اسمبل کردن برای معماری <arch name> که می‌تواند v3، v3j، v3m، v3f، v3s، v2، v2j، v2f یا v2s باشد.
"-mbaseline=<baseline>"
اسمبل کردن برای خط پایه <baseline> که می‌تواند v2، v3 یا v3m باشد.
"-mfpu-freg=FREG"
مشخص کردن پیکربندی FPU.
"0 8 SP / 4 DP registers"
"1 16 SP / 8 DP registers"
"2 32 SP / 16 DP registers"
"3 32 SP / 32 DP registers"
"-mabi=abi"
مشخص کردن نسخه abi که می‌تواند v1، v2، v2fp یا v2fpp باشد.
"-m[no-]mac"
فعال/غیرفعال‌سازی پشتیبانی از دستورالعمل‌های ضرب (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"
فعال/غیرفعال‌سازی افزونه کارایی ۲.
"-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"
فعال/غیرفعال‌سازی دستورالعمل‌های FPU ضرب و جمع ادغام‌شده (Fused-multiply-add).
"-mall-ext"
فعال‌سازی تمام افزونه‌ها و پشتیبانی از دستورالعمل‌ها.

گزینه‌های زیر هنگامی در دسترس هستند که 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، شامل دستورالعمل‌های پل ارتباطی.
تولید کد برای BookE ۳۲ بیتی.
تولید کد برای معماری A2.
تولید کد برای پردازنده‌های دارای دستورالعمل‌های AltiVec.
تولید کد برای دستورالعمل‌های Freescale PowerPC VLE.
تولید کد برای پردازنده‌های دارای دستورالعمل‌های برداری-اسکالر (VSX).
تولید کد برای پردازنده‌های دارای دستورالعمل‌های حافظه تراکنشی سخت‌افزاری.
تولید کد برای معماری 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 درج کند، یک انشعاب در ابتدا قرار بده تا از اجرای 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" برای نشان دادن قرارداد فراخوانی ممیز شناور تک‌دقتی، دو‌دقتی یا چهار‌دقتی، یا بدون پسوند یا با "e" برای نشان دادن قرارداد فراخوانی ممیز شناور نرم‌افزاری دنبال می‌شود ("e" نشان‌دهنده یک ABI نوع soft-float RVE است).
بهره‌گیری از بهینه‌سازی ریلکسیشن پیونددهنده برای کاهش تعداد دستورالعمل‌های لازم جهت ملموس‌سازی آدرس‌های نمادها (پیش‌فرض).
عدم انجام ریلکسیشن‌های پیونددهنده.
تولید محتویات پیش‌فرض برای بخش ویژگی‌های riscv elf در صورتی که دستورالعمل‌های .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی استفاده می‌شود که یک پیونددهنده یا بارگذار زمان اجرا برای بررسی سازگاری به آن نیاز دارند. این اطلاعات شامل رشته ISA، الزامات هم‌ترازی پشته، دسترسی‌های غیرهم‌تراز به حافظه و شماره نسخه‌های اصلی، فرعی و بازبینی مشخصات دسترسی ممتاز است.
عدم تولید بخش پیش‌فرض ویژگی‌های riscv elf در صورتی که دستورالعمل‌های .attribute تنظیم نشده باشند.
فعال‌سازی بررسی CSR برای CSRهای وابسته به ISA و CSRهای فقط‌خواندنی. ثبات‌های CSR وابسته به ISA تنها زمانی معتبر هستند که ISA خاص تنظیم شده باشد. ثبات‌های CSR فقط‌خواندنی را نمی‌توان با دستورالعمل‌های CSR نوشت.
عدم انجام بررسی CSR.
تولید کد برای ماشینی با ترتیب بایت کوچک (Little-endian).
تولید کد برای ماشینی با ترتیب بایت بزرگ (Big-endian).

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

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

انتخاب اندازه کلمه، ۳۱/۳۲ بیتی یا ۶۴ بیتی.
انتخاب حالت معماری؛ یا معماری سازمانی سیستم (esa) یا حالت معماری زد (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" را با مقدار ۱ تولید کند که نشان می‌دهد کد از آدرس‌دهی DSBT استفاده می‌کند. گزینه -mno-dsbt (حالت پیش‌فرض) باعث می‌شود این برچسب مقدار ۰ داشته باشد که نشان می‌دهد کد از آدرس‌دهی DSBT استفاده نمی‌کند. اگر اشیاء با انواع مختلف (DSBT و غیر DSBT) با هم پیوند داده شوند، پیونددهنده یک هشدار صادر می‌کند.
گزینه -mpid= باعث می‌شود اسمبلر ویژگی "Tag_ABI_PID" را با مقداری که نشان‌دهنده شکل آدرس‌دهی داده‌های استفاده‌شده توسط کد است تولید کند. گزینه -mpid=no (پیش‌فرض) نشان‌دهنده آدرس‌دهی داده‌های وابسته به موقعیت است، -mpid=near نشان‌دهنده آدرس‌دهی مستقل از موقعیت با دسترسی‌های GOT با استفاده از آدرس‌دهی DP نزدیک است، و -mpid=far نشان‌دهنده آدرس‌دهی مستقل از موقعیت با دسترسی‌های GOT با استفاده از آدرس‌دهی DP دور است. اگر اشیاء ساخته‌شده با تنظیمات مختلف این گزینه به هم پیوند داده شوند، پیونددهنده یک هشدار صادر می‌کند.
گزینه -mpic باعث می‌شود اسمبلر ویژگی "Tag_ABI_PIC" را با مقدار ۱ تولید کند که نشان می‌دهد کد از آدرس‌دهی کد مستقل از موقعیت استفاده می‌کند. گزینه "-mno-pic" (پیش‌فرض) باعث می‌شود برچسب مقدار ۰ داشته باشد که نشان‌دهنده آدرس‌دهی کد وابسته به موقعیت است. اگر اشیاء با انواع مختلف (وابسته به موقعیت و مستقل از موقعیت) با هم پیوند داده شوند، پیونددهنده یک هشدار صادر می‌کند.
تولید کد برای ترتیب بایت مشخص‌شده. حالت پیش‌فرض، ترتیب بایت کوچک (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، مقادیر ثابت در بخش متنی پراکنده می‌شوند تا تا حد امکان نزدیک به مراجع خود نگه داشته شوند. این ممکن است برای فایل‌های اسمبلی بزرگ ضروری باشد، جایی که مقادیر ثابت در غیر این صورت خارج از محدوده دستورالعمل‌های "L32R" در بخش متن قرار می‌گیرند. مقادیر ثابت در مخازنی گروه‌بندی می‌شوند که به دنبال دستورالعمل‌های ".literal_position" یا قبل از دستورالعمل‌های "ENTRY" می‌آیند. این گزینه‌ها فقط بر مقادیر ثابت ارجاع‌شده از طریق دستورالعمل‌های "L32R" نسبی به PC تأثیر می‌گذارند؛ مقادیر ثابت برای دستورالعمل‌های حالت مطلق "L32R" جداگانه مدیریت می‌شوند.
کنترل مدیریت مخزن مقادیر ثابت. حالت پیش‌فرض --no-auto-litpools است که در صورت نبودن --text-section-literals مقادیر ثابت را در بخش‌های جداگانه در فایل خروجی قرار می‌دهد. این کار امکان قرارگیری مخزن مقادیر ثابت را در RAM/ROM داده فراهم می‌کند. با --auto-litpools، مقادیر ثابت در بخش متن پراکنده می‌شوند تا تا حد امکان نزدیک به مراجع خود نگه داشته شوند؛ دستورالعمل‌های صریح ".literal_position" مورد نیاز نیستند. این ممکن است برای توابع بسیار بزرگ لازم باشد، جایی که ممکن است یک مخزن مقادیر ثابت منفرد در ابتدای تابع توسط دستورالعمل‌های "L32R" در انتهای آن قابل دسترسی نباشد. این گزینه‌ها فقط بر مقادیر ثابتی که از طریق دستورالعمل‌های نسبی به PC نوع "L32R" ارجاع داده شده‌اند تأثیر می‌گذارند؛ مقادیر ثابت برای دستورالعمل‌های حالت مطلق "L32R" جداگانه مدیریت می‌شوند. هنگام استفاده همراه با --text-section-literals، گزینه --auto-litpools اولویت دارد.
به اسمبلر نشان می‌دهد که آیا دستورالعمل‌های "L32R" از آدرس‌دهی مطلق استفاده می‌کنند یا نسبی به PC. اگر پردازنده شامل گزینه آدرس‌دهی مطلق باشد، پیش‌فرض استفاده از بازنشانی‌های مطلق "L32R" است. در غیر این صورت، تنها می‌توان از بازنشانی‌های "L32R" نسبی به PC استفاده کرد.
فعال یا غیرفعال‌سازی هم‌ترازی خودکار برای کاهش جریمه‌های انشعاب با فدا کردن اندکی از اندازه کد. این بهینه‌سازی به‌طور پیش‌فرض فعال است. توجه داشته باشید که اسمبلر همیشه دستورالعمل‌هایی مانند "LOOP" را که الزامات هم‌ترازی ثابت دارند، هم‌تراز می‌کند.
فعال یا غیرفعال‌سازی تبدیل دستورالعمل‌های فراخوانی برای امکان‌پذیر ساختن فراخوانی‌ها در محدوده بزرگتری از آدرس‌ها. این گزینه باید زمانی استفاده شود که مقاصد فراخوانی ممکن است خارج از محدوده باشند. این گزینه ممکن است اندازه کد و عملکرد را کاهش دهد، اما پیونددهنده معمولاً می‌تواند زمانی که یک فراخوانی در محدوده قرار می‌گیرد، سربار غیرضروری را حذف کند. حالت پیش‌فرض --no-longcalls است.
فعال یا غیرفعال کردن تمام تبدیلات اسمبلر روی دستورالعمل‌های Xtensa، شامل ریلکسیشن و بهینه‌سازی. پیش‌فرض --transform است؛ --no-transform تنها باید در موارد نادری استفاده شود که دستورالعمل‌ها باید دقیقاً همان‌طور که در منبع اسمبلی مشخص شده‌اند، باشند. استفاده از --no-transform باعث می‌شود عملوندهای دستورالعمل خارج از محدوده به عنوان خطا تلقی شوند.
تغییر نام بخش oldname به newname. این گزینه را می‌توان چندین بار برای تغییر نام چندین بخش استفاده کرد.
فعال یا غیرفعال کردن تبدیل دستورالعمل‌های پرش برای مجاز کردن پرش‌ها در محدوده بزرگتری از آدرس‌ها. این گزینه باید زمانی استفاده شود که مقاصد پرش ممکن است خارج از محدوده باشند. در غیاب چنین پرش‌هایی این گزینه تاثیری بر اندازه کد یا کارایی ندارد. حالت پیش‌فرض --trampolines است.
انتخاب برچسب ABI نوشته‌شده در بخش ".xtensa.info". برچسب ABI، نشان‌دهنده ABI کد اسمبلی است. در صورت تلاش برای پیوند فایل‌های شیء با برچسب‌های ABI ناسازگار، پیونددهنده یک هشدار صادر می‌کند. ABI پیش‌فرض بر اساس پیکربندی هسته Xtensa انتخاب می‌شود.

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

@chapter Z80 Dependent Features

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

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

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

کپی‌رایت © 1991-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.)

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

2026-07-30 binutils-2.47