| AS(1) | GNU Development Tools | AS(1) |
نام (NAME)
as - اسمبلر چندسکویی گنو
خلاصه دستور (SYNOPSIS)
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]
[--|فایلها
...]
معماریهای هدف (TARGET)
گزینههای
معماری 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] [-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]
توضیحات (DESCRIPTION)
دستور as گنو در واقع خانوادهای از اسمبلرها است. اگر از اسمبلر گنو روی یک معماری استفاده میکنید (یا قبلاً استفاده کردهاید)، هنگام استفاده از آن روی معماری دیگر محیطی کاملاً مشابه خواهید یافت. هر نسخه اشتراکات فراوانی با سایر نسخهها دارد، از جمله قالبهای فایل شیء (object file)، اکثر دستورالعملهای راهنمای اسمبلر (که اغلب pseudo-ops نامیده میشوند) و نحو اسمبلر.
هدف اصلی as اسمبل کردن خروجی کامپایلر C گنو ("gcc") برای استفاده توسط پیونددهنده "ld" است. با این حال، ما تلاش کردهایم کاری کنیم که as هر آنچه را که سایر اسمبلرهای همان ماشین اسمبل میکنند به درستی اسمبل کند. هرگونه استثنا به صراحت مستند شده است. این بدان معنا نیست که as همواره دقیقاً از همان نحو اسمبلر دیگری برای همان معماری استفاده میکند؛ برای مثال، ما چندین نگارش ناسازگار از نحو زبان اسمبلی 680x0 را میشناسیم.
هر بار که شما as را اجرا میکنید، دقیقاً یک برنامه منبع را اسمبل میکند. برنامه منبع از یک یا چند فایل تشکیل شده است (ورودی استاندارد نیز یک فایل به شمار میرود).
شما یک خط فرمان با صفر یا چند نام فایل ورودی به as میدهید. فایلهای ورودی (از نام فایل سمت چپ به راست) خوانده میشوند. هر آرگومان خط فرمان (در هر موقعیتی) که معنای خاصی نداشته باشد به عنوان نام فایل ورودی در نظر گرفته میشود.
اگر هیچ نام فایلی به as ندهید، تلاش میکند یک فایل ورودی را از ورودی استاندارد as (که معمولاً ترمینال شما است) بخواند. ممکن است برای اعلام اینکه برنامه دیگری برای اسمبل وجود ندارد، نیاز به فشردن ctl-D داشته باشید.
اگر نیاز دارید صراحتاً فایل ورودی استاندارد را در خط فرمان خود نام ببرید، از -- استفاده کنید.
اگر منبع خالی باشد، as یک فایل شیء کوچک و خالی تولید میکند.
دستور as ممکن است پیامهای هشدار و خطا را در فایل خطای استاندارد (معمولاً ترمینال شما) بنویسد. هنگامی که یک کامپایلر as را به صورت خودکار اجرا میکند این اتفاق نباید رخ دهد. هشدارها فرضی را گزارش میدهند که به as اجازه داده است اسمبل کردن برنامهای دارای ایراد را ادامه دهد؛ خطاها مشکلی جدی را گزارش میکنند که فرآیند اسمبل را متوقف میسازد.
اگر as را از طریق کامپایلر C گنو فراخوانی میکنید، میتوانید از گزینه -Wa برای فرستادن آرگومانها به اسمبلر استفاده کنید. آرگومانهای اسمبلر باید با کاما از یکدیگر (و از -Wa) جدا شوند. برای نمونه:
gcc -c -g -O -Wa,-alh,-L file.c
این فرمان دو گزینه را به اسمبلر ارسال میکند: -alh (تولید یک فهرست در خروجی استاندارد به همراه کد منبع سطحبالا و اسمبلی) و -L (نگهداری نمادهای محلی در جدول نمادها).
معمولاً نیازی به استفاده از این سازوکار -Wa ندارید، چرا که بسیاری از گزینههای خط فرمان کامپایلر به طور خودکار توسط کامپایلر به اسمبلر منتقل میشوند. (میتوانید درایور کامپایلر گنو را با گزینه -v اجرا کنید تا دقیقاً ببینید چه گزینههایی را به هر مرحله کامپایل، از جمله اسمبلر، ارسال میکند.)
گزینهها (OPTIONS)
- @file
- خواندن
گزینههای
خط فرمان از
file.
گزینههای
خواندهشده
به جای
گزینه اصلی
@file قرار
میگیرند.
اگر file وجود
نداشته
باشد یا
نتوان آن را
خواند، با
گزینه به
صورت لفظی
برخورد
میشود و
حذف نخواهد
شد.
گزینهها در file با نویسههای فاصله خالی (whitespace) از یکدیگر جدا میشوند. یک نویسه فاصله خالی میتواند با قرار گرفتن کل گزینه در میان علامتهای نقلقول تکی یا جفتی گنجانده شود. هر نویسهای (از جمله بکاسلش) را میتوان با درج یک پیشوند بکاسلش قبل از آن درج کرد. خود file میتواند شامل گزینههای @file اضافی باشد؛ هر نوع گزینه از این دست به صورت بازگشتی پردازش خواهد شد.
- -a[cdghilmns]
- فعال کردن تولید فهرستها، به روشهای گوناگون:
- -ac
- صرفنظر کردن از شرطهای نادرست
- -ad
- صرفنظر کردن از دستورالعملهای اشکالزدایی
- -ag
- گنجاندن اطلاعات عمومی، مانند نگارش as و گزینههای فرستادهشده
- -ah
- گنجاندن کد منبع سطحبالا
- -al
- گنجاندن کد اسمبلی
- -ali
- گنجاندن کد اسمبلی به همراه ginsn
- -am
- گنجاندن بسطهای ماکرو
- -an
- صرفنظر کردن از پردازش فرمها
- -as
- گنجاندن نمادها
- =file
- تنظیم نام فایل فهرست
میتوانید این گزینهها را ترکیب کنید؛ برای نمونه، از -aln برای فهرست اسمبلی بدون پردازش فرمها استفاده کنید. گزینه =file، در صورت استفاده، باید آخرین گزینه باشد. به تنهایی، -a به صورت پیشفرض برابر با -ahls است.
- --alternate
- شروع در حالت ماکروی جایگزین (alternate macro mode).
- --compress-debug-sections
- فشردهسازی بخشهای اشکالزدایی DWARF با استفاده از zlib و فلگ SHF_COMPRESSED از ELF ABI. فایل شیء حاصل ممکن است با پیونددهندهها و ابزارهای قدیمیتر فایل شیء سازگار نباشد. توجه داشته باشید اگر فشردهسازی باعث بزرگتر شدن یک بخش شود، فشرده نخواهد شد.
- --compress-debug-sections=none
- --compress-debug-sections=zlib
- --compress-debug-sections=zlib-gnu
- --compress-debug-sections=zlib-gabi
- --compress-debug-sections=zstd
- این گزینهها نحوه فشردهسازی بخشهای اشکالزدایی DWARF را کنترل میکنند. گزینه --compress-debug-sections=none معادل --nocompress-debug-sections است. گزینههای --compress-debug-sections=zlib و --compress-debug-sections=zlib-gabi معادل --compress-debug-sections هستند. گزینه --compress-debug-sections=zlib-gnu بخشهای اشکالزدایی DWARF را با استفاده از قالب منسوخشده zlib-gnu فشرده میکند. نام بخشهای اشکالزدایی تغییر مییابد تا با .zdebug آغاز شوند. گزینه --compress-debug-sections=zstd بخشهای اشکالزدایی DWARF را با استفاده از zstd فشرده میکند. توجه: اگر فشردهسازی در عمل باعث بزرگتر شدن یک بخش شود، فشرده نشده و تغییر نام نیز نمییابد.
- --nocompress-debug-sections
- عدم فشردهسازی بخشهای اشکالزدایی DWARF. این گزینه معمولاً حالت پیشفرض برای تمام هدفها به جز x86/x86_64 است، اما میتوان از گزینهای در زمان پیکربندی برای نادیده گرفتن آن استفاده کرد.
- -D
- فعالسازی اشکالزدایی در بکاندهای وابسته به هدف، در صورت پشتیبانی. در غیر این صورت نادیده گرفته میشود. حتی در صورت نادیده گرفته شدن، این گزینه برای سازگاری اسکریپتها با فراخوانی سایر اسمبلرها پذیرفته میشود.
- --debug-prefix-map old=new
- هنگام اسمبل کردن فایلها در پوشه old، اطلاعات اشکالزدایی را به گونهای ثبت کن که توصیفکننده آنها در new باشد.
- --defsym sym=value
- تعریف نماد sym با مقدار value پیش از اسمبل فایل ورودی. مقدار value باید یک ثابت عدد صحیح باشد. همانند زبان C، پیشوند 0x نشاندهنده یک مقدار هگزادسیمال، و پیشوند 0 نشاندهنده یک مقدار اکتال است. مقدار این نماد میتواند درون یک فایل منبع با استفاده از شبهدستور ".set" بازنویسی شود.
- --dump-config
- نمایش چگونگی پیکربندی اسمبلر و سپس خروج.
- --elf-stt-common=no
- --elf-stt-common=yes
- این گزینهها کنترل میکنند که آیا اسمبلر ELF باید نمادهای اشتراکی (common) را با نوع "STT_COMMON" تولید کند یا خیر. حالت پیشفرض را میتوان با گزینه پیکربندی --enable-elf-stt-common کنترل کرد.
- --emit-local-absolute
- ارسال حتی نمادهای مطلق از پیشتعریفشده (محلی) به جدول نمادهای خروجی. توجه داشته باشید که این گزینه دقیقاً برعکس --strip-local-absolute نیست.
- --emulation=name
- اگر اسمبلر برای پشتیبانی از چندین پیکربندی گوناگون هدف پیکربندی شده باشد، میتوان از این گزینه برای انتخاب فرم مورد نظر استفاده کرد.
- -f
- «سریع»---صرفنظر کردن از پیشپردازش فاصلههای خالی و یادداشتها (با فرض اینکه منبع، خروجی کامپایلر است).
- -g
- --gen-debug
- تولید اطلاعات اشکالزدایی برای هر خط از کد منبع اسمبلر با استفاده از قالب اشکالزدایی ترجیح دادهشده توسط هدف. این در حال حاضر به معنای STABS، ECOFF یا DWARF2 است. زمانی که قالب اشکالزدایی DWARF باشد، بخش ".debug_info" و ".debug_line" تنها زمانی تولید میشود که خود فایل اسمبلی آن را تولید نکرده باشد.
- --gstabs
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسمبلر. در صورتی که اشکالزدا بتواند آن را پردازش کند، این امر ممکن است به اشکالزدایی کد اسمبلی کمک کند.
- --gstabs+
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسمبلر، همراه با پسوندهای گنو که احتمالاً تنها gdb میتواند آنها را مدیریت کند و ممکن است سایر اشکالزداها را با خرابی روبرو سازد یا از خواندن برنامه شما خودداری کنند. این ممکن است به اشکالزدایی کد اسمبلی کمک کند. در حال حاضر تنها پسوند گنو، موقعیت دایرکتوری کاری جاری در زمان اسمبل است.
- --gdwarf-2
- تولید اطلاعات اشکالزدایی DWARF2 برای هر خط اسمبلر. این ممکن است به اشکالزدایی کد اسمبلی کمک کند (اگر اشکالزدا بتواند آن را پردازش کند). توجه---این گزینه تنها توسط برخی از هدفها پشتیبانی میشود و نه همه آنها.
- --gdwarf-3
- این گزینه همانند گزینه --gdwarf-2 است، به جز اینکه امکان تولید اطلاعات اشکالزدایی اضافی مطابق با نگارش ۳ از مشخصات DWARF را فراهم میسازد. توجه: فعالسازی این گزینه تولید اطلاعات اضافی را تضمین نمیکند و تصمیمگیری برای آن بر عهده هر هدف است.
- --gdwarf-4
- این گزینه همانند گزینه --gdwarf-2 است، به جز اینکه امکان تولید اطلاعات اشکالزدایی اضافی مطابق با نگارش ۴ از مشخصات DWARF را فراهم میسازد. توجه: فعالسازی این گزینه تولید اطلاعات اضافی را تضمین نمیکند و تصمیمگیری برای آن بر عهده هر هدف است.
- --gdwarf-5
- این گزینه همانند گزینه --gdwarf-2 است، به جز اینکه امکان تولید اطلاعات اشکالزدایی اضافی مطابق با نگارش ۵ از مشخصات DWARF را فراهم میسازد. توجه: فعالسازی این گزینه تولید اطلاعات اضافی را تضمین نمیکند و تصمیمگیری برای آن بر عهده هر هدف است.
- --gdwarf-sections
- به جای ایجاد یک بخش .debug_line، مجموعهای از بخشهای .debug_line.foo را ایجاد میکند که در آن foo نام بخش کد مربوطه است. برای نمونه، یک بخش کد به نام .text.func اطلاعات شماره خط dwarf خود را در بخشی به نام .debug_line.text.func قرار خواهد داد. اگر بخش کد صرفاً .text نامیده شده باشد، بخش خط اشکالزدایی همچنان فقط .debug_line بدون هیچ پسوندی نامیده خواهد شد.
- --gdwarf-cie-version=version
- کنترل اینکه کدام نگارش از مدخلهای اطلاعات مشترک DWARF (به اختصار CIE) تولید شوند. هنگامی که این فلگ مشخص نشده باشد، پیشفرض نگارش ۱ است، هرچند برخی هدفها میتوانند این پیشفرض را تغییر دهند. سایر مقادیر ممکن برای version برابر ۳ یا ۴ هستند.
- --generate-missing-build-notes=yes
- --generate-missing-build-notes=no
- این گزینهها کنترل میکنند که آیا اسمبلر ELF در صورت عدم وجود یادداشتهای ویژگی ساخت گنو در منابع ورودی، باید آنها را تولید کند یا خیر. پیشفرض را میتوان با گزینه پیکربندی --enable-generate-build-notes کنترل کرد.
- --gsframe
- --gsframe
- --gsframe=no
- --gsframe=yes
- ایجاد بخش .sframe از دستورالعملهای CFI. گزینه صریح --gsframe=yes رفتاری مشابه --gsframe دارد. تولید این بخش میتواند با --gsframe=no متوقف شود.
- --hash-size N
- نادیده گرفته میشود. برای سازگاری خط فرمان با سایر اسمبلرها پشتیبانی میشود.
- --help
- چاپ خلاصهای از گزینههای خط فرمان و خروج.
- --target-help
- چاپ خلاصهای از تمام گزینههای مختص هدف و خروج.
- --info
- پیامهای اطلاعاتی را پنهان نکن.
- --no-info
- پنهانسازی پیامهای اطلاعاتی.
- -I dir
- افزودن دایرکتوری dir به فهرست جستجو برای دستورالعملهای ".include".
- -J
- درباره سرریز علامتدار هشدار نده.
- -K
- هنگام تغییر جداول تفاضلی برای جابجاییهای طولانی، هشدار صادر کن.
- -L
- --keep-locals
- نگهداری نمادهای محلی (در جدول نمادها). این نمادها با پیشوندهای برچسب محلی مختص سیستم آغاز میشوند، معمولاً .L برای سیستمهای ELF یا L برای سیستمهای سنتی a.out.
- --listing-lhs-width=number
- تنظیم بیشینه پهنا (بر حسب کلمه) ستون دادههای خروجی برای یک فهرست اسمبلر روی number.
- --listing-lhs-width2=number
- تنظیم بیشینه پهنا (بر حسب کلمه) ستون دادههای خروجی برای خطوط ادامه در فهرست اسمبلر روی number.
- --listing-rhs-width=number
- تنظیم بیشینه پهنای خط منبع ورودی، همانطور که در یک فهرست نمایش داده میشود، روی number بایت.
- --listing-cont-lines=number
- تنظیم بیشینه تعداد خطوط چاپشده در فهرست برای یک خط واحد ورودی روی number + 1.
- --multibyte-handling=allow
- --multibyte-handling=warn
- --multibyte-handling=warn-sym-only
- --multibyte-handling=warn_sym_only
- کنترل نحوه برخورد اسمبلر با نویسههای چندبایتی در ورودی. حالت پیشفرض (که میتواند با استفاده از آرگومان allow بازیابی شود) مجاز دانستن چنین نویسههایی بدون خطا است. استفاده از آرگومان warn باعث میشود اسمبلر در هنگام برخورد با هر نویسه چندبایتی یک پیام هشدار تولید کند. استفاده از آرگومان warn-sym-only تنها زمانی هشدار تولید میکند که یک نماد با نامی حاوی نویسههای چندبایتی تعریف شود (ارجاع به نمادهای تعریفنشده هشدار تولید نخواهد کرد).
- --no-pad-sections
- متوقف کردن پر کردن انتهای بخشهای خروجی تا حد تراز آن بخش توسط اسمبلر. پیشفرض پر کردن بخشها است، اما این کار میتواند فضایی را که ممکن است در هدفهای دارای محدودیت شدید حافظه مورد نیاز باشد هدر دهد.
- -o objfile
- نامگذاری فایل شیء خروجی از as به objfile.
- -R
- ادغام بخش data در بخش text.
- --reduce-memory-overheads
- نادیده گرفته میشود. برای سازگاری با ابزارهایی که همین گزینه را به هر دو ابزار اسمبلر و پیونددهنده ارسال میکنند پشتیبانی میشود.
- --scfi=experimental
- این گزینه
کنترل
میکند که
آیا اسمبلر
باید CFI را
برای ورودی
دستنویس
سنتز کند یا
خیر. اگر
ورودی از
قبل شامل
برخی
دستورالعملهای
CFI قابل سنتز
باشد،
اسمبلر
آنها را
نادیده
گرفته و یک
هشدار صادر
میکند.
توجه داشته
باشید که
"--scfi=experimental"
برای کدهای
تولیدشده
توسط
کامپایلر،
از جمله
اسمبلی
درونخطی
در نظر
گرفته نشده
است. این
پشتیبانی
آزمایشی در
حال توسعه
است. تنها System V AMD64
ABI پشتیبانی
میشود.
هر تابع ورودی در اسمبلی باید با دستورالعمل ".type" آغاز شود و در حالت ایدهآل باید با استفاده از یک دستورالعمل ".size" بسته شود. هنگام استفاده از SCFI، هر دستورالعمل ".type" اسمبلر GAS را برمیانگیزد تا یک FDE جدید (مدخل توصیفگر تابع) را شروع کند. این بدان معناست که با هر دستورالعمل ".type"، یک بلوک قبلی از دستورالعملها، در صورت وجود، به عنوان یک FDE متمایز نهایی میشود.
- --sectname-subst
- رعایت توالیهای جایگزینی در نامهای بخشها.
- --size-check=error
- --size-check=warning
- صدور خطا یا هشدار برای دستورالعمل نامعتبر .size در ELF.
- --statistics
- چاپ حداکثر فضای استفادهشده (به بایت) و زمان کل (به ثانیه) در فرآیند اسمبل.
- --strip-local-absolute
- حذف نمادهای مطلق محلی از جدول نمادهای خروجی.
- -v
- --verbose
- چاپ نگارش as.
- --version
- -version
- چاپ نگارش as و خروج.
- -W
- --no-warn
- پنهانسازی پیامهای هشدار.
- --warn
- پیامهای هشدار را پنهان نکن و آنها را به عنوان خطا تلقی ننما.
- --fatal-warnings
- در نظر گرفتن هشدارها به عنوان خطا.
- -w
- نادیده گرفته میشود.
- -x
- نادیده گرفته میشود.
- -Z
- تولید یک فایل شیء حتی پس از بروز خطاها.
- -- | files ...
- ورودی استاندارد، یا فایلهای منبع برای اسمبل.
گزینههای زیر هنگامی که as برای حالت ۶۴بیتی معماری ARM (به اختصار AArch64) پیکربندی شده باشد در دسترس هستند:
- -EB
- این گزینه مشخص میکند که خروجی تولیدشده توسط اسمبلر باید به عنوان کدگذاریشده برای یک پردازنده big-endian علامتگذاری شود.
- -EL
- این گزینه مشخص میکند که خروجی تولیدشده توسط اسمبلر باید به عنوان کدگذاریشده برای یک پردازنده little-endian علامتگذاری شود.
- -mabi=abi
- تعیین میکند که کد منبع از کدام ABI استفاده میکند. آرگومانهای شناختهشده عبارتاند از: "ilp32" و "lp64"، که قالب فایل شیء تولیدی را به ترتیب در فرمتهای ELF32 و ELF64 مشخص میکند. مقدار پیشفرض "lp64" است.
- -mcpu=processor[+extension...]
- این گزینه
پردازنده
هدف را مشخص
میکند. در
صورتی که
تلاشی برای
اسمبل یک
دستورالعمل
صورت گیرد
که روی
پردازنده
هدف اجرا
نمیشود،
اسمبلر یک
پیام خطا
صادر خواهد
کرد.
نامهای
پردازندههای
زیر
شناختهشده
هستند:
"cortex-a34",
"cortex-a35",
"cortex-a53",
"cortex-a55",
"cortex-a57",
"cortex-a65",
"cortex-a65ae",
"cortex-a72",
"cortex-a73",
"cortex-a75",
"cortex-a76",
"cortex-a76ae",
"cortex-a77",
"cortex-a78",
"cortex-a78ae",
"cortex-a78c",
"cortex-a510",
"cortex-a520",
"cortex-a710",
"cortex-a720",
"ares",
"exynos-m1",
"falkor",
"neoverse-n1",
"neoverse-n2",
"neoverse-e1",
"neoverse-v1",
"qdf24xx",
"saphira",
"thunderx",
"vulcan",
"xgene1"
"xgene2",
"cortex-r82",
"cortex-x1",
"cortex-x2",
"cortex-x3", and
"cortex-x4". نام
ویژه "all"
میتواند
به کار رود
تا به
اسمبلر
اجازه دهد
دستورالعملهای
معتبر برای
هر
پردازنده
پشتیبانیشده
را، شامل
تمام
افزونههای
اختیاری،
بپذیرد.
علاوه بر مجموعه دستورالعمل پایه، به اسمبلر میتوان دستور داد تا نمادهای یادافزای مختلف افزونه را که پردازنده را گسترش میدهند بپذیرد یا محدود کند.
اگر برخی پیادهسازیهای یک پردازنده خاص بتوانند یک افزونه داشته باشند، آن افزونهها به طور خودکار فعال میشوند. در نتیجه، معمولاً نیازی به مشخص کردن هیچ افزونه اضافی نخواهید داشت.
- -march=architecture[+extension...]
- این گزینه
معماری هدف
را مشخص
میکند.
اسمبلر در
صورت تلاش
برای اسمبل
دستورالعملی
که روی
معماری هدف
اجرا
نمیشود،
پیام خطا
صادر
میکند.
نامهای
معماری زیر
شناختهشده
هستند:
"armv8-a",
"armv8.1-a",
"armv8.2-a",
"armv8.3-a",
"armv8.4-a"
"armv8.5-a",
"armv8.6-a",
"armv8.7-a",
"armv8.8-a",
"armv8.9-a",
"armv8-r",
"armv9-a",
"armv9.1-a",
"armv9.2-a",
"armv9.3-a",
"armv9.4-a" and
"armv9.5-a".
اگر هر دو گزینه -mcpu و -march مشخص شوند، اسمبلر از تنظیمات -mcpu استفاده خواهد کرد. اگر هیچکدام مشخص نشوند، اسمبلر به طور پیشفرض روی -mcpu=all تنظیم میشود.
گزینه معماری میتواند با همان گزینههای افزونه مجموعه دستورالعمل گزینه -mcpu گسترش یابد. برخلاف -mcpu، افزونهها همواره به طور پیشفرض فعال نیستند.
- -mverbose-error
- این گزینه پیامهای خطای پرجزئیات را برای gas در AArch64 فعال میکند. این گزینه به طور پیشفرض فعال است.
- -mno-verbose-error
- این گزینه پیامهای خطای پرجزئیات را در gas برای AArch64 غیرفعال میکند.
- -menable-sysreg-checking
- این گزینه پیامهای خطایی را فعال میکند که در صورت تلاش برای اسمبل دسترسی به رجیستر سیستمی که روی معماری هدف اجرا نمیشود، صادر میشوند.
گزینههای زیر هنگامی که as برای یک پردازنده Alpha پیکربندی شده باشد در دسترس هستند:
- -mcpu
- این گزینه
پردازنده
هدف را مشخص
میکند. در
صورتی که
تلاشی برای
اسمبل یک
دستورالعمل
صورت گیرد
که روی
پردازنده
هدف اجرا
نمیشود،
اسمبلر
ممکن است
دستورالعمل
را به عنوان
یک ماکرو
بسط دهد یا
یک پیام خطا
صادر کند.
این گزینه
معادل
دستورالعمل
".arch" است.
نامهای پردازندههای زیر شناختهشده هستند: 21064, "21064a", 21066, 21068, 21164, "21164a", "21164pc", 21264, "21264a", "21264b", "ev4", "ev5", "lca45", "ev5", "ev56", "pca56", "ev6", "ev67", "ev68". نام ویژه "all" ممکن است برای صدور اجازه به اسمبلر جهت پذیرش دستورالعملهای معتبر برای هر پردازنده Alpha استفاده شود.
به منظور پشتیبانی از رویه موجود در OSF/1 نسبت به ".arch" و رویه موجود درون MILO (بوتلودر ARC لینوکس)، نامهای شمارهدار پردازنده (مانند 21064) دستورالعملهای PALcode مختص پردازنده را فعال میکنند، ولی در عین حال نامهای «electro-vlasic» (مانند "ev4") این کار را نمیکنند.
- -mdebug
- -no-mdebug
- فعال یا غیرفعال کردن تولید کپسولهسازی ".mdebug" برای دستورالعملهای stabs و توصیفکنندههای رویه. پیشفرض این است که به محض مشاهده اولین دستورالعمل stabs، حالت ".mdebug" به صورت خودکار فعال شود.
- -relax
- این گزینه تحمیل میکند که تمام بازنشانیها درون فایل شیء قرار گیرند، به جای اینکه فضا ذخیره شده و برخی بازنشانیها در زمان اسمبل حل شوند. توجه داشته باشید که این گزینه تمام محاسبات نمادها را به فایل شیء منتقل نمیکند، زیرا همه محاسبات نمادها قابل نمایش نیستند. با این حال، این گزینه همچنان میتواند در کاربردهای خاص مفید باشد.
- -replace
- -noreplace
- بهینهسازی فراخوانیهای رویه را چه در زمان اسمبل و چه در زمان پیوند فعال یا غیرفعال میکند. این گزینهها تنها برای هدفهای VMS در دسترس هستند و "-replace" حالت پیشفرض است. به بخش 1.4.1 از راهنمای ابزار پیونددهنده OpenVMS مراجعه کنید.
- -g
- این گزینه زمانی استفاده میشود که کامپایلر اطلاعات اشکالزدایی تولید میکند. هنگامی که gcc از mips-tfile برای تولید اطلاعات اشکالزدایی برای ECOFF استفاده میکند، برچسبهای محلی باید به فایل شیء منتقل شوند. در غیر این صورت این گزینه هیچ اثری ندارد.
- -Gsize
- یک نماد اشتراکی محلی بزرگتر از size در ".bss" قرار میگیرد، در حالی که نمادهای کوچکتر در ".sbss" قرار میگیرند.
- -F
- -32addr
- این گزینهها برای سازگاری با گذشته نادیده گرفته میشوند.
گزینههای زیر هنگامی که as برای پردازنده ARC پیکربندی شده باشد در دسترس هستند:
- -mcpu=cpu
- این گزینه گونه پردازنده هسته را انتخاب میکند.
- -EB | -EL
- انتخاب خروجی big-endian (-EB) یا little-endian (-EL).
- -mcode-density
- فعالسازی دستورالعملهای افزونه Code Density.
گزینههای زیر هنگامی که as برای خانواده پردازنده ARM پیکربندی شده باشد در دسترس هستند:
- -mcpu=processor[+extension...]
- مشخص کردن اینکه کدام گونه پردازنده ARM هدف است.
- -march=architecture[+extension...]
- مشخص کردن اینکه کدام گونه معماری ARM توسط هدف استفاده میشود.
- -mfpu=floating-point-format
- انتخاب اینکه کدام معماری ممیز شناور هدف است.
- -mfloat-abi=abi
- انتخاب اینکه کدام ABI ممیز شناور در حال استفاده است.
- -mthumb
- فعالسازی رمزگشایی تنها دستورالعملهای Thumb.
- -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
- انتخاب اینکه کدام قرارداد فراخوانی رویه در حال استفاده است.
- -EB | -EL
- انتخاب خروجی big-endian (-EB) یا little-endian (-EL).
- -mthumb-interwork
- مشخص کردن اینکه کد با در نظر گرفتن تعامل میان کدهای Thumb و ARM تولید شده است.
- -mccs
- روشن کردن حالت سازگاری با نحو اسمبلی CodeComposer Studio.
- -k
- مشخص کردن اینکه کد PIC تولید شده است.
گزینههای زیر هنگامی که as برای خانواده پردازنده Blackfin پیکربندی شده باشد در دسترس هستند:
- -mcpu=processor[-sirevision]
- این گزینه پردازنده هدف را مشخص میکند. شناسه اختیاری sirevision در اسمبلر استفاده نمیشود، بلکه برای این قرار دارد که GCC بتواند به سادگی گزینه "-mcpu=" خود را منتقل کند. اسمبلر در صورت تلاش برای اسمبل دستورالعملی که روی پردازنده هدف اجرا نمیشود، یک پیام خطا صادر خواهد کرد. نامهای پردازندههای زیر شناختهشده هستند: "bf504", "bf506", "bf512", "bf514", "bf516", "bf518", "bf522", "bf523", "bf524", "bf525", "bf526", "bf527", "bf531", "bf532", "bf533", "bf534", "bf535" (هنوز پیادهسازی نشده), "bf536", "bf537", "bf538", "bf539", "bf542", "bf542m", "bf544", "bf544m", "bf547", "bf547m", "bf548", "bf548m", "bf549", "bf549m", "bf561", and "bf592".
- -mfdpic
- اسمبل برای FDPIC ABI.
- -mno-fdpic
- -mnopic
- غیرفعال کردن -mfdpic.
گزینههای زیر هنگامی که as برای خانواده پردازنده BPF هسته لینوکس پیکربندی شده باشد در دسترس هستند:
@chapter BPF Dependent Features
گزینههای BPF (BPF Options)
- -EB
- این گزینه مشخص میکند که اسمبلر باید eBPF را به صورت big-endian تولید کند.
- -EL
- این گزینه مشخص میکند که اسمبلر باید eBPF را به صورت little-endian تولید کند.
- -mdialect=dialect
- این گزینه گویش زبان اسمبلی را برای شناسایی در زمان اسمبل مشخص میکند. اسمبلر از normal و pseudoc پشتیبانی میکند.
- -misa-spec=spec
- این گزینه
نسخه
مجموعه
دستورالعمل
BPF را برای
استفاده در
هنگام
اسمبل مشخص
میکند.
نسخههای
پشتیبانیشده
BPF ISA
عبارتاند
از v1، v2، v3 و
v4.
مقدار xbpf میتواند برای شناسایی دستورالعملهای اضافی که توسط GCC برای مقاصد آزمایشی استفاده میشوند مشخص شود؛ اما توجه داشته باشید که این BPF معتبر نیست.
- -mno-relax
- این گزینه به اسمبلر میگوید دستورالعملها را شل (relax) نکند.
توجه داشته باشید که اگر هیچ گزینه endianness در خط فرمان مشخص نشده باشد، endianness سیستم میزبان استفاده میشود. برای مستندات گزینههای مختص CRIS به صفحات info مراجعه کنید.
گزینههای زیر هنگامی که as برای خانواده پردازنده C-SKY پیکربندی شده باشد در دسترس هستند:
- -march=archname
- اسمبل برای معماری archname. گزینه --help مقادیر معتبر برای archname را فهرست میکند.
- -mcpu=cpuname
- اسمبل برای پردازنده cpuname. گزینه --help مقادیر معتبر برای cpuname را فهرست میکند.
- -EL
- -mlittle-endian
- Generate little-endian output.
- -EB
- -mbig-endian
- Generate big-endian output.
- -fpic
- -pic
- Generate position-independent code.
- -mljump
- -mno-ljump
- Enable/disable transformation of the short branch instructions "jbf", "jbt", and "jbr" to "jmpi". This option is for V2 processors only. It is ignored on CK801 and CK802 targets, which do not support the "jmpi" instruction, and is enabled by default for other processors.
- -mbranch-stub
- -mno-branch-stub
- Pass through "R_CKCORE_PCREL_IMM26BY2"
relocations for "bsr" instructions to
the linker.
This option is only available for bare-metal C-SKY V2 ELF targets, where it is enabled by default. It cannot be used in code that will be dynamically linked against shared libraries.
- -force2bsr
- -mforce2bsr
- -no-force2bsr
- -mno-force2bsr
- Enable/disable transformation of "jbsr" instructions to "bsr". This option is always enabled (and -mno-force2bsr is ignored) for CK801/CK802 targets. It is also always enabled when -mbranch-stub is in effect.
- -jsri2bsr
- -mjsri2bsr
- -no-jsri2bsr
- -mno-jsri2bsr
- Enable/disable transformation of "jsri" instructions to "bsr". This option is enabled by default.
- -mnolrw
- -mno-lrw
- Enable/disable transformation of "lrw" instructions into a "movih"/"ori" pair.
- -melrw
- -mno-elrw
- Enable/disable extended "lrw" instructions. This option is enabled by default for CK800-series processors.
- -mlaf
- -mliterals-after-func
- -mno-laf
- -mno-literals-after-func
- Enable/disable placement of literal pools after each function.
- -mlabr
- -mliterals-after-br
- -mno-labr
- -mnoliterals-after-br
- Enable/disable placement of literal pools after unconditional branches. This option is enabled by default.
- -mistack
- -mno-istack
- Enable/disable interrupt stack instructions. This option is enabled by default on CK801, CK802, and CK802 processors.
The following options explicitly enable certain optional instructions. These features are also enabled implicitly by using "-mcpu=" to specify a processor that supports it.
- -mhard-float
- Enable hard float instructions.
- -mmp
- Enable multiprocessor instructions.
- -mcp
- Enable coprocessor instructions.
- -mcache
- Enable cache prefetch instruction.
- -msecurity
- Enable C-SKY security instructions.
- -mtrust
- Enable C-SKY trust instructions.
- -mdsp
- Enable DSP instructions.
- -medsp
- Enable enhanced DSP instructions.
- -mvdsp
- Enable vector DSP instructions.
گزینههای زیر هنگامی که as برای یک پردازنده Epiphany پیکربندی شده باشد در دسترس هستند:
- -mepiphany
- مشخص میکند که هر دو نوع دستورالعملهای ۳۲ و ۱۶ بیتی مجاز هستند. این رفتار پیشفرض است.
- -mepiphany16
- دستورالعملهای مجاز را فقط به مجموعه ۱۶ بیتی محدود میکند.
گزینههای زیر هنگامی که as برای یک پردازنده H8/300 پیکربندی شده باشد در دسترس هستند: @chapter H8/300 Dependent Features
گزینهها (Options)
نگارش Renesas H8/300 از "as" دارای یک گزینه وابسته به ماشین است:
- -h-tick-hex
- پشتیبانی از ثابتهای هگزادسیمال به سبک H'00 علاوه بر سبک 0x00.
- -mach=name
- تنظیم گونه ماشین H8300. نامهای ماشینهای زیر شناختهشده هستند: "h8300h", "h8300hn", "h8300s", "h8300sn", "h8300sx" and "h8300sxn".
گزینههای زیر هنگامی که as برای یک پردازنده i386 پیکربندی شده باشد در دسترس هستند:
- --32 | --x32 | --64
- Select the word size, either 32 bits or 64 bits. --32 implies Intel
i386 architecture, while --x32 and --64 imply AMD x86-64
architecture with 32-bit or 64-bit word-size respectively.
These options are only available with the ELF object file format, and require that the necessary BFD support has been included (on a 32-bit platform you have to add --enable-64-bit-bfd to configure enable 64-bit usage and use x86-64 as target platform).
- -n
- By default, x86 GAS replaces multiple nop instructions used for alignment within code sections with multi-byte nop instructions such as leal 0(%esi,1),%esi. This switch disables the optimization if a single byte nop (0x90) is explicitly specified as the fill byte for alignment.
- --divide
- On SVR4-derived platforms, the character / is treated as a comment character, which means that it cannot be used in expressions. The --divide option turns / into a normal character. This does not disable / at the beginning of a line starting a comment, or affect using # for starting a comment.
- -march=CPU[+EXTENSION...]
- This option specifies the target processor. The assembler will issue an
error message if an attempt is made to assemble an instruction which will
not execute on the target processor. The following processor names are
recognized: "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" and
"generic64".
In addition to the basic instruction set, the assembler can be told to accept various extension mnemonics. For example, "-march=i686+sse4+vmx" extends i686 with sse4 and vmx. The following extensions are currently supported: 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" and "padlock". Note that these extension mnemonics can be prefixed with "no" to revoke the respective (and any dependent) functionality. Note further that the suffixes permitted on "-march=avx10.<N>" enforce a vector length restriction, i.e. despite these otherwise being "enabling" options, using these suffixes will disable all insns with wider vector or mask register operands.
When the ".arch" directive is used with -march, the ".arch" directive will take precedent.
- -mtune=CPU
- This option specifies a processor to optimize for. When used in
conjunction with the -march option, only instructions of the
processor specified by the -march option will be generated.
Valid CPU values are identical to the processor list of -march=CPU.
- -moperand-check=none
- -moperand-check=warning
- -moperand-check=error
- These options control if the assembler should check certain instruction operands or operand combinations. An example instructions where operand size cannot be inferred from its operands and also hasn't been specified by way of an instruction suffix. -moperand-check=none will make the assembler not perform these checks. -moperand-check=warning will make the assembler issue a warning when respective checks fail, which is the default. -moperand-check=error will make the assembler issue an error when respective checks fail.
- -msse2avx
- This option specifies that the assembler should encode SSE instructions with VEX prefix, requiring AVX to be available. SSE instructions using extended GPRs will be encoded with EVEX prefix, requiring AVX512 or AVX10 to be available.
- -muse-unaligned-vector-move
- This option specifies that the assembler should encode aligned vector move as unaligned vector move.
- -msse-check=none
- -msse-check=warning
- -msse-check=error
- These options control if the assembler should check SSE instructions. -msse-check=none will make the assembler not to check SSE instructions, which is the default. -msse-check=warning will make the assembler issue a warning for any SSE instruction. -msse-check=error will make the assembler issue an error for any SSE instruction.
- -mavxscalar=128
- -mavxscalar=256
- These options control how the assembler should encode scalar AVX
instructions. -mavxscalar=128 will encode scalar AVX
instructions with 128bit vector length, which is the default.
-mavxscalar=256 will encode scalar AVX instructions with
256bit vector length.
WARNING: Don't use this for production code - due to CPU errata the resulting code may not work on certain models.
- -mvexwig=0
- -mvexwig=1
- These options control how the assembler should encode VEX.W-ignored (WIG)
VEX instructions. -mvexwig=0 will encode WIG VEX
instructions with vex.w = 0, which is the default.
-mvexwig=1 will encode WIG EVEX instructions with vex.w = 1.
WARNING: Don't use this for production code - due to CPU errata the resulting code may not work on certain models.
- -mevexlig=128
- -mevexlig=256
- -mevexlig=512
- These options control how the assembler should encode length-ignored (LIG) EVEX instructions. -mevexlig=128 will encode LIG EVEX instructions with 128bit vector length, which is the default. -mevexlig=256 and -mevexlig=512 will encode LIG EVEX instructions with 256bit and 512bit vector length, respectively.
- -mevexwig=0
- -mevexwig=1
- These options control how the assembler should encode w-ignored (WIG) EVEX instructions. -mevexwig=0 will encode WIG EVEX instructions with evex.w = 0, which is the default. -mevexwig=1 will encode WIG EVEX instructions with evex.w = 1.
- -mmnemonic=att
- -mmnemonic=intel
- This option specifies instruction mnemonic for matching instructions. The ".att_mnemonic" and ".intel_mnemonic" directives will take precedent.
- -msyntax=att
- -msyntax=intel
- This option specifies instruction syntax when processing instructions. The ".att_syntax" and ".intel_syntax" directives will take precedent.
- -mnaked-reg
- This option specifies that registers don't require a % prefix. The ".att_syntax" and ".intel_syntax" directives will take precedent.
- -madd-bnd-prefix
- This option forces the assembler to add BND prefix to all branches, even if such prefix was not explicitly specified in the source code.
- -mno-shared
- On ELF target, the assembler normally optimizes out non-PLT relocations against defined non-weak global branch targets with default visibility. The -mshared option tells the assembler to generate code which may go into a shared library where all non-weak global branch targets with default visibility can be preempted. The resulting code is slightly bigger. This option only affects the handling of branch instructions.
- -mbig-obj
- On PE/COFF target this option forces the use of big object file format, which allows more than 32768 sections.
- -momit-lock-prefix=no
- -momit-lock-prefix=yes
- These options control how the assembler should encode lock prefix. This option is intended as a workaround for processors, that fail on lock prefix. This option can only be safely used with single-core, single-thread computers -momit-lock-prefix=yes will omit all lock prefixes. -momit-lock-prefix=no will encode lock prefix as usual, which is the default.
- -mfence-as-lock-add=no
- -mfence-as-lock-add=yes
- These options control how the assembler should encode lfence, mfence and sfence. -mfence-as-lock-add=yes will encode lfence, mfence and sfence as lock addl $0x0, (%rsp) in 64-bit mode and lock addl $0x0, (%esp) in 32-bit mode. -mfence-as-lock-add=no will encode lfence, mfence and sfence as usual, which is the default.
- -mrelax-relocations=no
- -mrelax-relocations=yes
- These options control whether the assembler should generate relax relocations, R_386_GOT32X, in 32-bit mode, or R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX, in 64-bit mode. -mrelax-relocations=yes will generate relax relocations. -mrelax-relocations=no will not generate relax relocations. The default can be controlled by a configure option --enable-x86-relax-relocations.
- -mtls-check=no
- -mtls-check=yes
- These options control whether the assembler check tls relocation. -mtls-check=yes will check tls relocation. -mtls-check=no will not check tls relocation The default can be controlled by a configure option --enable-x86-tls-check.
- -malign-branch-boundary=NUM
- This option controls how the assembler should align branches with segment prefixes or NOP. NUM must be a power of 2. It should be 0 or no less than 16. Branches will be aligned within NUM byte boundary. -malign-branch-boundary=0, which is the default, doesn't align branches.
- -malign-branch=TYPE[+TYPE...]
- This option specifies types of branches to align. TYPE is combination of jcc, which aligns conditional jumps, fused, which aligns fused conditional jumps, jmp, which aligns unconditional jumps, call which aligns calls, ret, which aligns rets, indirect, which aligns indirect jumps and calls. The default is -malign-branch=jcc+fused+jmp.
- -malign-branch-prefix-size=NUM
- This option specifies the maximum number of prefixes on an instruction to align branches. NUM should be between 0 and 5. The default NUM is 5.
- -mbranches-within-32B-boundaries
- This option aligns conditional jumps, fused conditional jumps and unconditional jumps within 32 byte boundary with up to 5 segment prefixes on an instruction. It is equivalent to -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. The default doesn't align branches.
- -mlfence-after-load=no
- -mlfence-after-load=yes
- These options control whether the assembler should generate lfence after load instructions. -mlfence-after-load=yes will generate lfence. -mlfence-after-load=no will not generate lfence, which is the default.
- -mlfence-before-indirect-branch=none
- -mlfence-before-indirect-branch=all
- -mlfence-before-indirect-branch=register
- -mlfence-before-indirect-branch=memory
- These options control whether the assembler should generate lfence before indirect near branch instructions. -mlfence-before-indirect-branch=all will generate lfence before indirect near branch via register and issue a warning before indirect near branch via memory. It also implicitly sets -mlfence-before-ret=shl when there's no explicit -mlfence-before-ret=. -mlfence-before-indirect-branch=register will generate lfence before indirect near branch via register. -mlfence-before-indirect-branch=memory will issue a warning before indirect near branch via memory. -mlfence-before-indirect-branch=none will not generate lfence nor issue warning, which is the default. Note that lfence won't be generated before indirect near branch via register with -mlfence-after-load=yes since lfence will be generated after loading branch target register.
- -mlfence-before-ret=none
- -mlfence-before-ret=shl
- -mlfence-before-ret=or
- -mlfence-before-ret=yes
- -mlfence-before-ret=not
- These options control whether the assembler should generate lfence before ret. -mlfence-before-ret=or will generate generate or instruction with lfence. -mlfence-before-ret=shl/yes will generate shl instruction with lfence. -mlfence-before-ret=not will generate not instruction with lfence. -mlfence-before-ret=none will not generate lfence, which is the default.
- -mx86-used-note=no
- -mx86-used-note=yes
- These options control whether the assembler should generate GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_FEATURE_2_USED GNU property notes. The default can be controlled by the --enable-x86-used-note configure option.
- -mevexrcig=rne
- -mevexrcig=rd
- -mevexrcig=ru
- -mevexrcig=rz
- These options control how the assembler should encode SAE-only EVEX instructions. -mevexrcig=rne will encode RC bits of EVEX instruction with 00, which is the default. -mevexrcig=rd, -mevexrcig=ru and -mevexrcig=rz will encode SAE-only EVEX instructions with 01, 10 and 11 RC bits, respectively.
- -mamd64
- -mintel64
- This option specifies that the assembler should accept only AMD64 or Intel64 ISA in 64-bit mode. The default is to accept common, Intel64 only and AMD64 ISAs.
- -O0 | -O | -O1 | -O2 | -Os
- Optimize instruction encoding with smaller instruction size. -O and
-O1 encode 64-bit register load instructions with 64-bit immediate
as 32-bit register load instructions with 31-bit or 32-bits immediates,
encode 64-bit register clearing instructions with 32-bit register clearing
instructions, encode 256-bit/512-bit VEX/EVEX vector register clearing
instructions with 128-bit VEX vector register clearing instructions,
encode 128-bit/256-bit EVEX vector register load/store instructions with
VEX vector register load/store instructions, and encode 128-bit/256-bit
EVEX packed integer logical instructions with 128-bit/256-bit VEX packed
integer logical.
-O2 includes -O1 optimization plus encodes 256-bit/512-bit EVEX vector register clearing instructions with 128-bit EVEX vector register clearing instructions. In 64-bit mode VEX encoded instructions with commutative source operands will also have their source operands swapped if this allows using the 2-byte VEX prefix form instead of the 3-byte one. Certain forms of AND as well as OR with the same (register) operand specified twice will also be changed to TEST.
-Os includes -O2 optimization plus encodes 16-bit, 32-bit and 64-bit register tests with immediate as 8-bit register test with immediate. -O0 turns off this optimization.
گزینههای زیر هنگامی که as برای سری Ubicom IP2K پیکربندی شده باشد در دسترس هستند:
- -mip2022ext
- Specifies that the extended IP2022 instructions are allowed.
- -mip2022
- Restores the default behaviour, which restricts the permitted instructions to just the basic IP2022 ones.
گزینههای زیر هنگامی که as برای پردازندههای Renesas M32C و M16C پیکربندی شده باشد در دسترس هستند:
- -m32c
- Assemble M32C instructions.
- -m16c
- Assemble M16C instructions (the default).
- -relax
- Enable support for link-time relaxations.
- -h-tick-hex
- Support H'00 style hex constants in addition to 0x00 style.
گزینههای زیر هنگامی که as برای سری Renesas M32R (پیشتر Mitsubishi M32R) پیکربندی شده باشد در دسترس هستند:
- --m32rx
- Specify which processor in the M32R family is the target. The default is normally the M32R, but this option changes it to the M32RX.
- --warn-explicit-parallel-conflicts or --Wp
- Produce warning messages when questionable parallel constructs are encountered.
- --no-warn-explicit-parallel-conflicts or --Wnp
- Do not produce warning messages when questionable parallel constructs are encountered.
گزینههای زیر هنگامی که as برای سری موتورولا ۶۸۰۰۰ پیکربندی شده باشد در دسترس هستند:
- -l
- Shorten references to undefined symbols, to one word instead of two.
- -m68000 | -m68008 | -m68010 | -m68020 | -m68030
- | -m68040 | -m68060 | -m68302 | -m68331 | -m68332
- | -m68333 | -m68340 | -mcpu32 | -m5200
- Specify what processor in the 68000 family is the target. The default is normally the 68020, but this can be changed at configuration time.
- -m68881 | -m68882 | -mno-68881 | -mno-68882
- The target machine does (or does not) have a floating-point coprocessor. The default is to assume a coprocessor for 68020, 68030, and cpu32. Although the basic 68000 is not compatible with the 68881, a combination of the two can be specified, since it's possible to do emulation of the coprocessor instructions with the main processor.
- -m68851 | -mno-68851
- The target machine does (or does not) have a memory-management unit coprocessor. The default is to assume an MMU for 68020 and up.
For details about the PDP-11 machine dependent features options, see PDP-11-Options.
- -mpic | -mno-pic
- Generate position-independent (or position-dependent) code. The default is -mpic.
- -mall
- -mall-extensions
- Enable all instruction set extensions. This is the default.
- -mno-extensions
- Disable all instruction set extensions.
- -mextension | -mno-extension
- Enable (or disable) a particular instruction set extension.
- -mcpu
- Enable the instruction set extensions supported by a particular CPU, and disable all other extensions.
- -mmachine
- Enable the instruction set extensions supported by a particular machine model, and disable all other extensions.
گزینههای زیر هنگامی که as برای یک پردازنده picoJava پیکربندی شده باشد در دسترس هستند:
گزینههای زیر هنگامی که as برای یک پردازنده PRU پیکربندی شده باشد در دسترس هستند:
- -mlink-relax
- فرض بر این است که LD با بررسی ۱۶ بیت بالایی expression دستورالعملهای LDI32 را بهینهسازی میکند. اگر همه آنها صفر باشند، LD دستورالعمل LDI32 را به یک LDI واحد کوتاه میکند. در چنین حالتی "as" بازنشانیهای DIFF را برای عبارات تفاضلی ارسال میکند.
- -mno-link-relax
- فرض بر این است که LD دستورالعملهای LDI32 را بهینهسازی نمیکند. در نتیجه، بازنشانیهای DIFF تولید نخواهند شد.
- -mno-warn-regname-label
- در صورتی که نام برچسب با نام رجیستر مطابقت داشته باشد هشدار نده. معمولاً برنامهنویسان اسمبلی تمایل دارند این هشدار صادر شود. کامپایلرهای C ممکن است بخواهند این گزینه را خاموش کنند.
گزینههای زیر هنگامی که as برای یک پردازنده MIPS پیکربندی شده باشد در دسترس هستند:
- -G num
- این گزینه بزرگترین اندازه شیء را که میتواند به طور ضمنی با رجیستر "gp" مورد ارجاع قرار گیرد تنظیم میکند. این گزینه فقط برای هدفهایی که از قالب ECOFF استفاده میکنند (مانند DECstation دارای Ultrix) پذیرفته میشود. مقدار پیشفرض ۸ است.
- -EB
- تولید خروجی در قالب "big endian".
- -EL
- تولید خروجی در قالب "little endian".
- -mips1
- -mips2
- -mips3
- -mips4
- -mips5
- -mips32
- -mips32r2
- -mips32r3
- -mips32r5
- -mips32r6
- -mips64
- -mips64r2
- -mips64r3
- -mips64r5
- -mips64r6
- Generate code for a particular MIPS Instruction Set Architecture level. -mips1 is an alias for -march=r3000, -mips2 is an alias for -march=r6000, -mips3 is an alias for -march=r4000 and -mips4 is an alias for -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5, and -mips64r6 correspond to generic 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, and MIPS64 Release 6 ISA processors, respectively.
- -march=cpu
- Generate code for a particular MIPS CPU.
- -mtune=cpu
- Schedule and tune for a particular MIPS CPU.
- -mfix7000
- -mno-fix7000
- Cause nops to be inserted if the read of the destination register of an mfhi or mflo instruction occurs in the following two instructions.
- -mfix-rm7000
- -mno-fix-rm7000
- Cause nops to be inserted if a dmult or dmultu instruction is followed by a load instruction.
- -mfix-r5900
- -mno-fix-r5900
- Do not attempt to schedule the preceding instruction into the delay slot of a branch instruction placed at the end of a short loop of six instructions or fewer and always schedule a "nop" instruction there instead. The short loop bug under certain conditions causes loops to execute only once or twice, due to a hardware bug in the R5900 chip.
- -mdebug
- -no-mdebug
- Cause stabs-style debugging output to go into an ECOFF-style .mdebug section instead of the standard ELF .stabs sections.
- -mpdr
- -mno-pdr
- Control generation of ".pdr" sections.
- -mgp32
- -mfp32
- The register sizes are normally inferred from the ISA and ABI, but these flags force a certain group of registers to be treated as 32 bits wide at all times. -mgp32 controls the size of general-purpose registers and -mfp32 controls the size of floating-point registers.
- -mgp64
- -mfp64
- The register sizes are normally inferred from the ISA and ABI, but these flags force a certain group of registers to be treated as 64 bits wide at all times. -mgp64 controls the size of general-purpose registers and -mfp64 controls the size of floating-point registers.
- -mfpxx
- The register sizes are normally inferred from the ISA and ABI, but using this flag in combination with -mabi=32 enables an ABI variant which will operate correctly with floating-point registers which are 32 or 64 bits wide.
- -modd-spreg
- -mno-odd-spreg
- Enable use of floating-point operations on odd-numbered single-precision registers when supported by the ISA. -mfpxx implies -mno-odd-spreg, otherwise the default is -modd-spreg.
- -mips16
- -no-mips16
- Generate code for the MIPS 16 processor. This is equivalent to putting ".module mips16" at the start of the assembly file. -no-mips16 turns off this option.
- -mmips16e2
- -mno-mips16e2
- Enable the use of MIPS16e2 instructions in MIPS16 mode. This is equivalent to putting ".module mips16e2" at the start of the assembly file. -mno-mips16e2 turns off this option.
- -mmicromips
- -mno-micromips
- Generate code for the microMIPS processor. This is equivalent to putting ".module micromips" at the start of the assembly file. -mno-micromips turns off this option. This is equivalent to putting ".module nomicromips" at the start of the assembly file.
- -msmartmips
- -mno-smartmips
- Enables the SmartMIPS extension to the MIPS32 instruction set. This is equivalent to putting ".module smartmips" at the start of the assembly file. -mno-smartmips turns off this option.
- -mips3d
- -no-mips3d
- Generate code for the MIPS-3D Application Specific Extension. This tells the assembler to accept MIPS-3D instructions. -no-mips3d turns off this option.
- -mdmx
- -no-mdmx
- Generate code for the MDMX Application Specific Extension. This tells the assembler to accept MDMX instructions. -no-mdmx turns off this option.
- -mdsp
- -mno-dsp
- Generate code for the DSP Release 1 Application Specific Extension. This tells the assembler to accept DSP Release 1 instructions. -mno-dsp turns off this option.
- -mdspr2
- -mno-dspr2
- Generate code for the DSP Release 2 Application Specific Extension. This option implies -mdsp. This tells the assembler to accept DSP Release 2 instructions. -mno-dspr2 turns off this option.
- -mdspr3
- -mno-dspr3
- Generate code for the DSP Release 3 Application Specific Extension. This option implies -mdsp and -mdspr2. This tells the assembler to accept DSP Release 3 instructions. -mno-dspr3 turns off this option.
- -mmsa
- -mno-msa
- Generate code for the MIPS SIMD Architecture Extension. This tells the assembler to accept MSA instructions. -mno-msa turns off this option.
- -mxpa
- -mno-xpa
- Generate code for the MIPS eXtended Physical Address (XPA) Extension. This tells the assembler to accept XPA instructions. -mno-xpa turns off this option.
- -mmt
- -mno-mt
- Generate code for the MT Application Specific Extension. This tells the assembler to accept MT instructions. -mno-mt turns off this option.
- -mmcu
- -mno-mcu
- Generate code for the MCU Application Specific Extension. This tells the assembler to accept MCU instructions. -mno-mcu turns off this option.
- -mcrc
- -mno-crc
- Generate code for the MIPS cyclic redundancy check (CRC) Application Specific Extension. This tells the assembler to accept CRC instructions. -mno-crc turns off this option.
- -mginv
- -mno-ginv
- Generate code for the Global INValidate (GINV) Application Specific Extension. This tells the assembler to accept GINV instructions. -mno-ginv turns off this option.
- -mloongson-mmi
- -mno-loongson-mmi
- Generate code for the Loongson MultiMedia extensions Instructions (MMI) Application Specific Extension. This tells the assembler to accept MMI instructions. -mno-loongson-mmi turns off this option.
- -mloongson-cam
- -mno-loongson-cam
- Generate code for the Loongson Content Address Memory (CAM) instructions. This tells the assembler to accept Loongson CAM instructions. -mno-loongson-cam turns off this option.
- -mloongson-ext
- -mno-loongson-ext
- Generate code for the Loongson EXTensions (EXT) instructions. This tells the assembler to accept Loongson EXT instructions. -mno-loongson-ext turns off this option.
- -mloongson-ext2
- -mno-loongson-ext2
- Generate code for the Loongson EXTensions R2 (EXT2) instructions. This option implies -mloongson-ext. This tells the assembler to accept Loongson EXT2 instructions. -mno-loongson-ext2 turns off this option.
- -minsn32
- -mno-insn32
- Only use 32-bit instruction encodings when generating code for the microMIPS processor. This option inhibits the use of any 16-bit instructions. This is equivalent to putting ".set insn32" at the start of the assembly file. -mno-insn32 turns off this option. This is equivalent to putting ".set noinsn32" at the start of the assembly file. By default -mno-insn32 is selected, allowing all instructions to be used.
- --construct-floats
- --no-construct-floats
- The --no-construct-floats option disables the construction of double width floating point constants by loading the two halves of the value into the two single width floating point registers that make up the double width register. By default --construct-floats is selected, allowing construction of these floating point constants.
- --relax-branch
- --no-relax-branch
- The --relax-branch option enables the relaxation of out-of-range branches. By default --no-relax-branch is selected, causing any out-of-range branches to produce an error.
- -mignore-branch-isa
- -mno-ignore-branch-isa
- Ignore branch checks for invalid transitions between ISA modes. The semantics of branches does not provide for an ISA mode switch, so in most cases the ISA mode a branch has been encoded for has to be the same as the ISA mode of the branch's target label. Therefore GAS has checks implemented that verify in branch assembly that the two ISA modes match. -mignore-branch-isa disables these checks. By default -mno-ignore-branch-isa is selected, causing any invalid branch requiring a transition between ISA modes to produce an error.
- -mnan=encoding
- Select between the IEEE 754-2008 (-mnan=2008) or the legacy (-mnan=legacy) NaN encoding format. The latter is the default.
- --emulation=name
- This option was formerly used to switch between ELF and ECOFF output on
targets like IRIX 5 that supported both. MIPS ECOFF support was removed in
GAS 2.24, so the option now serves little purpose. It is retained for
backwards compatibility.
The available configuration names are: mipself, mipslelf and mipsbelf. Choosing mipself now has no effect, since the output is always ELF. mipslelf and mipsbelf select little- and big-endian output respectively, but -EL and -EB are now the preferred options instead.
- -nocpp
- as ignores this option. It is accepted for compatibility with the native tools.
- --trap
- --no-trap
- --break
- --no-break
- Control how to deal with multiplication overflow and division by zero. --trap or --no-break (which are synonyms) take a trap exception (and only work for Instruction Set Architecture level 2 and higher); --break or --no-trap (also synonyms, and the default) take a break exception.
- -n
- When this option is used, as will issue a warning every time it generates a nop instruction from a macro.
گزینههای زیر هنگامی که as برای یک پردازنده LoongArch پیکربندی شده باشد در دسترس هستند:
گزینههای زیر هنگامی که 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"
- Produce little endian data output.
- "-EB"
- Produce little endian data output.
- "-mpic"
- Generate PIC.
- "-mno-fp-as-gp-relax"
- Suppress fp-as-gp relaxation for this file.
- "-mb2bb-relax"
- Back-to-back branch optimization.
- "-mno-all-relax"
- Suppress all relaxation for this file.
- "-march=<arch name>"
- Assemble for architecture <arch name> which could be v3, v3j, v3m, v3f, v3s, v2, v2j, v2f, v2s.
- "-mbaseline=<baseline>"
- Assemble for baseline <baseline> which could be v2, v3, v3m.
- "-mfpu-freg=FREG"
- Specify a FPU configuration.
- "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"
- Specify a abi version <abi> could be v1, v2, v2fp, v2fpp.
- "-m[no-]mac"
- Enable/Disable Multiply instructions support.
- "-m[no-]div"
- Enable/Disable Divide instructions support.
- "-m[no-]16bit-ext"
- Enable/Disable 16-bit extension
- "-m[no-]dx-regs"
- Enable/Disable d0/d1 registers
- "-m[no-]perf-ext"
- Enable/Disable Performance extension
- "-m[no-]perf2-ext"
- Enable/Disable Performance extension 2
- "-m[no-]string-ext"
- Enable/Disable String extension
- "-m[no-]reduced-regs"
- Enable/Disable Reduced Register configuration (GPR16) option
- "-m[no-]audio-isa-ext"
- Enable/Disable AUDIO ISA extension
- "-m[no-]fpu-sp-ext"
- Enable/Disable FPU SP extension
- "-m[no-]fpu-dp-ext"
- Enable/Disable FPU DP extension
- "-m[no-]fpu-fma"
- Enable/Disable FPU fused-multiply-add instructions
- "-mall-ext"
- Turn on all extensions and instructions support
گزینههای زیر هنگامی که as برای یک پردازنده PowerPC پیکربندی شده باشد در دسترس هستند:
- -a32
- Generate ELF32 or XCOFF32.
- -a64
- Generate ELF64 or XCOFF64.
- -K PIC
- Set EF_PPC_RELOCATABLE_LIB in ELF flags.
- -mpwrx | -mpwr2
- Generate code for POWER/2 (RIOS2).
- -mpwr
- Generate code for POWER (RIOS1)
- -m601
- Generate code for PowerPC 601.
- -mppc, -mppc32, -m603, -m604
- Generate code for PowerPC 603/604.
- -m403, -m405
- Generate code for PowerPC 403/405.
- -m440
- Generate code for PowerPC 440. BookE and some 405 instructions.
- -m464
- Generate code for PowerPC 464.
- -m476
- Generate code for PowerPC 476.
- -m7400, -m7410, -m7450, -m7455
- Generate code for PowerPC 7400/7410/7450/7455.
- -m750cl, -mgekko, -mbroadway
- Generate code for PowerPC 750CL/Gekko/Broadway.
- -m821, -m850, -m860
- Generate code for PowerPC 821/850/860.
- -mppc64, -m620
- Generate code for PowerPC 620/625/630.
- -me200z2, -me200z4
- Generate code for e200 variants, e200z2 with LSP, e200z4 with SPE.
- -me300
- Generate code for PowerPC e300 family.
- -me500, -me500x2
- Generate code for Motorola e500 core complex.
- -me500mc
- Generate code for Freescale e500mc core complex.
- -me500mc64
- Generate code for Freescale e500mc64 core complex.
- -me5500
- Generate code for Freescale e5500 core complex.
- -me6500
- Generate code for Freescale e6500 core complex.
- -mlsp
- Enable LSP instructions. (Disables SPE and SPE2.)
- -mspe
- Generate code for Motorola SPE instructions. (Disables LSP.)
- -mspe2
- Generate code for Freescale SPE2 instructions. (Disables LSP.)
- -mtitan
- Generate code for AppliedMicro Titan core complex.
- -mppc64bridge
- Generate code for PowerPC 64, including bridge insns.
- -mbooke
- Generate code for 32-bit BookE.
- -ma2
- Generate code for A2 architecture.
- -maltivec
- Generate code for processors with AltiVec instructions.
- -mvle
- Generate code for Freescale PowerPC VLE instructions.
- -mvsx
- Generate code for processors with Vector-Scalar (VSX) instructions.
- -mhtm
- Generate code for processors with Hardware Transactional Memory instructions.
- -mpower4, -mpwr4
- Generate code for Power4 architecture.
- -mpower5, -mpwr5, -mpwr5x
- Generate code for Power5 architecture.
- -mpower6, -mpwr6
- Generate code for Power6 architecture.
- -mpower7, -mpwr7
- Generate code for Power7 architecture.
- -mpower8, -mpwr8
- Generate code for Power8 architecture.
- -mpower9, -mpwr9
- Generate code for Power9 architecture.
- -mpower10, -mpwr10
- Generate code for Power10 architecture.
- -mpower11, -mpwr11
- Generate code for Power11 architecture.
- -mfuture
- Generate code for 'future' architecture.
- -mcell
- -mcell
- Generate code for Cell Broadband Engine architecture.
- -mcom
- Generate code Power/PowerPC common instructions.
- -many
- Generate code for any architecture (PWR/PWRX/PPC).
- -mregnames
- Allow symbolic names for registers.
- -mno-regnames
- Do not allow symbolic names for registers.
- -mrelocatable
- Support for GCC's -mrelocatable option.
- -mrelocatable-lib
- Support for GCC's -mrelocatable-lib option.
- -memb
- Set PPC_EMB bit in ELF flags.
- -mlittle, -mlittle-endian, -le
- Generate code for a little endian machine.
- -mbig, -mbig-endian, -be
- Generate code for a big endian machine.
- -msolaris
- Generate code for Solaris.
- -mno-solaris
- Do not generate code for Solaris.
- -nops=count
- If an alignment directive inserts more than count nops, put a branch at the beginning to skip execution of the nops.
گزینههای زیر هنگامی که as برای یک پردازنده RISC-V پیکربندی شده باشد در دسترس هستند:
- -fpic
- -fPIC
- Generate position-independent code
- -fno-pic
- Don't generate position-independent code (default)
- -march=ISA|Profiles|Profiles_ISA
- Select the base isa, as specified by ISA or Profiles or Profies_ISA. For example -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. If this option and the architecture attributes aren't set, then assembler will check the default configure setting --with-arch=ISA.
- -misa-spec=ISAspec
- Select the default isa spec version. If the version of ISA isn't set by -march, then assembler helps to set the version according to the default chosen spec. If this option isn't set, then assembler will check the default configure setting --with-isa-spec=ISAspec.
- -mpriv-spec=PRIVspec
- Select the privileged spec version. We can decide whether the CSR is valid or not according to the chosen spec. If this option and the privilege attributes aren't set, then assembler will check the default configure setting --with-priv-spec=PRIVspec.
- -mabi=ABI
- Selects the ABI, which is either "ilp32" or "lp64", optionally followed by "f", "d", or "q" to indicate single-precision, double-precision, or quad-precision floating-point calling convention, or none or "e" to indicate the soft-float calling convention ("e" indicates a soft-float RVE ABI).
- -mrelax
- Take advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses. (default)
- -mno-relax
- Don't do linker relaxations.
- -march-attr
- Generate the default contents for the riscv elf attribute section if the .attribute directives are not set. This section is used to record the information that a linker or runtime loader needs to check compatibility. This information includes ISA string, stack alignment requirement, unaligned memory accesses, and the major, minor and revision version of privileged specification.
- -mno-arch-attr
- Don't generate the default riscv elf attribute section if the .attribute directives are not set.
- -mcsr-check
- Enable the CSR checking for the ISA-dependent CRS and the read-only CSR. The ISA-dependent CSR are only valid when the specific ISA is set. The read-only CSR can not be written by the CSR instructions.
- -mno-csr-check
- Don't do CSR checking.
- -mlittle-endian
- Generate code for a little endian machine.
- -mbig-endian
- Generate code for a big endian machine.
See the info pages for documentation of the RX-specific options.
گزینههای زیر هنگامی که as برای خانواده پردازنده s390 پیکربندی شده باشد در دسترس هستند:
- -m31
- -m64
- Select the word size, either 31/32 bits or 64 bits.
- -mesa
- -mzarch
- Select the architecture mode, either the Enterprise System Architecture (esa) or the z/Architecture mode (zarch).
- -march=processor
- Specify which s390 processor variant is the target, g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec (or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13 (or arch11), z14 (or arch12), z15 (or arch13), z16 (or arch14), or z17 (or arch15).
- -mregnames
- -mno-regnames
- Allow or disallow symbolic names for registers.
- -mwarn-areg-zero
- Warn whenever the operand for a base or index register has been specified but evaluates to zero.
- -mwarn-regtype-mismatch=strict
- -mwarn-regtype-mismatch=relaxed
- -mwarn-regtype-mismatch=no
- -mno-warn-regtype-mismatch
- Controls whether the assembler performs register name type checks and generates a warning message in case of a mismatch with the operand register type. The default (which can be restored by using the relaxed argument) is to perform relaxed register name type checks, which allow floating point register (FPR) names %f0 to %f15 to be specified as argument to vector register (VR) operands and vector register (VR) names %v0 to %v15 to be specified as argument to floating point register (FPR) operands. This is acceptable as the FPR are embedded into the lower half of the VR. Using the strict argument strict register name type checks are performed. The no argument, which is equivalent to -mno-warn-regtype-mismatch, disables any register name type checks.
گزینههای زیر هنگامی که as برای یک پردازنده TMS320C6000 پیکربندی شده باشد در دسترس هستند:
- -march=arch
- Enable (only) instructions from architecture arch. By default, all
instructions are permitted.
The following values of arch are accepted: "c62x", "c64x", "c64x+", "c67x", "c67x+", "c674x".
- -mdsbt
- -mno-dsbt
- The -mdsbt option causes the assembler to generate the "Tag_ABI_DSBT" attribute with a value of 1, indicating that the code is using DSBT addressing. The -mno-dsbt option, the default, causes the tag to have a value of 0, indicating that the code does not use DSBT addressing. The linker will emit a warning if objects of different type (DSBT and non-DSBT) are linked together.
- -mpid=no
- -mpid=near
- -mpid=far
- The -mpid= option causes the assembler to generate the "Tag_ABI_PID" attribute with a value indicating the form of data addressing used by the code. -mpid=no, the default, indicates position-dependent data addressing, -mpid=near indicates position-independent addressing with GOT accesses using near DP addressing, and -mpid=far indicates position-independent addressing with GOT accesses using far DP addressing. The linker will emit a warning if objects built with different settings of this option are linked together.
- -mpic
- -mno-pic
- The -mpic option causes the assembler to generate the "Tag_ABI_PIC" attribute with a value of 1, indicating that the code is using position-independent code addressing, The "-mno-pic" option, the default, causes the tag to have a value of 0, indicating position-dependent code addressing. The linker will emit a warning if objects of different type (position-dependent and position-independent) are linked together.
- -mbig-endian
- -mlittle-endian
- Generate code for the specified endianness. The default is little-endian.
گزینههای زیر هنگامی که as برای یک پردازنده TILE-Gx پیکربندی شده باشد در دسترس هستند:
- -m32 | -m64
- Select the word size, either 32 bits or 64 bits.
- -EB | -EL
- Select the endianness, either big-endian (-EB) or little-endian (-EL).
گزینه زیر هنگامی که as برای یک پردازنده Visium پیکربندی شده باشد در دسترس است:
- -mtune=arch
- This option specifies the target architecture. If an attempt is made to
assemble an instruction that will not execute on the target architecture,
the assembler will issue an error message.
The following names are recognized: "mcm24" "mcm" "gr5" "gr6"
گزینههای زیر هنگامی که as برای یک پردازنده Xtensa پیکربندی شده باشد در دسترس هستند:
- --text-section-literals | --no-text-section-literals
- Control the treatment of literal pools. The default is --no-text-section-literals, which places literals in separate sections in the output file. This allows the literal pool to be placed in a data RAM/ROM. With --text-section-literals, the literals are interspersed in the text section in order to keep them as close as possible to their references. This may be necessary for large assembly files, where the literals would otherwise be out of range of the "L32R" instructions in the text section. Literals are grouped into pools following ".literal_position" directives or preceding "ENTRY" instructions. These options only affect literals referenced via PC-relative "L32R" instructions; literals for absolute mode "L32R" instructions are handled separately.
- --auto-litpools | --no-auto-litpools
- Control the treatment of literal pools. The default is --no-auto-litpools, which in the absence of --text-section-literals places literals in separate sections in the output file. This allows the literal pool to be placed in a data RAM/ROM. With --auto-litpools, the literals are interspersed in the text section in order to keep them as close as possible to their references, explicit ".literal_position" directives are not required. This may be necessary for very large functions, where single literal pool at the beginning of the function may not be reachable by "L32R" instructions at the end. These options only affect literals referenced via PC-relative "L32R" instructions; literals for absolute mode "L32R" instructions are handled separately. When used together with --text-section-literals, --auto-litpools takes precedence.
- --absolute-literals | --no-absolute-literals
- Indicate to the assembler whether "L32R" instructions use absolute or PC-relative addressing. If the processor includes the absolute addressing option, the default is to use absolute "L32R" relocations. Otherwise, only the PC-relative "L32R" relocations can be used.
- --target-align | --no-target-align
- Enable or disable automatic alignment to reduce branch penalties at some expense in code size. This optimization is enabled by default. Note that the assembler will always align instructions like "LOOP" that have fixed alignment requirements.
- --longcalls | --no-longcalls
- Enable or disable transformation of call instructions to allow calls across a greater range of addresses. This option should be used when call targets can potentially be out of range. It may degrade both code size and performance, but the linker can generally optimize away the unnecessary overhead when a call ends up within range. The default is --no-longcalls.
- --transform | --no-transform
- Enable or disable all assembler transformations of Xtensa instructions, including both relaxation and optimization. The default is --transform; --no-transform should only be used in the rare cases when the instructions must be exactly as specified in the assembly source. Using --no-transform causes out of range instruction operands to be errors.
- --rename-section oldname=newname
- Rename the oldname section to newname. This option can be used multiple times to rename multiple sections.
- --trampolines | --no-trampolines
- Enable or disable transformation of jump instructions to allow jumps across a greater range of addresses. This option should be used when jump targets can potentially be out of range. In the absence of such jumps this option does not affect code size or performance. The default is --trampolines.
- --abi-windowed | --abi-call0
- Choose ABI tag written to the ".xtensa.info" section. ABI tag indicates ABI of the assembly code. A warning is issued by the linker on an attempt to link object files with inconsistent ABI tags. Default ABI is chosen by the Xtensa core configuration.
گزینههای زیر هنگامی که as برای یک پردازنده Z80 پیکربندی شده باشد در دسترس هستند:
@chapter Z80 Dependent Features
گزینههای خط فرمان (Command-line Options)
- -march=CPU[-EXT...][+EXT...]
- This option specifies the target processor. The assembler will issue an
error message if an attempt is made to assemble an instruction which will
not execute on the target processor. The following processor names are
recognized: "z80",
"z180",
"ez80",
"gbz80",
"z80n",
"r800". In addition to the basic
instruction set, the assembler can be told to accept some extension
mnemonics. For example,
"-march=z180+sli+infc" extends
z180 with SLI instructions and IN F,(C). The
following extensions are currently supported:
"full" (all known instructions),
"adl" (ADL CPU mode by default, eZ80
only), "sli" (instruction known as
SLI, SLL or SL1),
"xyhl" (instructions with halves of
index registers: IXL, IXH, IYL, IYH),
"xdcb" (instructions like RotOp
(II+d),R and BitOp n,(II+d),R),
"infc" (instruction IN F,(C) or
IN (C)), "outc0" (instruction
OUT (C),0). Note that rather than extending a basic instruction
set, the extension mnemonics starting with
"-" revoke the respective functionality:
"-march=z80-full+xyhl" first removes all
default extensions and adds support for index registers halves only.
If this option is not specified then "-march=z80+xyhl+infc" is assumed.
- -local-prefix=prefix
- Mark all labels with specified prefix as local. But such label can be marked global explicitly in the code. This option do not change default local label prefix ".L", it is just adds new one.
- -colonless
- Accept colonless labels. All symbols at line begin are treated as labels.
- -sdcc
- Accept assembler code produced by SDCC.
- -fp-s=FORMAT
- Single precision floating point numbers format. Default: ieee754 (32 bit).
- -fp-d=FORMAT
- Double precision floating point numbers format. Default: ieee754 (64 bit).
همچنین ببینید (SEE ALSO)
حق نشر (COPYRIGHT)
حق نشر (c) 1991-2025 Free Software Foundation, Inc.
اجازه رونوشتبرداری، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه 1.3 یا هر نسخه پسین منتشرشده توسط بنیاد نرمافزار آزاد داده میشود؛ بدون بخشهای تغییرناپذیر، بدون متنهای روی جلد، و بدون متنهای پشت جلد. یک نسخه از مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.
| 2026-01-23 | binutils-2.45.1 |