| AS(1) | GNU Development Tools | AS(1) |
نام (NAME)
riscv32-elf-as - اسمبلر گنو برای معماری RISC-V 32-bit
خلاصه دستور (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]
[--|files ...]
هدف (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)
برنامه GNU as در واقع خانوادهای از اسمبلرها است. اگر از اسمبلر گنو در یک معماری استفاده میکنید (یا قبلاً استفاده کردهاید)، هنگام استفاده از آن در معماری دیگر باید با محیط نسبتاً مشابهی روبهرو شوید. هر نسخه اشتراکات فراوانی با سایر نسخهها دارد، از جمله قالبهای فایل شیء (object file)، بیشتر دستورالعملهای اسمبلر (که اغلب pseudo-ops یا شبهدستور نامیده میشوند) و ساختار نحوی اسمبلر.
as عمدتاً با این هدف طراحی شده است که خروجی کامپایلر سی گنو "gcc" را برای استفاده توسط لینکر "ld" اسمبل کند. با این حال، ما تلاش کردهایم کاری کنیم که as هر آنچه را که سایر اسمبلرهای همان ماشین اسمبل میکنند، بهدرستی اسمبل کند. هرگونه استثنا بهطور صریح مستند شده است. این بدان معنا نیست که as همیشه از همان ساختار نحویِ اسمبلر دیگری برای همان معماری استفاده میکند؛ برای مثال، ما چندین نسخه ناسازگار از ساختار نحوی زبان اسمبلی 680x0 را میشناسیم.
هر بار که as را اجرا میکنید، دقیقاً یک برنامه مبدأ را اسمبل میکند. برنامه مبدأ از یک یا چند فایل تشکیل شده است. (ورودی استاندارد نیز یک فایل محسوب میشود.)
شما به as یک خط فرمان میدهید که شامل صفر یا چند نام فایل ورودی است. فایلهای ورودی (از چپ به راست) خوانده میشوند. هر آرگومان خط فرمان (در هر موقعیتی) که معنای خاصی نداشته باشد، بهعنوان نام فایل ورودی در نظر گرفته میشود.
اگر هیچ نام فایلی به as ندهید، تلاش میکند یک فایل ورودی را از ورودی استاندارد as بخواند که معمولاً ترمینال شما است. ممکن است مجبور شوید ctl-D را تایپ کنید تا به as اطلاع دهید برنامه دیگری برای اسمبل کردن باقی نمانده است.
اگر لازم است که در خط فرمان خود بهطور صریح نام فایل ورودی استاندارد را ذکر کنید، از -- استفاده کنید.
اگر مبدأ خالی باشد، as یک فایل شیء کوچک و خالی تولید میکند.
as ممکن است هشدارها و پیامهای خطا را در فایل خطای استاندارد (معمولاً ترمینال شما) بنویسد. زمانی که یک کامپایلر as را بهطور خودکار اجرا میکند، این اتفاق نباید رخ دهد. هشدارها فرضی را گزارش میدهند که اتخاذ شده تا as بتواند به اسمبل کردن یک برنامه دارای ایراد ادامه دهد؛ خطاها مشکل وخیمی را گزارش میدهند که عملیات اسمبل را متوقف میکند.
اگر as را از طریق کامپایلر سی گنو فراخوانی میکنید، میتوانید از گزینه -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]
- فعالسازی فهرستبندیها (listings) به روشهای گوناگون:
- -ac
- صرفنظر کردن از شرطهای نادرست (false)
- -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
- تولید اطلاعات اشکالزدایی برای هر خط از سورس اسمبلر با استفاده از فرمت اشکالزدایی ترجیحدادهشده توسط هدف. این مورد در حال حاضر به معنای STABS، ECOFF یا DWARF2 است. هنگامی که فرمت اشکالزدایی DWARF باشد، بخشهای ".debug_info" و ".debug_line" تنها زمانی منتشر میشوند که فایل اسمبلی خودش آنها را تولید نکرده باشد.
- --gstabs
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسمبلر. در صورتی که اشکالزدا بتواند آن را پردازش کند، این گزینه ممکن است به اشکالزدایی کد اسمبلی کمک کند.
- --gstabs+
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسمبلر، همراه با پسوندهای GNU که احتمالاً فقط gdb میتواند آنها را مدیریت کند و ممکن است باعث خرابی سایر اشکالزداها یا خودداری آنها از خواندن برنامه شما شود. این گزینه ممکن است به اشکالزدایی کد اسمبلی کمک کند. در حال حاضر تنها پسوند GNU، مکان دایرکتوری کاری فعلی در زمان اسمبل کردن است.
- --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 در صورت عدم وجود یادداشتهای ویژگی ساخت GNU در منابع ورودی، باید آنها را تولید کند یا خیر. پیشفرض را میتوان با گزینه پیکربندی --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 section) در بخش متن (text section).
- --reduce-memory-overheads
- نادیده گرفته میشود. برای سازگاری با ابزارهایی پشتیبانی میشود که گزینه یکسانی را به هر دو برنامه اسمبلر و پیونددهنده ارسال میکنند.
- --scfi=experimental
- این گزینه
کنترل
میکند که
آیا اسمبلر
باید برای
ورودی
دستنویس CFI
تولید کند
یا خیر. اگر
ورودی از
قبل شامل
برخی
دستورالعملهای
CFI قابل
تولید
باشد،
اسمبلر
آنها را
نادیده
گرفته و یک
هشدار صادر
میکند.
توجه داشته
باشید که
"--scfi=experimental"
برای
استفاده در
کدهای
تولیدشده
توسط
کامپایلر،
از جمله
اسمبلی
درونخطی
در نظر
گرفته نشده
است. این
پشتیبانی
آزمایشی
کاری در حال
پیشرفت است.
تنها System V AMD64 ABI
پشتیبانی
میشود.
هر تابع ورودی در اسمبلی باید با دستورالعمل ".type" آغاز شود و در حالت ایدهآل باید با استفاده از یک دستورالعمل ".size" خاتمه یابد. هنگام استفاده از SCFI، هر دستورالعمل ".type" باعث میشود GAS یک FDE جدید (یا همان Function Descriptor Entry) را آغاز کند. این بدان معناست که با هر دستورالعمل ".type"، بلوک قبلی از دستورالعملها (در صورت وجود) به عنوان یک FDE مجزا نهایی میشود.
- --sectname-subst
- اعمال توالیهای جایگزینی در نام بخشها.
- --size-check=error
- --size-check=warning
- صادر کردن یک خطا یا هشدار برای دستورالعمل نامعتبر ELF .size.
- --statistics
- چاپ حداکثر فضای استفادهشده (به بایت) و کل زمان صرفشده (به ثانیه) توسط اسمبلر.
- --strip-local-absolute
- حذف نمادهای مطلق محلی از جدول نمادهای خروجی.
- -v
- --verbose
- چاپ نسخه as.
- --version
- -version
- نسخهٔ as را چاپ کرده و خارج میشود.
- -W
- --no-warn
- از نمایش پیامهای هشدار جلوگیری میکند.
- --warn
- پیامهای هشدار را نادیده نمیگیرد و آنها را خطا نیز تلقی نمیکند.
- --fatal-warnings
- با هشدارها به عنوان خطا برخورد میکند.
- -w
- نادیده گرفته میشود.
- -x
- نادیده گرفته میشود.
- -Z
- حتی پس از بروز خطا نیز یک فایل شیء (object file) تولید میکند.
- -- | 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" و
"cortex-x4". نام
ویژهٔ
"all"
میتواند
به کار رود
تا به
اسمبلر
اجازه دهد
دستورهای
معتبر برای
هر
پردازندهٔ
پشتیبانیشده،
شامل تمام
افزونههای
اختیاری را
بپذیرد.
علاوه بر مجموعه دستورالعمل پایه، میتوان به اسمبلر اعلام کرد یادافزارهای (mnemonics) افزونههای گوناگونی را که قابلیتهای پردازنده را گسترش میدهند، بپذیرد یا محدود کند.
اگر برخی پیادهسازیهای یک پردازندهٔ خاص بتوانند افزونهای داشته باشند، آن افزونهها به طور خودکار فعال میشوند. در نتیجه، در حالت عادی نیازی به مشخص کردن هیچ افزونهٔ اضافی نخواهید داشت.
- -march=architecture[+extension...]
- این گزینه
معماری
مقصد را
مشخص
میکند. در
صورتی که
تلاشی برای
اسمبل کردن
دستوری
انجام شود
که روی
معماری
مقصد قابل
اجرا نیست،
اسمبلر یک
پیام خطا
صادر خواهد
کرد.
نامهای
معماری زیر
شناختهشده
هستند:
"armv8-a"،
"armv8.1-a"،
"armv8.2-a"،
"armv8.3-a"،
"armv8.4-a"،
"armv8.5-a"،
"armv8.6-a"،
"armv8.7-a"،
"armv8.8-a"،
"armv8.9-a"،
"armv8-r"،
"armv9-a"،
"armv9.1-a"،
"armv9.2-a"،
"armv9.3-a"،
"armv9.4-a" و
"armv9.5-a".
اگر هر دو گزینهٔ -mcpu و -march مشخص شده باشند، اسمبلر از تنظیمات -mcpu استفاده خواهد کرد. در صورت مشخص نشدن هیچکدام، مقدار پیشفرض اسمبلر -mcpu=all خواهد بود.
گزینهٔ معماری را میتوان با همان گزینههای افزونهٔ مجموعه دستورالعمل که برای گزینهٔ -mcpu وجود دارند گسترش داد. بر خلاف -mcpu، افزونهها همیشه به طور پیشفرض فعال نیستند.
- -mverbose-error
- این گزینه پیامهای خطای تفصیلی (verbose) را برای gas در معماری AArch64 فعال میکند. این گزینه به طور پیشفرض فعال است.
- -mno-verbose-error
- این گزینه پیامهای خطای تفصیلی را در gas برای معماری AArch64 غیرفعال میکند.
- -menable-sysreg-checking
- این گزینه پیامهای خطایی را فعال میکند که در صورت تلاش برای اسمبل کردن دسترسی به ثبات سیستمی که روی معماری مقصد اجرا نمیشود، صادر میگردند.
گزینههای زیر هنگامی که as برای یک پردازندهٔ Alpha پیکربندی شده باشد، در دسترس هستند.
- -mcpu
- این گزینه
پردازندهٔ
مقصد را
مشخص
میکند. در
صورتی که
تلاشی برای
اسمبل کردن
دستوری
انجام شود
که روی
پردازندهٔ
مقصد قابل
اجرا نیست،
اسمبلر
ممکن است
دستور را به
صورت یک
ماکرو بسط
دهد یا یک
پیام خطا
صادر کند.
این گزینه
معادل با
دستورالعمل
(directive) ".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 (بوتلودر Linux ARC)، نامهای پردازندهٔ شمارهدار (مانند 21064) دستورهای PALcode خاص آن پردازنده را فعال میکنند، در حالی که نامهای «electro-vlasic» (مانند "ev4") این کار را انجام نمیدهند.
- -mdebug
- -no-mdebug
- تولید کپسولهسازی ".mdebug" را برای دستورالعملهای stabs و توصیفکنندههای رویه فعال یا غیرفعال میکند. پیشفرض این است که با مشاهدهٔ نخستین دستورالعمل stabs، به طور خودکار ".mdebug" فعال شود.
- -relax
- این گزینه به جای صرفهجویی در فضا و حلوفصل برخی بازنشانیها (relocations) در زمان اسمبل، اجبار میکند که همهٔ بازنشانیها درون فایل شیء قرار گیرند. توجه داشته باشید که این گزینه همهٔ محاسبات نمادها را به فایل شیء منتقل نمیکند، زیرا همهٔ محاسبات نمادی قابل بازنمایی نیستند. با این وجود، این گزینه میتواند در کاربردهای خاص مفید باشد.
- -replace
- -noreplace
- بهینهسازی فراخوانیهای رویه را، هم در زمان اسمبل و هم در زمان پیوند، فعال یا غیرفعال میکند. این گزینهها فقط برای مقاصد VMS در دسترس هستند و "-replace" حالت پیشفرض است. به بخش 1.4.1 راهنمای OpenVMS Linker Utility مراجعه کنید.
- -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" و "bf592".
- -mfdpic
- اسمبل کردن برای ABI مربوط به FDPIC.
- -mno-fdpic
- -mnopic
- غیرفعال کردن -mfdpic.
گزینههای زیر هنگامی در دسترس هستند که as برای خانوادهٔ پردازندههای BPF هستهٔ لینوکس پیکربندی شده باشد.
@chapter قابلیتهای وابسته به BPF
گزینههای BPF (BPF Options)
- -EB
- این گزینه مشخص میکند که اسمبلر باید eBPF از نوع big-endian تولید کند.
- -EL
- این گزینه مشخص میکند که اسمبلر باید eBPF از نوع little-endian تولید کند.
- -mdialect=dialect
- این گزینه گویش زبان اسمبلی را برای شناسایی در حین اسمبل کردن مشخص میکند. اسمبلر از normal و pseudoc پشتیبانی میکند.
- -misa-spec=spec
- این گزینه
نسخهٔ
مجموعه
دستورالعملهای
BPF را برای
استفاده
هنگام
اسمبل کردن
مشخص
میکند.
نسخههای ISA
پشتیبانیشده
برای BPF شامل
v1، v2، v3 و v4
هستند.
مقدار xbpf میتواند برای شناسایی دستورالعملهای اضافی که توسط GCC برای مقاصد آزمایشی استفاده میشوند مشخص گردد. اما توجه داشته باشید که این یک BPF معتبر نیست.
- -mno-relax
- این گزینه به اسمبلر اعلام میکند که دستورالعملها را سادهسازی نکند.
توجه داشته باشید که اگر هیچ گزینهٔ endianness در خط فرمان مشخص نشده باشد، از endianness میزبان استفاده میشود. برای مستندات مربوط به گزینههای مختص CRIS، به صفحات info مراجعه کنید.
گزینههای زیر هنگامی در دسترس هستند که as برای خانوادهٔ پردازندههای C-SKY پیکربندی شده باشد.
- -march=archname
- اسمبل کردن برای معماری archname. گزینهٔ --help فهرست مقادیر معتبر برای archname را نمایش میدهد.
- -mcpu=cpuname
- اسمبل کردن برای معماری cpuname. گزینهٔ --help فهرست مقادیر معتبر برای cpuname را نمایش میدهد.
- -EL
- -mlittle-endian
- تولید خروجی little-endian.
- -EB
- -mbig-endian
- تولید خروجی big-endian.
- -fpic
- -pic
- تولید کد مستقل از موقعیت (position-independent code).
- -mljump
- -mno-ljump
- فعال/غیرفعال کردن تبدیل دستورالعملهای پرش کوتاه "jbf"، "jbt" و "jbr" به "jmpi". این گزینه فقط برای پردازندههای V2 است. در اهداف CK801 و CK802 که از دستورالعمل "jmpi" پشتیبانی نمیکنند نادیده گرفته میشود و برای سایر پردازندهها بهطور پیشفرض فعال است.
- -mbranch-stub
- -mno-branch-stub
- انتقال
بازنشانیهای
"R_CKCORE_PCREL_IMM26BY2"
برای
دستورالعملهای
"bsr" به
پیونددهنده.
این گزینه تنها برای اهداف bare-metal از نوع C-SKY V2 ELF در دسترس است، جایی که بهطور پیشفرض فعال میباشد. این گزینه نمیتواند در کدی استفاده شود که بهصورت پویا با کتابخانههای مشترک پیوند میخورد.
- -force2bsr
- -mforce2bsr
- -no-force2bsr
- -mno-force2bsr
- فعال/غیرفعال کردن تبدیل دستورالعملهای "jbsr" به "bsr". این گزینه برای مقصدهای CK801/CK802 همیشه فعال است (و -mno-force2bsr نادیده گرفته میشود). همچنین زمانی که -mbranch-stub برقرار باشد نیز همواره فعال است.
- -jsri2bsr
- -mjsri2bsr
- -no-jsri2bsr
- -mno-jsri2bsr
- فعال/غیرفعال کردن تبدیل دستورالعملهای "jsri" به "bsr". این گزینه بهطور پیشفرض فعال است.
- -mnolrw
- -mno-lrw
- فعال/غیرفعال کردن تبدیل دستورالعملهای "lrw" به یک جفت "movih"/"ori".
- -melrw
- -mno-elrw
- فعال/غیرفعال کردن دستورالعملهای گسترشیافتهٔ "lrw". این گزینه بهطور پیشفرض برای پردازندههای سری CK800 فعال است.
- -mlaf
- -mliterals-after-func
- -mno-laf
- -mno-literals-after-func
- فعال/غیرفعال کردن قرارگیری استخرهای مقادیر ثابت (literal pools) پس از هر تابع.
- -mlabr
- -mliterals-after-br
- -mno-labr
- -mnoliterals-after-br
- فعال/غیرفعال کردن قرارگیری استخرهای مقادیر ثابت (literal pools) پس از انشعابهای غیرشرطی. این گزینه بهطور پیشفرض فعال است.
- -mistack
- -mno-istack
- فعال/غیرفعال کردن دستورالعملهای پشتهٔ وقفه (interrupt stack). این گزینه بهطور پیشفرض در پردازندههای CK801، CK802 و CK802 فعال است.
گزینههای زیر برخی دستورالعملهای اختیاری را بهطور صریح فعال میکنند. این قابلیتها همچنین با استفاده از "-mcpu=" برای مشخص کردن پردازندهای که از آنها پشتیبانی میکند، بهطور ضمنی فعال میشوند.
- -mhard-float
- فعال کردن دستورالعملهای ممیز شناور سختافزاری (hard float).
- -mmp
- فعال کردن دستورالعملهای چندپردازندهای.
- -mcp
- فعال کردن دستورالعملهای کمکپردازنده.
- -mcache
- فعال کردن دستورالعمل پیشواکشی کِش (cache prefetch).
- -msecurity
- فعال کردن دستورالعملهای امنیتی C-SKY.
- -mtrust
- فعال کردن دستورالعملهای اعتماد (trust) در C-SKY.
- -mdsp
- فعال کردن دستورالعملهای DSP.
- -medsp
- فعال کردن دستورالعملهای DSP بهبودیافته.
- -mvdsp
- فعال کردن دستورالعملهای DSP برداری.
گزینههای زیر زمانی در دسترس هستند که as برای یک پردازندهٔ Epiphany پیکربندی شده باشد.
- -mepiphany
- مشخص میکند که هر دو دسته دستورالعملهای ۳۲ و ۱۶ بیتی مجاز هستند. این رفتار پیشفرض است.
- -mepiphany16
- دستورالعملهای مجاز را تنها به مجموعهٔ ۱۶ بیتی محدود میکند.
گزینههای زیر زمانی در دسترس هستند که as برای یک پردازندهٔ H8/300 پیکربندی شده باشد. @chapter ویژگیهای وابسته به H8/300
گزینهها (Options)
نسخهٔ Renesas H8/300 از "as" دارای یک گزینهٔ وابسته به ماشین است:
- -h-tick-hex
- پشتیبانی از ثابتهای هگزادسیمال به سبک H'00 علاوه بر سبک 0x00.
- -mach=name
- گونهٔ ماشین H8300 را تعیین میکند. نامهای ماشین زیر شناخته میشوند: "h8300h", "h8300hn", "h8300s", "h8300sn", "h8300sx" و "h8300sxn".
گزینههای زیر زمانی در دسترس هستند که as برای یک پردازندهٔ i386 پیکربندی شده باشد.
- --32 | --x32 | --64
- انتخاب
اندازهٔ
کلمه (word size)، یا
۳۲ بیت یا
۶۴ بیت. --32
بیانگر
معماری Intel i386
است، در
حالی که --x32 و
--64
بهترتیب
بیانگر
معماری AMD x86-64
با اندازهٔ
کلمهٔ ۳۲
بیتی یا ۶۴
بیتی هستند.
این گزینهها فقط با قالب فایل شیء (object file) از نوع ELF در دسترس هستند، و مستلزم آنند که پشتیبانی BFD لازم گنجانده شده باشد (در یک پلتفرم ۳۲ بیتی باید --enable-64-bit-bfd را به configure اضافه کنید تا استفاده از ۶۴ بیت فعال شود و از x86-64 به عنوان پلتفرم مقصد استفاده گردد).
- -n
- بهطور پیشفرض، x86 GAS چندین دستور nop متوالی را که برای ترازسازی در بخشهای کد استفاده میشوند با دستورهای nop چندبایتی مانند leal 0(%esi,1),%esi جایگزین میکند. این سوییچ در صورتی که یک بایت تکی nop (0x90) بهطور صریح به عنوان بایت پرکننده برای ترازسازی مشخص شده باشد، این بهینهسازی را غیرفعال میکند.
- --divide
- در پلتفرمهای مشتق از SVR4، نویسهٔ / به عنوان نویسهٔ کامنت در نظر گرفته میشود، بدین معنی که نمیتوان از آن در عبارتها استفاده کرد. گزینهٔ --divide نویسهٔ / را به یک نویسهٔ عادی تبدیل میکند. این گزینه / را در ابتدای خطی که یک کامنت را آغاز میکند غیرفعال نمیسازد، و بر استفاده از # برای آغاز کامنت نیز تأثیری ندارد.
- -march=CPU[+EXTENSION...]
- این گزینه
پردازندهٔ
مقصد را
تعیین
میکند. اگر
تلاشی برای
اسمبل کردن
دستورالعملی
صورت گیرد
که بر روی
پردازندهٔ
مقصد اجرا
نمیشود،
اسمبلر یک
پیام خطا
صادر خواهد
کرد. نام
پردازندههای
زیر شناخته
میشوند:
"i8086",
"i186",
"i286",
"i386",
"i486",
"i586",
"i686",
"pentium",
"pentiumpro",
"pentiumii",
"pentiumiii",
"pentium4",
"prescott",
"nocona",
"core",
"core2",
"corei7",
"iamcu",
"k6",
"k6_2",
"athlon",
"opteron",
"k8",
"amdfam10",
"bdver1",
"bdver2",
"bdver3",
"bdver4",
"znver1",
"znver2",
"znver3",
"znver4",
"znver5",
"btver1",
"btver2",
"generic32" و
"generic64".
علاوه بر مجموعه دستورالعملهای پایه، میتوان به اسمبلر اعلام کرد که نمادهای یادافزای (mnemonics) افزونههای مختلف را بپذیرد. برای نمونه، "-march=i686+sse4+vmx" پردازندهٔ i686 را با sse4 و vmx گسترش میدهد. افزونههای زیر در حال حاضر پشتیبانی میشوند: 8087, 287, 387, 687, "cmov", "fxsr", "mmx", "sse", "sse2", "sse3", "sse4a", "ssse3", "sse4.1", "sse4.2", "sse4", "avx", "avx2", "lahf_sahf", "monitor", "adx", "rdseed", "prfchw", "smap", "mpx", "sha", "rdpid", "ptwrite", "cet", "gfni", "vaes", "vpclmulqdq", "prefetchwt1", "clflushopt", "se1", "clwb", "movdiri", "movdir64b", "enqcmd", "serialize", "tsxldtrk", "kl", "widekl", "hreset", "avx512f", "avx512cd", "avx512er", "avx512pf", "avx512vl", "avx512bw", "avx512dq", "avx512ifma", "avx512vbmi", "avx512_4fmaps", "avx512_4vnniw", "avx512_vpopcntdq", "avx512_vbmi2", "avx512_vnni", "avx512_bitalg", "avx512_vp2intersect", "tdx", "avx512_bf16", "avx_vnni", "avx512_fp16", "prefetchi", "avx_ifma", "avx_vnni_int8", "cmpccxadd", "wrmsrns", "msrlist", "avx_ne_convert", "rao_int", "fred", "lkgs", "avx_vnni_int16", "sha512", "sm3", "sm4", "pbndkb", "avx10.1", "avx10.1/512", "avx10.1/256", "avx10.1/128", "user_msr", "msr_imm", "apx_f", "avx10.2", "avx10.2/512", "avx10.2/256", "avx10.2/128", "movrs", "amx_int8", "amx_bf16", "amx_fp16", "amx_complex", "amx_transpose", "amx_tf32", "amx_fp8" "amx_movrs", "amx_avx512", "amx_tile", "vmx", "vmfunc", "smx", "xsave", "xsaveopt", "xsavec", "xsaves", "aes", "pclmul", "fsgsbase", "rdrnd", "f16c", "bmi2", "fma", "movbe", "ept", "lzcnt", "popcnt", "hle", "rtm", "tsx", "invpcid", "clflush", "mwaitx", "clzero", "wbnoinvd", "pconfig", "waitpkg", "uintr", "cldemote", "rdpru", "mcommit", "sev_es", "lwp", "fma4", "xop", "cx16", "syscall", "rdtscp", "3dnow", "3dnowa", "sse4a", "sse5", "snp", "invlpgb", "tlbsync", "rmpquery", "rmpread", "svme", "gmism2", "gmiccs", "padlockrng2", "padlockphe2", "padlockxmodx" و "padlock". توجه داشته باشید که این نمادهای یادافزای افزونه را میتوان با پیشوند "no" به کار برد تا قابلیت مربوطه (و هر قابلیت وابسته به آن) لغو شود. همچنین توجه داشته باشید که پسوندهای مجاز در "-march=avx10.<N>" یک محدودیت بر طول بردار اعمال میکنند؛ یعنی با وجود اینکه این گزینهها معمولاً «فعالکننده» هستند، استفاده از این پسوندها تمامی دستورالعملهایی (insns) را که دارای عملوندهای ثبات برداری یا ماسک عریضتر هستند غیرفعال خواهد کرد.
هنگامی که رهنمود ".arch" همراه با -march استفاده شود، رهنمود ".arch" اولویت خواهد داشت.
- -mtune=CPU
- این گزینه
پردازندهای
را برای
بهینهسازی
مشخص
میکند.
هنگام
استفاده
همراه با
گزینه -march،
تنها
دستورالعملهای
پردازنده
مشخصشده
توسط گزینه
-march تولید
خواهند شد.
مقادیر معتبر CPU دقیقاً مشابه فهرست پردازندههای -march=CPU است.
- -moperand-check=none
- -moperand-check=warning
- -moperand-check=error
- این گزینهها بررسی عملوندهای خاص یا ترکیب عملوندها توسط اسمبلر را کنترل میکنند. به عنوان مثال دستورالعملهایی که اندازه عملوند در آنها نمیتواند از عملوندهایش استنباط شود و همچنین توسط پسوند دستورالعمل نیز مشخص نشده است. -moperand-check=none باعث میشود که اسمبلر این بررسیها را انجام ندهد. -moperand-check=warning در صورت شکست بررسیهای مربوطه، هشداری صادر میکند که حالت پیشفرض است. -moperand-check=error در صورت شکست بررسیهای مربوطه، باعث صدور خطا از سوی اسمبلر خواهد شد.
- -msse2avx
- این گزینه مشخص میکند که اسمبلر باید دستورالعملهای SSE را با پیشوند VEX کدگذاری کند، که این امر نیازمند در دسترس بودن AVX است. دستورالعملهای SSE که از GPRهای گسترشیافته استفاده میکنند، با پیشوند EVEX کدگذاری خواهند شد که نیازمند در دسترس بودن AVX512 یا AVX10 است.
- -muse-unaligned-vector-move
- این گزینه مشخص میکند که اسمبلر باید انتقالهای برداری همتراز (aligned) را به عنوان انتقالهای برداری ناهمتراز (unaligned) کدگذاری کند.
- -msse-check=none
- -msse-check=warning
- -msse-check=error
- این گزینهها بررسی دستورالعملهای SSE توسط اسمبلر را کنترل میکنند. -msse-check=none باعث میشود اسمبلر دستورالعملهای SSE را بررسی نکند، که حالت پیشفرض است. -msse-check=warning باعث میشود اسمبلر برای هر دستورالعمل SSE یک هشدار صادر کند. -msse-check=error باعث میشود اسمبلر برای هر دستورالعمل SSE یک خطا صادر نماید.
- -mavxscalar=128
- -mavxscalar=256
- این
گزینهها
چگونگی
کدگذاری
دستورالعملهای
اسکالر AVX
توسط
اسمبلر را
کنترل
میکنند.
-mavxscalar=128
دستورالعملهای
اسکالر AVX را
با طول
بردار ۱۲۸
بیتی
کدگذاری
میکند که
حالت
پیشفرض
است. -mavxscalar=256
دستورالعملهای
اسکالر AVX را
با طول
بردار ۲۵۶
بیتی
کدگذاری
خواهد کرد.
هشدار: از این گزینه برای کدهای محیط عملیاتی استفاده نکنید - به دلیل اشکالات پردازنده (CPU errata)، کد حاصل ممکن است بر روی مدلهای خاصی کار نکند.
- -mvexwig=0
- -mvexwig=1
- این
گزینهها
چگونگی
کدگذاری
دستورالعملهای
VEX
نادیدهگیرندهٔ
VEX.W (موسوم به WIG)
توسط
اسمبلر را
کنترل
میکنند.
-mvexwig=0
دستورالعملهای
WIG VEX را با vex.w = 0
کدگذاری
میکند که
حالت
پیشفرض
است. -mvexwig=1
دستورالعملهای
WIG EVEX را با vex.w = 1
کدگذاری
خواهد کرد.
هشدار: از این گزینه برای کدهای محیط عملیاتی استفاده نکنید - به دلیل اشکالات پردازنده (CPU errata)، کد حاصل ممکن است بر روی مدلهای خاصی کار نکند.
- -mevexlig=128
- -mevexlig=256
- -mevexlig=512
- این گزینهها چگونگی کدگذاری دستورالعملهای EVEX نادیدهگیرندهٔ طول (موسوم به LIG) توسط اسمبلر را کنترل میکنند. -mevexlig=128 دستورالعملهای LIG EVEX را با طول بردار ۱۲۸ بیتی کدگذاری میکند که حالت پیشفرض است. -mevexlig=256 و -mevexlig=512 دستورالعملهای LIG EVEX را به ترتیب با طول بردار ۲۵۶ بیتی و ۵۱۲ بیتی کدگذاری خواهند کرد.
- -mevexwig=0
- -mevexwig=1
- این گزینهها چگونگی کدگذاری دستورالعملهای EVEX نادیدهگیرندهٔ w (موسوم به WIG) توسط اسمبلر را کنترل میکنند. -mevexwig=0 دستورالعملهای WIG EVEX را با evex.w = 0 کدگذاری میکند که حالت پیشفرض است. -mevexwig=1 دستورالعملهای WIG EVEX را با evex.w = 1 کدگذاری خواهد کرد.
- -mmnemonic=att
- -mmnemonic=intel
- این گزینه یادافزار (mnemonic) دستورالعمل را برای تطبیق دستورالعملها مشخص میکند. دستورهای ".att_mnemonic" و ".intel_mnemonic" اولویت خواهند داشت.
- -msyntax=att
- -msyntax=intel
- این گزینه نحو (syntax) دستورالعمل را هنگام پردازش دستورالعملها مشخص میکند. دستورهای ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
- -mnaked-reg
- این گزینه مشخص میکند که ثباتها نیازی به پیشوند % ندارند. دستورهای ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
- -madd-bnd-prefix
- این گزینه اسمبلر را مجبور میکند تا پیشوند BND را به تمام انشعابها اضافه کند، حتی اگر چنین پیشوندی به صورت صریح در کد منبع مشخص نشده باشد.
- -mno-shared
- در مقصد ELF، اسمبلر به طور معمول بازنشانیهای غیر PLT را برای مقصدهای انشعاب سراسری غیر ضعیف (non-weak) تعریفشده با پدیداری پیشفرض، حذف و بهینهسازی میکند. گزینه -mshared به اسمبلر اعلام میکند کدی تولید کند که ممکن است در یک کتابخانه مشترک قرار گیرد، جایی که تمام مقصدهای انشعاب سراسری غیر ضعیف با پدیداری پیشفرض قابل پیشدستی (preempt) هستند. کد حاصل کمی حجیمتر خواهد بود. این گزینه تنها بر مدیریت دستورالعملهای انشعاب اثر میگذارد.
- -mbig-obj
- در مقصد PE/COFF، این گزینه استفاده از قالب پرونده شیء بزرگ (big object) را اجباری میکند که امکان استفاده از بیش از ۳۲۷۶۸ بخش را فراهم میسازد.
- -momit-lock-prefix=no
- -momit-lock-prefix=yes
- این گزینهها چگونگی کدگذاری پیشوند lock توسط اسمبلر را کنترل میکنند. این گزینه به عنوان راهکاری برای پردازندههایی که با پیشوند lock دچار مشکل میشوند در نظر گرفته شده است. این گزینه تنها میتواند با اطمینان در رایانههای تکهستهای و تکرشتهای استفاده شود. -momit-lock-prefix=yes تمام پیشوندهای lock را حذف خواهد کرد. -momit-lock-prefix=no پیشوند lock را مانند گذشته کدگذاری میکند که حالت پیشفرض است.
- -mfence-as-lock-add=no
- -mfence-as-lock-add=yes
- این گزینهها نحوه کدگذاری 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 را طبق معمول کدگذاری خواهد کرد که حالت پیشفرض است.
- -mrelax-relocations=no
- -mrelax-relocations=yes
- این گزینهها کنترل میکنند که آیا اسمبلر باید بازنشانیهای تعدیلپذیر (relax relocations)، یعنی R_386_GOT32X در حالت ۳۲ بیتی یا R_X86_64_GOTPCRELX و R_X86_64_REX_GOTPCRELX در حالت ۶۴ بیتی را تولید کند یا خیر. -mrelax-relocations=yes بازنشانیهای relax را تولید میکند. -mrelax-relocations=no بازنشانیهای relax را تولید نخواهد کرد. حالت پیشفرض را میتوان با گزینه پیکربندی --enable-x86-relax-relocations کنترل نمود.
- -mtls-check=no
- -mtls-check=yes
- این گزینهها کنترل میکنند که آیا اسمبلر بازنشانی tls را بررسی کند یا خیر. -mtls-check=yes بازنشانی tls را بررسی خواهد کرد. -mtls-check=no بازنشانی tls را بررسی نخواهد کرد. حالت پیشفرض را میتوان با گزینه پیکربندی --enable-x86-tls-check کنترل نمود.
- -malign-branch-boundary=NUM
- این گزینه نحوه همترازی انشعابها توسط اسمبلر با استفاده از پیشوندهای بخش یا NOP را کنترل میکند. NUM باید توانی از ۲ باشد؛ این مقدار باید ۰ یا مقداری بزرگتر یا مساوی ۱۶ باشد. انشعابها در محدوده مرز بایتی NUM همتراز خواهند شد. -malign-branch-boundary=0 که حالت پیشفرض است، انشعابها را همتراز نمیکند.
- -malign-branch=TYPE[+TYPE...]
- این گزینه انواع انشعابها را برای همترازی مشخص میکند. TYPE ترکیبی از jcc (که پرشهای شرطی را همتراز میکند)، fused (که پرشهای شرطی ادغامشده را همتراز میکند)، jmp (که پرشهای غیرشرطی را همتراز میکند)، call (که فراخوانیها را همتراز میکند)، ret (که دستورهای بازگشت را همتراز میکند) و indirect (که پرشها و فراخوانیهای غیرمستقیم را همتراز میکند) است. مقدار پیشفرض -malign-branch=jcc+fused+jmp است.
- -malign-branch-prefix-size=NUM
- این گزینه بیشینهٔ تعداد پیشوندهای روی یک دستورالعمل را برای تراز کردن انشعابها مشخص میکند. NUM باید بین 0 و 5 باشد. مقدار پیشفرض NUM برابر 5 است.
- -mbranches-within-32B-boundaries
- این گزینه پرشهای شرطی، پرشهای شرطی ادغامشده (fused) و پرشهای غیرشرطی را درون مرز ۳۲ بایتی با حداکثر ۵ پیشوند سگمنت روی یک دستورالعمل تراز میکند. این گزینه معادل موارد زیر است: -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. حالت پیشفرض انشعابها را تراز نمیکند.
- -mlfence-after-load=no
- -mlfence-after-load=yes
- این گزینهها کنترل میکنند که آیا اسمبلر پس از دستورالعملهای بارگذاری (load) باید lfence تولید کند یا خیر. گزینهٔ -mlfence-after-load=yes دستور lfence را تولید خواهد کرد. گزینهٔ -mlfence-after-load=no دستور lfence را تولید نخواهد کرد، که حالت پیشفرض است.
- -mlfence-before-indirect-branch=none
- -mlfence-before-indirect-branch=all
- -mlfence-before-indirect-branch=register
- -mlfence-before-indirect-branch=memory
- این گزینهها کنترل میکنند که آیا اسمبلر پیش از دستورالعملهای انشعاب نزدیک غیرمستقیم (indirect near branch) باید lfence تولید کند یا خیر. گزینهٔ -mlfence-before-indirect-branch=all پیش از انشعاب نزدیک غیرمستقیم از طریق ثبات lfence تولید کرده و پیش از انشعاب نزدیک غیرمستقیم از طریق حافظه یک هشدار صادر میکند. همچنین هنگامی که هیچ -mlfence-before-ret= صریحی مشخص نشده باشد، این گزینه بهطور ضمنی -mlfence-before-ret=shl را تنظیم میکند. گزینهٔ -mlfence-before-indirect-branch=register پیش از انشعاب نزدیک غیرمستقیم از طریق ثبات lfence تولید خواهد کرد. گزینهٔ -mlfence-before-indirect-branch=memory پیش از انشعاب نزدیک غیرمستقیم از طریق حافظه یک هشدار صادر خواهد کرد. گزینهٔ -mlfence-before-indirect-branch=none نه lfence تولید کرده و نه هشداری صادر میکند، که حالت پیشفرض است. توجه داشته باشید که با تنظیم -mlfence-after-load=yes، پیش از انشعاب نزدیک غیرمستقیم از طریق ثبات lfence تولید نخواهد شد، زیرا lfence پس از بارگذاری ثبات مقصدِ انشعاب تولید میشود.
- -mlfence-before-ret=none
- -mlfence-before-ret=shl
- -mlfence-before-ret=or
- -mlfence-before-ret=yes
- -mlfence-before-ret=not
- این گزینهها کنترل میکنند که آیا اسمبلر پیش از ret باید lfence تولید کند یا خیر. گزینهٔ -mlfence-before-ret=or دستور or را همراه با lfence تولید میکند. گزینهٔ -mlfence-before-ret=shl/yes دستور shl را همراه با lfence تولید میکند. گزینهٔ -mlfence-before-ret=not دستور not را همراه با lfence تولید میکند. گزینهٔ -mlfence-before-ret=none دستور lfence را تولید نخواهد کرد، که حالت پیشفرض است.
- -mx86-used-note=no
- -mx86-used-note=yes
- این گزینهها کنترل میکنند که آیا اسمبلر باید یادداشتهای ویژگیهای گنو (GNU property notes) شامل GNU_PROPERTY_X86_ISA_1_USED و GNU_PROPERTY_X86_FEATURE_2_USED را تولید کند یا خیر. حالت پیشفرض میتواند توسط گزینهٔ پیکربندی --enable-x86-used-note کنترل شود.
- -mevexrcig=rne
- -mevexrcig=rd
- -mevexrcig=ru
- -mevexrcig=rz
- این گزینهها نحوهٔ کُدگذاری دستورالعملهای EVEX فقط-SAE (SAE-only) را توسط اسمبلر کنترل میکنند. گزینهٔ -mevexrcig=rne بیتهای RC دستورالعمل EVEX را با 00 کُدگذاری میکند، که حالت پیشفرض است. گزینههای -mevexrcig=rd، -mevexrcig=ru و -mevexrcig=rz دستورالعملهای EVEX فقط-SAE را به ترتیب با بیتهای RC مقدار 01، 10 و 11 کُدگذاری خواهند کرد.
- -mamd64
- -mintel64
- این گزینه مشخص میکند که اسمبلر در حالت ۶۴ بیتی باید فقط معماری مجموعه دستورالعملهای (ISA) مربوط به AMD64 یا Intel64 را بپذیرد. حالت پیشفرض، پذیرش مجموعههای دستورهای مشترک، فقط Intel64 و AMD64 است.
- -O0 | -O | -O1 | -O2 | -Os
- بهینهسازی
کُدگذاری
دستورالعملها
با اندازهٔ
کوچکتر
دستورالعمل.
گزینههای
-O و -O1
دستورالعملهای
بارگذاری
ثبات ۶۴
بیتی با
مقدار
بیدرنگ ۶۴
بیتی را به
صورت
دستورالعملهای
بارگذاری
ثبات ۳۲
بیتی با
مقادیر
بیدرنگ ۳۱
بیتی یا ۳۲
بیتی
کُدگذاری
میکنند،
دستورالعملهای
صفر کردن
ثبات ۶۴
بیتی را با
دستورالعملهای
صفر کردن
ثبات ۳۲
بیتی
کُدگذاری
میکنند،
دستورالعملهای
صفر کردن
ثبات
برداری ۲۵۶
بیتی/۵۱۲
بیتی VEX/EVEX را
با
دستورالعملهای
صفر کردن
ثبات
برداری ۱۲۸
بیتی VEX
کُدگذاری
میکنند،
دستورالعملهای
بارگذاری/ذخیرهٔ
ثبات
برداری ۱۲۸
بیتی/۲۵۶
بیتی EVEX را با
دستورالعملهای
بارگذاری/ذخیرهٔ
ثبات
برداری VEX
کُدگذاری
میکنند، و
دستورالعملهای
منطقی صحیح
بستهبندیشدهٔ
(packed integer) ۱۲۸
بیتی/۲۵۶
بیتی EVEX را با
دستورالعملهای
منطقی صحیح
بستهبندیشدهٔ
۱۲۸
بیتی/۲۵۶
بیتی VEX
کُدگذاری
میکنند.
گزینهٔ -O2 شامل بهینهسازیهای -O1 بهعلاوهٔ کُدگذاری دستورالعملهای صفر کردن ثبات برداری ۲۵۶ بیتی/۵۱۲ بیتی EVEX با دستورالعملهای صفر کردن ثبات برداری ۱۲۸ بیتی EVEX است. در حالت ۶۴ بیتی، در دستورالعملهای کُدگذاریشده با VEX که عملوندهای مبدأ جابهجاییپذیر (commutative) دارند، در صورتی که این کار امکان استفاده از قالب پیشوند ۲ بایتی VEX را بهجای قالب ۳ بایتی فراهم کند، عملوندهای مبدأ جابهجا خواهند شد. شکلهای خاصی از AND و همچنین OR با یک عملوند (ثبات) یکسان که دو بار مشخص شده باشد نیز به TEST تبدیل خواهند شد.
گزینهٔ -Os شامل بهینهسازی -O2 بهعلاوهٔ کُدگذاری آزمونهای (test) ثبات ۱۶ بیتی، ۳۲ بیتی و ۶۴ بیتی با مقدار بیدرنگ، به صورت آزمون ثبات ۸ بیتی با مقدار بیدرنگ است. گزینهٔ -O0 این بهینهسازی را غیرفعال میکند.
گزینههای زیر هنگامی در دسترس هستند که as برای سری Ubicom IP2K پیکربندی شده باشد.
- -mip2022ext
- مشخص میکند که دستورالعملهای توسعهیافتهٔ IP2022 مجاز هستند.
- -mip2022
- رفتار پیشفرض را بازمیگرداند، که دستورالعملهای مجاز را فقط به دستورالعملهای پایهٔ IP2022 محدود میکند.
گزینههای زیر هنگامی در دسترس هستند که as برای پردازندههای Renesas M32C و M16C پیکربندی شده باشد.
- -m32c
- اسمبل کردن دستورالعملهای M32C.
- -m16c
- اسمبل کردن دستورالعملهای M16C (پیشفرض).
- -relax
- فعالسازی پشتیبانی از تعدیلهای زمان پیوند (link-time relaxations).
- -h-tick-hex
- پشتیبانی از ثابتهای هگزادسیمال به سبک H'00 علاوه بر سبک 0x00.
گزینههای زیر هنگامی در دسترس هستند که as برای سری Renesas M32R (که پیشتر Mitsubishi M32R نامیده میشد) پیکربندی شده باشد.
- --m32rx
- مشخص میکند کدام پردازنده از خانوادهٔ M32R هدف است. پیشفرض معمولاً M32R است، اما این گزینه آن را به M32RX تغییر میدهد.
- --warn-explicit-parallel-conflicts or --Wp
- تولید پیامهای هشدار هنگامی که ساختارهای موازی مشکوک دیده شوند.
- --no-warn-explicit-parallel-conflicts or --Wnp
- پیامهای هشدار تولید نمیکند هنگامی که ساختارهای موازی مشکوک دیده شوند.
گزینههای زیر هنگامی در دسترس هستند که as برای سری Motorola 68000 پیکربندی شده باشد.
- -l
- کوتاه کردن ارجاعات به نمادهای تعریفنشده، به یک کلمه (word) بهجای دو کلمه.
- -m68000 | -m68008 | -m68010 | -m68020 | -m68030
- | -m68040 | -m68060 | -m68302 | -m68331 | -m68332
- | -m68333 | -m68340 | -mcpu32 | -m5200
- مشخص میکند کدام پردازنده از خانوادهٔ 68000 هدف است. مقدار پیشفرض معمولاً 68020 است، اما میتوان آن را در زمان پیکربندی تغییر داد.
- -m68881 | -m68882 | -mno-68881 | -mno-68882
- دستگاه هدف دارای پردازندهٔ کمکی ممیز شناور است (یا نیست). پیشفرض این است که برای 68020، 68030 و cpu32 یک پردازندهٔ کمکی در نظر گرفته شود. هرچند که 68000 پایه با 68881 سازگار نیست، ترکیبی از این دو را میتوان مشخص کرد، چرا که شبیهسازی دستورالعملهای پردازندهٔ کمکی با پردازندهٔ اصلی امکانپذیر است.
- -m68851 | -mno-68851
- دستگاه هدف دارای پردازندهٔ کمکی واحد مدیریت حافظه (MMU) است (یا نیست). پیشفرض این است که برای 68020 و بالاتر یک MMU در نظر گرفته شود.
برای جزئیات دربارهٔ گزینههای ویژگیهای وابسته به ماشین PDP-11، بخش PDP-11-Options را ببینید.
- -mpic | -mno-pic
- تولید کُد مستقل از موقعیت (یا وابسته به موقعیت). پیشفرض -mpic است.
- -mall
- -mall-extensions
- فعالسازی تمام افزونههای مجموعه دستورالعمل. این حالت پیشفرض است.
- -mno-extensions
- غیرفعالسازی تمام افزونههای مجموعه دستورالعمل.
- -mextension | -mno-extension
- فعالسازی (یا غیرفعالسازی) یک افزونه خاص از مجموعه دستورالعمل.
- -mcpu
- فعالسازی افزونههای مجموعه دستورالعمل پشتیبانیشده توسط یک CPU خاص، و غیرفعالسازی سایر افزونهها.
- -mmachine
- فعالسازی افزونههای مجموعه دستورالعمل پشتیبانیشده توسط یک مدل ماشین خاص، و غیرفعالسازی سایر افزونهها.
گزینههای زیر زمانی در دسترس هستند که as برای پردازنده picoJava پیکربندی شده باشد.
گزینههای زیر زمانی در دسترس هستند که as برای یک پردازنده PRU پیکربندی شده باشد.
- -mlink-relax
- فرض بر این گذاشته میشود که LD دستورالعملهای LDI32 را با بررسی ۱۶ بیت بالایی expression بهینهسازی میکند. اگر همگی صفر باشند، LD دستورالعمل LDI32 را به یک دستورالعمل تکی LDI کوتاه میکند. در چنین حالتی، "as" بازنشانیهای DIFF را برای عبارتهای 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
- تولید کد برای یک سطح خاص از معماری مجموعه دستورالعمل MIPS. -mips1 نام مستعاری برای -march=r3000، -mips2 نام مستعاری برای -march=r6000، -mips3 نام مستعاری برای -march=r4000 و -mips4 نام مستعاری برای -march=r8000 است. -mips5، -mips32، -mips32r2، -mips32r3، -mips32r5، -mips32r6، -mips64، -mips64r2، -mips64r3، -mips64r5 و -mips64r6 به ترتیب با پردازندههای عمومی معماری ISA شامل MIPS V، MIPS32، MIPS32 Release 2، MIPS32 Release 3، MIPS32 Release 5، MIPS32 Release 6، MIPS64، MIPS64 Release 2، MIPS64 Release 3، MIPS64 Release 5 و MIPS64 Release 6 مطابقت دارند.
- -march=cpu
- تولید کد برای یک CPU خاص MIPS.
- -mtune=cpu
- زمانبندی و تنظیم برای یک CPU خاص MIPS.
- -mfix7000
- -mno-fix7000
- باعث درج دستورالعملهای nop میشود اگر خواندن ثبات مقصدِ یک دستورالعمل mfhi یا mflo در دو دستورالعمل بعدی رخ دهد.
- -mfix-rm7000
- -mno-fix-rm7000
- باعث درج دستورالعملهای nop میشود اگر پس از یک دستورالعمل dmult یا dmultu، یک دستورالعمل بارگذاری (load) قرار گیرد.
- -mfix-r5900
- -mno-fix-r5900
- تلاشی برای زمانبندی دستورالعمل پیشین در شکاف تاخیر (delay slot) یک دستورالعمل پرش واقع در انتهای یک حلقه کوتاه شامل شش دستورالعمل یا کمتر انجام نمیدهد و در عوض همیشه یک دستورالعمل "nop" را در آنجا قرار میدهد. اشکال حلقه کوتاه تحت شرایط خاصی به دلیل یک نقص سختافزاری در تراشه R5900، باعث میشود حلقهها تنها یک یا دو بار اجرا شوند.
- -mdebug
- -no-mdebug
- باعث میشود خروجی اشکالزدایی با سبک stabs به جای بخشهای استاندارد ELF .stabs، در یک بخش .mdebug با سبک ECOFF قرار گیرد.
- -mpdr
- -mno-pdr
- کنترل تولید بخشهای ".pdr".
- -mgp32
- -mfp32
- اندازه ثباتها معمولاً بر اساس ISA و ABI استنباط میشود، اما این پرچمها گروه خاصی از ثباتها را مجبور میکنند که همیشه به عنوان ۳۲ بیتی در نظر گرفته شوند. -mgp32 اندازه ثباتهای همهمنظوره و -mfp32 اندازه ثباتهای ممیز شناور را کنترل میکند.
- -mgp64
- -mfp64
- اندازه ثباتها معمولاً بر اساس ISA و ABI استنباط میشود، اما این پرچمها گروه خاصی از ثباتها را مجبور میکنند که همیشه به عنوان ۶۴ بیتی در نظر گرفته شوند. -mgp64 اندازه ثباتهای همهمنظوره و -mfp64 اندازه ثباتهای ممیز شناور را کنترل میکند.
- -mfpxx
- اندازه ثباتها معمولاً بر اساس ISA و ABI استنباط میشود، اما استفاده از این پرچم در ترکیب با -mabi=32 گونهای از ABI را فعال میکند که با ثباتهای ممیز شناور دارای عرض ۳۲ یا ۶۴ بیتی به درستی عمل خواهد کرد.
- -modd-spreg
- -mno-odd-spreg
- فعالسازی استفاده از عملیاتهای ممیز شناور روی ثباتهای دقتتکی با شماره فرد در صورت پشتیبانی توسط ISA. پرچم -mfpxx مستلزم -mno-odd-spreg است؛ در غیر این صورت پیشفرض -modd-spreg است.
- -mips16
- -no-mips16
- تولید کد برای پردازنده MIPS 16. این معادل قرار دادن ".module mips16" در ابتدای فایل اسمبلی است. -no-mips16 این گزینه را غیرفعال میکند.
- -mmips16e2
- -mno-mips16e2
- فعالسازی استفاده از دستورالعملهای MIPS16e2 در حالت MIPS16. این معادل قرار دادن ".module mips16e2" در ابتدای فایل اسمبلی است. -mno-mips16e2 این گزینه را غیرفعال میکند.
- -mmicromips
- -mno-micromips
- تولید کد برای پردازنده microMIPS. این معادل قرار دادن ".module micromips" در ابتدای فایل اسمبلی است. -mno-micromips این گزینه را غیرفعال میکند. این معادل قرار دادن ".module nomicromips" در ابتدای فایل اسمبلی است.
- -msmartmips
- -mno-smartmips
- افزونه SmartMIPS به مجموعه دستورالعمل MIPS32 را فعال میکند. این معادل قرار دادن ".module smartmips" در ابتدای فایل اسمبلی است. -mno-smartmips این گزینه را غیرفعال میکند.
- -mips3d
- -no-mips3d
- تولید کد برای افزونه خاصمنظوره (ASE) معماری MIPS-3D. این گزینه به اسمبلر میگوید که دستورالعملهای MIPS-3D را بپذیرد. -no-mips3d این گزینه را غیرفعال میکند.
- -mdmx
- -no-mdmx
- تولید کد برای افزونه خاصمنظوره MDMX. این گزینه به اسمبلر میگوید که دستورالعملهای MDMX را بپذیرد. -no-mdmx این گزینه را غیرفعال میکند.
- -mdsp
- -mno-dsp
- تولید کد برای افزونه خاصمنظوره DSP Release 1. این گزینه به اسمبلر میگوید که دستورالعملهای DSP Release 1 را بپذیرد. -mno-dsp این گزینه را غیرفعال میکند.
- -mdspr2
- -mno-dspr2
- تولید کد برای افزونه خاصمنظوره DSP Release 2. این گزینه متضمن -mdsp است. این گزینه به اسمبلر میگوید که دستورالعملهای DSP Release 2 را بپذیرد. -mno-dspr2 این گزینه را غیرفعال میکند.
- -mdspr3
- -mno-dspr3
- تولید کد برای افزونه خاصمنظوره DSP Release 3. این گزینه متضمن -mdsp و -mdspr2 است. این گزینه به اسمبلر میگوید که دستورالعملهای DSP Release 3 را بپذیرد. -mno-dspr3 این گزینه را غیرفعال میکند.
- -mmsa
- -mno-msa
- تولید کد برای افزونه معماری MIPS SIMD. این گزینه به اسمبلر میگوید که دستورالعملهای MSA را بپذیرد. -mno-msa این گزینه را غیرفعال میکند.
- -mxpa
- -mno-xpa
- تولید کد برای افزونه آدرس فیزیکی گسترشیافته MIPS ( موسوم به XPA). این گزینه به اسمبلر میگوید که دستورالعملهای XPA را بپذیرد. -mno-xpa این گزینه را غیرفعال میکند.
- -mmt
- -mno-mt
- تولید کد برای افزونه خاصمنظوره MT. این گزینه به اسمبلر میگوید که دستورالعملهای MT را بپذیرد. -mno-mt این گزینه را غیرفعال میکند.
- -mmcu
- -mno-mcu
- تولید کد برای افزونه خاصمنظوره MCU. این گزینه به اسمبلر میگوید که دستورالعملهای MCU را بپذیرد. -mno-mcu این گزینه را غیرفعال میکند.
- -mcrc
- -mno-crc
- تولید کد برای افزونه خاصمنظوره بررسی افزونگی چرخهای (CRC) در MIPS. این گزینه به اسمبلر میگوید که دستورالعملهای CRC را بپذیرد. -mno-crc این گزینه را غیرفعال میکند.
- -mginv
- -mno-ginv
- تولید کد برای افزونه خاصمنظوره Global INValidate (GINV). این گزینه به اسمبلر میگوید که دستورالعملهای GINV را بپذیرد. -mno-ginv این گزینه را غیرفعال میکند.
- -mloongson-mmi
- -mno-loongson-mmi
- تولید کد برای افزونه خاصمنظوره دستورالعملهای چندرسانهای Loongson (MMI). این گزینه به اسمبلر میگوید که دستورالعملهای MMI را بپذیرد. -mno-loongson-mmi این گزینه را غیرفعال میکند.
- -mloongson-cam
- -mno-loongson-cam
- تولید کد برای دستورالعملهای حافظه با محتوای آدرسپذیر (CAM) در Loongson. این گزینه به اسمبلر میگوید که دستورالعملهای Loongson CAM را بپذیرد. -mno-loongson-cam این گزینه را غیرفعال میکند.
- -mloongson-ext
- -mno-loongson-ext
- تولید کد برای دستورالعملهای افزونههای Loongson (EXT). این گزینه به اسمبلر میگوید که دستورالعملهای Loongson EXT را بپذیرد. -mno-loongson-ext این گزینه را غیرفعال میکند.
- -mloongson-ext2
- -mno-loongson-ext2
- تولید کد برای دستورالعملهای افزونههای Loongson نسخه دوم (EXT2). این گزینه متضمن -mloongson-ext است. این گزینه به اسمبلر میگوید که دستورالعملهای Loongson EXT2 را بپذیرد. -mno-loongson-ext2 این گزینه را غیرفعال میکند.
- -minsn32
- -mno-insn32
- هنگام تولید کد برای پردازنده microMIPS، فقط از کدبندیهای دستورالعمل ۳۲ بیتی استفاده میکند. این گزینه مانع استفاده از هرگونه دستورالعمل ۱۶ بیتی میشود. این معادل قرار دادن ".set insn32" در ابتدای فایل اسمبلی است. -mno-insn32 این گزینه را غیرفعال میکند. این معادل قرار دادن ".set noinsn32" در ابتدای فایل اسمبلی است. بهطور پیشفرض -mno-insn32 انتخاب شده است، که اجازه میدهد همه دستورالعملها استفاده شوند.
- --construct-floats
- --no-construct-floats
- گزینه --no-construct-floats ساخت ثوابت ممیز شناور با عرض دوگانه را از طریق بارگذاری دو نیمه مقدار در دو ثبات ممیز شناور با عرض تکی (که ثبات با عرض دوگانه را تشکیل میدهند) غیرفعال میکند. بهطور پیشفرض --construct-floats انتخاب شده است که امکان ساخت این ثوابت ممیز شناور را فراهم میکند.
- --relax-branch
- --no-relax-branch
- گزینه --relax-branch قابلیت تنظیم و گسترش انشعابهای خارج از محدوده (relaxation) را فعال میکند. بهطور پیشفرض --no-relax-branch انتخاب شده است، که باعث میشود هر انشعاب خارج از محدودهای منجر به خطا شود.
- -mignore-branch-isa
- -mno-ignore-branch-isa
- بررسیهای انشعاب برای انتقالهای نامعتبر میان حالتهای ISA را نادیده میگیرد. معناشناسی انشعابها امکان تغییر حالت ISA را فراهم نمیکند، بنابراین در بیشتر موارد حالت ISA که یک انشعاب برای آن کدبندی شده است باید با حالت ISA برچسب هدفِ انشعاب یکسان باشد. از این رو GAS بررسیهایی را پیادهسازی کرده است که در زمان اسمبلیِ انشعاب، مطابقت این دو حالت ISA را اعتبارسنجی میکند. -mignore-branch-isa این بررسیها را غیرفعال میکند. بهطور پیشفرض -mno-ignore-branch-isa انتخاب شده است، که باعث میشود هر انشعاب نامعتبر که نیازمند جابهجایی میان حالتهای ISA باشد، یک خطا تولید کند.
- -mnan=encoding
- انتخاب بین قالب کدگذاری NaN استاندارد IEEE 754-2008 (-mnan=2008) یا سنتی (-mnan=legacy). مورد دوم حالت پیشفرض است.
- --emulation=name
- این گزینه
در گذشته
برای
جابهجایی
میان خروجی
ELF و ECOFF در
مقصدهایی
مانند IRIX 5 که
از هر دو
پشتیبانی
میکردند
به کار
میرفت.
پشتیبانی
از MIPS ECOFF در GAS 2.24
حذف شد،
بنابراین
این گزینه
اکنون
کاربرد
چندانی
ندارد. این
گزینه برای
سازگاری با
نسخههای
پیشین حفظ
شده است.
نامهای پیکربندی موجود عبارتند از: mipself، mipslelf و mipsbelf. انتخاب mipself اکنون هیچ اثری ندارد، زیرا خروجی همواره ELF است. mipslelf و mipsbelf بهترتیب خروجی little-endian و big-endian را انتخاب میکنند، اما اکنون گزینههای -EL و -EB بهجای آنها ترجیح داده میشوند.
- -nocpp
- as این گزینه را نادیده میگیرد. این گزینه برای سازگاری با ابزارهای بومی پذیرفته میشود.
- --trap
- --no-trap
- --break
- --no-break
- نحوهٔ برخورد با سرریز ضرب و تقسیم بر صفر را کنترل میکند. --trap یا --no-break (که هممعنی هستند) یک استثنای trap ایجاد میکنند (و تنها برای Instruction Set Architecture سطح ۲ و بالاتر کار میکنند)؛ --break یا --no-trap (نیز هممعنی، و حالت پیشفرض) یک استثنای break ایجاد میکنند.
- -n
- هنگامی که این گزینه استفاده شود، as هر بار که یک دستور nop را از یک ماکرو تولید کند، هشداری صادر خواهد کرد.
گزینههای زیر هنگامی در دسترس هستند که as برای پردازندهٔ LoongArch پیکربندی شده باشد.
- -fpic
- -fPIC
- تولید کد مستقل از موقعیت (position-independent code)
- -fno-pic
- عدم تولید کد مستقل از موقعیت (پیشفرض)
گزینههای زیر هنگامی در دسترس هستند که as برای پردازندهٔ Meta پیکربندی شده باشد.
- "-mcpu=metac11"
- تولید کد برای Meta 1.1.
- "-mcpu=metac12"
- تولید کد برای Meta 1.2.
- "-mcpu=metac21"
- تولید کد برای Meta 2.1.
- "-mfpu=metac21"
- اجازه به کد برای استفاده از سختافزار FPU در Meta 2.1.
برای مستندات گزینههای خاص MMIX، به صفحات info مراجعه کنید.
گزینههای زیر هنگامی در دسترس هستند که as برای پردازندهٔ NDS32 پیکربندی شده باشد.
- "-O1"
- بهینهسازی برای کارایی.
- "-Os"
- بهینهسازی برای فضا.
- "-EL"
- تولید خروجی داده به صورت little endian.
- "-EB"
- تولید خروجی داده به صورت little endian.
- "-mpic"
- تولید PIC.
- "-mno-fp-as-gp-relax"
- صرفنظر از relaxation نوع fp-as-gp برای این فایل.
- "-mb2bb-relax"
- بهینهسازی پرشهای پشتسرهم (Back-to-back branch).
- "-mno-all-relax"
- صرفنظر از تمام relaxationها برای این فایل.
- "-march=<arch name>"
- اسمبل کردن برای معماری <arch name> که میتواند v3، v3j، v3m، v3f، v3s، v2، v2j، v2f یا v2s باشد.
- "-mbaseline=<baseline>"
- اسمبل کردن برای خط مبنای <baseline> که میتواند v2، v3 یا v3m باشد.
- "-mfpu-freg=FREG"
- مشخص کردن یک پیکربندی FPU.
- "0 8 SP / 4 DP registers"
- "1 16 SP / 8 DP registers"
- "2 32 SP / 16 DP registers"
- "3 32 SP / 32 DP registers"
- "-mabi=abi"
- مشخص کردن نسخهٔ abi؛ مقدار <abi> میتواند v1، v2، v2fp یا v2fpp باشد.
- "-m[no-]mac"
- فعال/غیرفعال کردن پشتیبانی از دستورالعملهای ضرب.
- "-m[no-]div"
- فعال/غیرفعال کردن پشتیبانی از دستورالعملهای تقسیم.
- "-m[no-]16bit-ext"
- فعال/غیرفعال کردن افزونهٔ 16-bit
- "-m[no-]dx-regs"
- فعال/غیرفعال کردن ثباتهای d0/d1
- "-m[no-]perf-ext"
- فعال/غیرفعال کردن افزونهٔ Performance
- "-m[no-]perf2-ext"
- فعال/غیرفعال کردن افزونهٔ Performance 2
- "-m[no-]string-ext"
- فعال/غیرفعال کردن افزونهٔ String
- "-m[no-]reduced-regs"
- فعال/غیرفعال کردن گزینهٔ پیکربندی ثباتهای تقلیلیافته (GPR16)
- "-m[no-]audio-isa-ext"
- فعال/غیرفعال کردن افزونهٔ AUDIO ISA
- "-m[no-]fpu-sp-ext"
- فعال/غیرفعال کردن افزونهٔ FPU SP
- "-m[no-]fpu-dp-ext"
- فعال/غیرفعال کردن افزونهٔ FPU DP
- "-m[no-]fpu-fma"
- فعال/غیرفعال کردن دستورالعملهای fused-multiply-add در FPU
- "-mall-ext"
- فعال کردن پشتیبانی از تمام افزونهها و دستورالعملها
گزینههای زیر هنگامی در دسترس هستند که as برای پردازندهٔ PowerPC پیکربندی شده باشد.
- -a32
- تولید ELF32 یا XCOFF32.
- -a64
- تولید ELF64 یا XCOFF64.
- -K PIC
- تنظیم EF_PPC_RELOCATABLE_LIB در پرچمهای ELF.
- -mpwrx | -mpwr2
- تولید کد برای POWER/2 (RIOS2).
- -mpwr
- تولید کد برای POWER (RIOS1).
- -m601
- تولید کد برای PowerPC 601.
- -mppc, -mppc32, -m603, -m604
- تولید کد برای PowerPC 603/604.
- -m403, -m405
- تولید کد برای PowerPC 403/405.
- -m440
- تولید کد برای PowerPC 440؛ دستورالعملهای BookE و برخی دستورالعملهای 405.
- -m464
- تولید کد برای PowerPC 464.
- -m476
- تولید کد برای PowerPC 476.
- -m7400, -m7410, -m7450, -m7455
- تولید کد برای PowerPC 7400/7410/7450/7455.
- -m750cl, -mgekko, -mbroadway
- تولید کد برای PowerPC 750CL/Gekko/Broadway.
- -m821, -m850, -m860
- تولید کد برای PowerPC 821/850/860.
- -mppc64, -m620
- تولید کد برای PowerPC 620/625/630.
- -me200z2, -me200z4
- تولید کد برای گونههای e200؛ پردازنده e200z2 با LSP و e200z4 با SPE.
- -me300
- تولید کد برای خانواده PowerPC e300.
- -me500, -me500x2
- تولید کد برای مجموعه هسته Motorola e500.
- -me500mc
- تولید کد برای مجموعه هسته Freescale e500mc.
- -me500mc64
- تولید کد برای مجموعه هسته Freescale e500mc64.
- -me5500
- تولید کد برای مجموعه هسته Freescale e5500.
- -me6500
- تولید کد برای مجموعه هسته Freescale e6500.
- -mlsp
- فعالسازی دستورالعملهای LSP. (SPE و SPE2 را غیرفعال میکند.)
- -mspe
- تولید کد برای دستورالعملهای Motorola SPE. (LSP را غیرفعال میکند.)
- -mspe2
- تولید کد برای دستورالعملهای Freescale SPE2. (LSP را غیرفعال میکند.)
- -mtitan
- تولید کد برای مجموعه هسته AppliedMicro Titan.
- -mppc64bridge
- تولید کد برای PowerPC 64، شامل دستورالعملهای bridge.
- -mbooke
- تولید کد برای BookE ۳۲-بیتی.
- -ma2
- تولید کد برای معماری A2.
- -maltivec
- تولید کد برای پردازندههای دارای دستورالعملهای AltiVec.
- -mvle
- تولید کد برای دستورالعملهای Freescale PowerPC VLE.
- -mvsx
- تولید کد برای پردازندههای دارای دستورالعملهای Vector-Scalar (VSX).
- -mhtm
- تولید کد برای پردازندههای دارای دستورالعملهای حافظه تراکنشی سختافزاری (Hardware Transactional Memory).
- -mpower4, -mpwr4
- تولید کد برای معماری Power4.
- -mpower5, -mpwr5, -mpwr5x
- تولید کد برای معماری Power5.
- -mpower6, -mpwr6
- تولید کد برای معماری Power6.
- -mpower7, -mpwr7
- تولید کد برای معماری Power7.
- -mpower8, -mpwr8
- تولید کد برای معماری Power8.
- -mpower9, -mpwr9
- تولید کد برای معماری Power9.
- -mpower10, -mpwr10
- تولید کد برای معماری Power10.
- -mpower11, -mpwr11
- تولید کد برای معماری Power11.
- -mfuture
- تولید کد برای معماری 'future'.
- -mcell
- -mcell
- تولید کد برای معماری Cell Broadband Engine.
- -mcom
- تولید کد برای دستورالعملهای مشترک Power/PowerPC.
- -many
- تولید کد برای هر معماری (PWR/PWRX/PPC).
- -mregnames
- اجازه استفاده از نامهای نمادین برای ثباتها.
- -mno-regnames
- عدم اجازه استفاده از نامهای نمادین برای ثباتها.
- -mrelocatable
- پشتیبانی از گزینه -mrelocatable در GCC.
- -mrelocatable-lib
- پشتیبانی از گزینه -mrelocatable-lib در GCC.
- -memb
- تنظیم بیت PPC_EMB در پرچمهای ELF.
- -mlittle, -mlittle-endian, -le
- تولید کد برای ماشینی با ترتیب بایت کمارزش (little endian).
- -mbig, -mbig-endian, -be
- تولید کد برای ماشینی با ترتیب بایت پرارزش (big endian).
- -msolaris
- تولید کد برای Solaris.
- -mno-solaris
- عدم تولید کد برای Solaris.
- -nops=count
- اگر یک دستور همترازی بیش از count عملگر nop درج کند، یک انشعاب (branch) در ابتدا قرار میدهد تا از اجرای nopها صرفنظر شود.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده RISC-V پیکربندی شده باشد.
- -fpic
- -fPIC
- تولید کد مستقل از موقعیت (position-independent code).
- -fno-pic
- عدم تولید کد مستقل از موقعیت (پیشفرض).
- -march=ISA|Profiles|Profiles_ISA
- انتخاب isa پایه، همانطور که توسط ISA یا Profiles یا Profiles_ISA مشخص شده است. برای مثال -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. اگر این گزینه و مشخصههای معماری تنظیم نشده باشند، اسمبلر تنظیمات پیشفرضِ پیکربندی --with-arch=ISA را بررسی خواهد کرد.
- -misa-spec=ISAspec
- انتخاب نسخه مشخصات پیشفرض isa. اگر نسخه ISA توسط -march تعیین نشده باشد، اسمبلر نسخه را بر اساس مشخصات انتخابی پیشفرض تنظیم میکند. اگر این گزینه تنظیم نشده باشد، اسمبلر تنظیمات پیشفرضِ پیکربندی --with-isa-spec=ISAspec را بررسی خواهد کرد.
- -mpriv-spec=PRIVspec
- انتخاب نسخه مشخصات ممتاز (privileged spec). بر اساس مشخصات انتخابی میتوان تعیین کرد که آیا CSR معتبر است یا خیر. اگر این گزینه و مشخصههای سطح دسترسی تنظیم نشده باشند، اسمبلر تنظیمات پیشفرضِ پیکربندی --with-priv-spec=PRIVspec را بررسی خواهد کرد.
- -mabi=ABI
- انتخاب ABI، که یا "ilp32" است یا "lp64"، و به صورت اختیاری پس از آن "f"، "d" یا "q" برای تعیین قرارداد فراخوانی ممیز شناور با دقت یگانه (single-precision)، دقت مضاعف (double-precision) یا دقت چهارگانه (quad-precision) قرار میگیرد، یا هیچکدام یا "e" برای مشخص کردن قرارداد فراخوانی ممیز شناور نرمافزاری (soft-float) ("e" بیانگر RVE ABI از نوع soft-float است).
- -mrelax
- بهرهگیری از سادهسازیهای پیونددهنده (linker relaxations) برای کاهش تعداد دستورالعملهای مورد نیاز جهت تحقق آدرسهای نماد. (پیشفرض)
- -mno-relax
- عدم اعمال سادهسازیهای پیونددهنده.
- -march-attr
- تولید محتوای پیشفرض برای بخش صفت riscv elf در صورتی که دایرکتیوهای .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی استفاده میشود که یک پیونددهنده یا بارگذار زمان اجرا (runtime loader) برای بررسی سازگاری به آن نیاز دارند. این اطلاعات شامل رشته ISA، نیازمندی همترازی پشته، دسترسیهای ناهمتراز حافظه، و نسخه اصلی، فرعی و بازبینی از مشخصات ممتاز (privileged specification) است.
- -mno-arch-attr
- عدم تولید بخش صفت riscv elf پیشفرض در صورتی که دایرکتیوهای .attribute تنظیم نشده باشند.
- -mcsr-check
- فعالسازی بررسی CSR برای CSRهای وابسته به ISA و CSRهای فقطخواندنی. CSRهای وابسته به ISA تنها زمانی معتبر هستند که ISA خاص تعیین شده باشد. CSRهای فقطخواندنی را نمیتوان با دستورالعملهای CSR بازنویسی کرد.
- -mno-csr-check
- عدم انجام بررسیهای CSR.
- -mlittle-endian
- تولید کد برای یک ماشین با ترتیب بایت کمارزش (little-endian).
- -mbig-endian
- تولید کد برای یک ماشین با ترتیب بایت پرارزش (big-endian).
برای مستندات گزینههای مختص RX به صفحات info مراجعه کنید.
گزینههای زیر هنگامی در دسترس هستند که as برای خانواده پردازنده s390 پیکربندی شده باشد.
- -m31
- -m64
- انتخاب اندازه کلمه (word size)، یا ۳۱/۳۲ بیت یا ۶۴ بیت.
- -mesa
- -mzarch
- انتخاب حالت معماری، یا Enterprise System Architecture (esa) یا حالت z/Architecture (zarch).
- -march=processor
- مشخص میکند که کدام نوع از پردازنده s390 هدف است: g5 (یا arch3)، g6، z900 (یا arch5)، z990 (یا arch6)، z9-109، z9-ec (یا arch7)، z10 (یا arch8)، z196 (یا arch9)، zEC12 (یا arch10)، z13 (یا arch11)، z14 (یا arch12)، z15 (یا arch13)، z16 (یا arch14)، یا z17 (یا arch15).
- -mregnames
- -mno-regnames
- مجاز یا غیرمجاز کردن نامهای نمادین برای ثباتها.
- -mwarn-areg-zero
- هشدار دادن در هر زمانی که عملوند یک ثبات پایه (base) یا شاخص (index) مشخص شده باشد اما مقدار آن صفر ارزیابی شود.
- -mwarn-regtype-mismatch=strict
- -mwarn-regtype-mismatch=relaxed
- -mwarn-regtype-mismatch=no
- -mno-warn-regtype-mismatch
- کنترل میکند که آیا اسمبلر بررسی نوع نام ثبات را انجام دهد و در صورت عدم تطابق با نوع ثبات عملوند، یک پیام هشدار تولید کند یا خیر. حالت پیشفرض (که با استفاده از آرگومان relaxed قابل بازگردانی است) انجام بررسیهای آسانگیرانه بر روی نوع نام ثبات است، که به نامهای ثبات ممیز شناور (FPR) از %f0 تا %f15 اجازه میدهد تا به عنوان آرگومان برای عملوندهای ثبات برداری (VR) مشخص شوند، و به نامهای ثبات برداری (VR) از %v0 تا %v15 اجازه میدهد تا به عنوان آرگومان برای عملوندهای ثبات ممیز شناور (FPR) مشخص شوند. این امر قابل قبول است زیرا FPRها در نیمه پایینی VR تعبیه شدهاند. با استفاده از آرگومان strict، بررسیهای سختگیرانه بر نوع نام ثبات انجام میشود. آرگومان no، که معادل -mno-warn-regtype-mismatch است، هرگونه بررسی بر روی نوع نام ثبات را غیرفعال میکند.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده TMS320C6000 پیکربندی شده باشد.
- -march=arch
- فعالسازی
(تنها)
دستورالعملهای
معماری arch.
به طور
پیشفرض،
تمام
دستورالعملها
مجاز هستند.
مقادیر زیر برای arch پذیرفته میشوند: "c62x"، "c64x"، "c64x+"، "c67x"، "c67x+"، "c674x".
- -mdsbt
- -mno-dsbt
- گزینه -mdsbt باعث میشود اسمبلر صفت "Tag_ABI_DSBT" را با مقدار 1 تولید کند، که نشان میدهد کد از آدرسدهی DSBT استفاده میکند. گزینه -mno-dsbt، که پیشفرض است، باعث میشود این برچسب دارای مقدار 0 باشد، که نشان میدهد کد از آدرسدهی DSBT استفاده نمیکند. اگر اشیاء (objects) از انواع مختلف (DSBT و غیر DSBT) با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
- -mpid=no
- -mpid=near
- -mpid=far
- گزینه -mpid= باعث میشود اسمبلر صفت "Tag_ABI_PID" را با مقداری تولید کند که بیانگر شیوه آدرسدهی دادههای استفادهشده توسط کد است. -mpid=no، که پیشفرض است، بیانگر آدرسدهی داده وابسته به مکان است؛ -mpid=near بیانگر آدرسدهی مستقل از مکان با دسترسیهای GOT با استفاده از آدرسدهی DP نزدیک (near DP) است؛ و -mpid=far بیانگر آدرسدهی مستقل از مکان با دسترسیهای GOT با استفاده از آدرسدهی DP دور (far DP) است. اگر اشیایی که با تنظیمات متفاوتی از این گزینه ساخته شدهاند با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
- -mpic
- -mno-pic
- گزینه -mpic باعث میشود اسمبلر صفت "Tag_ABI_PIC" را با مقدار 1 تولید کند، که نشان میدهد کد از آدرسدهی کد مستقل از مکان استفاده میکند. گزینه "-mno-pic"، که پیشفرض است، باعث میشود این برچسب دارای مقدار 0 باشد که بیانگر آدرسدهی کد وابسته به مکان است. اگر اشیاء از انواع مختلف (وابسته به مکان و مستقل از مکان) با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
- -mbig-endian
- -mlittle-endian
- تولید کد برای ترتیب بایت مشخصشده. پیشفرض، کمارزش (little-endian) است.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده TILE-Gx پیکربندی شده باشد.
- -m32 | -m64
- انتخاب اندازه کلمه، ۳۲ بیت یا ۶۴ بیت.
- -EB | -EL
- انتخاب ترتیب بایت، یا پرارزش (-EB) یا کمارزش (-EL).
گزینه زیر هنگامی در دسترس است که as برای یک پردازنده Visium پیکربندی شده باشد.
- -mtune=arch
- این گزینه
معماری هدف
را مشخص
میکند. در
صورتی که
تلاشی برای
اسمبل کردن
دستورالعملی
صورت گیرد
که بر روی
معماری هدف
اجرا
نخواهد شد،
اسمبلر یک
پیام خطا
صادر
میکند.
نامهای زیر شناختهشده هستند: "mcm24" "mcm" "gr5" "gr6"
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده Xtensa پیکربندی شده باشد.
- --text-section-literals | --no-text-section-literals
- کنترل رفتار با استخرهای مقادیر مستقیم (literal pools). پیشفرض --no-text-section-literals است که مقادیر مستقیم را در بخشهای جداگانهای در فایل خروجی قرار میدهد. این کار اجازه میدهد تا استخر مقادیر مستقیم در یک RAM/ROM داده قرار گیرد. با --text-section-literals، مقادیر مستقیم در بخش متن پراکنده میشوند تا در نزدیکترین حالت ممکن به مراجع خود قرار گیرند. این ممکن است برای فایلهای اسمبلی بزرگ ضروری باشد، جایی که در غیر این صورت مقادیر مستقیم خارج از برد دستورالعملهای "L32R" در بخش متن قرار خواهند گرفت. مقادیر مستقیم در استخرهایی به دنبال دایرکتیوهای ".literal_position" یا قبل از دستورالعملهای "ENTRY" گروهبندی میشوند. این گزینهها تنها بر مقادیر مستقیمی تأثیر میگذارند که از طریق دستورالعملهای نسبی به شمارنده برنامه (PC-relative) با عنوان "L32R" ارجاع داده شدهاند؛ مقادیر مستقیم مربوط به دستورالعملهای حالت مطلق "L32R" به طور جداگانه مدیریت میشوند.
- --auto-litpools | --no-auto-litpools
- کنترل رفتار با استخرهای مقادیر مستقیم. پیشفرض --no-auto-litpools است، که در صورت نبود گزینه --text-section-literals، مقادیر مستقیم را در بخشهای جداگانهای در فایل خروجی قرار میدهد. این کار اجازه میدهد تا استخر مقادیر مستقیم در یک RAM/ROM داده قرار گیرد. با --auto-litpools، مقادیر مستقیم در بخش متن پراکنده میشوند تا در نزدیکترین حالت ممکن به مراجع خود قرار گیرند، و نیازی به دایرکتیوهای صریح ".literal_position" نیست. این ممکن است برای توابع بسیار بزرگ لازم باشد، جایی که یک استخر مقادیر مستقیم واحد در ابتدای تابع ممکن است برای دستورالعملهای "L32R" در انتهای آن در دسترس نباشد. این گزینهها فقط بر مقادیر مستقیمی تأثیر میگذارند که از طریق دستورالعملهای نسبی به شمارنده برنامه (PC-relative) با عنوان "L32R" ارجاع داده شدهاند؛ مقادیر مستقیم برای دستورالعملهای حالت مطلق "L32R" به طور جداگانه مدیریت میشوند. در صورت استفاده همزمان با --text-section-literals، گزینه --auto-litpools اولویت خواهد داشت.
- --absolute-literals | --no-absolute-literals
- به اسمبلر مشخص میکند که آیا دستورالعملهای "L32R" از آدرسدهی مطلق استفاده کنند یا آدرسدهی وابسته به PC. اگر پردازنده شامل گزینهٔ آدرسدهی مطلق باشد، حالت پیشفرض استفاده از بازنشانیهای (relocations) مطلق "L32R" است. در غیر این صورت، تنها میتوان از بازنشانیهای "L32R" وابسته به PC استفاده کرد.
- --target-align | --no-target-align
- همترازی خودکار را برای کاهش جریمههای انشعاب (branch penalties) در ازای مقداری افزایش در حجم کد، فعال یا غیرفعال میکند. این بهینهسازی بهطور پیشفرض فعال است. توجه داشته باشید که اسمبلر همواره دستورالعملهایی مانند "LOOP" را که دارای الزامات همترازی ثابت هستند همتراز خواهد کرد.
- --longcalls | --no-longcalls
- تبدیل دستورالعملهای فراخوانی (call) را برای امکانپذیر ساختن فراخوانیها در محدودهٔ بزرگتری از آدرسها، فعال یا غیرفعال میکند. این گزینه باید زمانی استفاده شود که مقاصد فراخوانی احتمالاً خارج از محدوده باشند. این کار ممکن است حجم کد و عملکرد را کاهش دهد، اما پیونددهنده (linker) عموماً میتواند در صورتی که فراخوانی در نهایت درون محدوده قرار گیرد، سربار غیرضروری را بهینهسازی و حذف کند. حالت پیشفرض --no-longcalls است.
- --transform | --no-transform
- همهٔ تبدیلات اسمبلر روی دستورالعملهای Xtensa، شامل هر دو مورد آزادسازی (relaxation) و بهینهسازی را فعال یا غیرفعال میکند. حالت پیشفرض --transform است؛ از --no-transform تنها باید در موارد نادری استفاده شود که دستورالعملها باید دقیقاً مطابق با آنچه در منبع اسمبلی مشخص شده است باشند. استفاده از --no-transform باعث میشود عملوندهای دستورالعمل خارج از محدوده به عنوان خطا تلقی شوند.
- --rename-section oldname=newname
- بخش oldname را به newname تغییر نام میدهد. این گزینه میتواند چندین بار برای تغییر نام بخشهای متعدد استفاده شود.
- --trampolines | --no-trampolines
- تبدیل دستورالعملهای پرش (jump) را برای امکانپذیر ساختن پرشها در محدودهٔ بزرگتری از آدرسها فعال یا غیرفعال میکند. این گزینه باید زمانی استفاده شود که مقاصد پرش احتمالاً خارج از محدوده باشند. در نبود چنین پرشهایی، این گزینه بر حجم کد یا عملکرد تأثیری ندارد. مقدار پیشفرض --trampolines است.
- --abi-windowed | --abi-call0
- برچسب ABI نوشتهشده در بخش ".xtensa.info" را تعیین میکند. برچسب ABI نشاندهندهٔ ABI کد اسمبلی است. در صورت تلاش برای پیوند پروندههای شیء با برچسبهای ABI ناسازگار، هشداری توسط پیونددهنده صادر میشود. ABI پیشفرض بر اساس پیکربندی هستهٔ Xtensa انتخاب میشود.
هنگامی که as برای پردازندهٔ Z80 پیکربندی شده باشد، گزینههای زیر در دسترس هستند.
@chapter ویژگیهای وابسته به Z80
گزینههای خط فرمان (Command-line Options)
- -march=CPU[-EXT...][+EXT...]
- این گزینه
پردازندهٔ
مقصد را
مشخص
میکند. اگر
تلاشی برای
اسمبل کردن
دستورالعملی
که روی
پردازندهٔ
مقصد قابل
اجرا نیست
صورت گیرد،
اسمبلر
پیام خطا
صادر
میکند.
نامهای
پردازندههای
زیر شناخته
میشوند:
"z80"،
"z180"،
"ez80"،
"gbz80"،
"z80n"،
"r800".
علاوه بر
مجموعه
دستورالعمل
پایه،
میتوان به
اسمبلر
مشخص کرد تا
برخی
نمادهای
یادافزا (mnemonics)
افزونه را
بپذیرد.
برای
نمونه،
"-march=z180+sli+infc"
پردازندهٔ
z180 را با
دستورالعملهای
SLI و IN F,(C)
گسترش
میدهد.
افزونههای
زیر در حال
حاضر
پشتیبانی
میشوند:
"full"
(تمامی
دستورالعملهای
شناختهشده)،
"adl" (حالت
پردازندهٔ
ADL بهطور
پیشفرض،
فقط برای eZ80)،
"sli"
(دستورالعمل
شناختهشده
با عنوان
SLI، SLL یا SL1)،
"xyhl"
(دستورالعملهایی
با
نیمههای
ثباتهای
شاخص: IXL، IXH،
IYL، IYH)،
"xdcb"
(دستورالعملهایی
مانند RotOp (II+d),R و
BitOp n,(II+d),R)، "infc"
(دستورالعمل
IN F,(C) یا IN (C))،
"outc0"
(دستورالعمل
OUT (C),0). توجه
داشته
باشید که
برخلاف
گسترش یک
مجموعه
دستورالعمل
پایه،
نمادهای
یادافزای
افزونه که
با "-"
آغاز
میشوند
قابلیت
مربوطه را
لغو
میکنند:
"-march=z80-full+xyhl"
ابتدا تمام
افزونههای
پیشفرض را
حذف کرده و
تنها
پشتیبانی
از
نیمههای
ثباتهای
شاخص را
اضافه
میکند.
اگر این گزینه مشخص نشده باشد، مقدار "-march=z80+xyhl+infc" پیشفرض در نظر گرفته میشود.
- -local-prefix=prefix
- تمام برچسبها با پیشوند مشخصشده را به عنوان محلی (local) علامتگذاری میکند. با این حال چنین برچسبی میتواند صراحتاً در کد به صورت سراسری (global) مشخص شود. این گزینه پیشوند پیشفرض برچسبهای محلی یعنی ".L" را تغییر نمیدهد، بلکه فقط پیشوند جدیدی اضافه میکند.
- -colonless
- برچسبهای بدون دونقطه (colonless) را میپذیرد. با تمام نمادها در ابتدای خط به عنوان برچسب رفتار میشود.
- -sdcc
- کد اسمبلی تولیدشده توسط SDCC را میپذیرد.
- -fp-s=FORMAT
- قالب اعداد ممیز شناور با دقت یگانه (Single precision). پیشفرض: ieee754 (32 bit).
- -fp-d=FORMAT
- قالب اعداد ممیز شناور با دقت مضاعف (Double precision). پیشفرض: 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 |