| 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]]
[--gsframe-3]
[--hash-size=N]
[--help] [--target-help]
[--info] [--no-info]
[-I dir]
[-J]
[-K]
[--keep-locals]
[-L]
[--listing-lhs-width=NUM]
[--listing-lhs-width2=NUM]
[--listing-rhs-width=NUM]
[--listing-cont-lines=NUM]
[--multibyte-handling=[allow|warn|warn-sym-only]]
[--no-pad-sections]
[-o objfile] [-R]
[--reloc-section-sym=[all|internal|none]]
[--scfi=experimental]
[--sectname-subst]
[--size-check=[error|warning]]
[--statistics]
[-v] [--verbose]
[-version] [--version]
[-W] [--no-warn] [--warn] [--fatal-warnings]
[-w] [-x]
[-Z] [@FILE]
[target-options]
[--|files ...].SH "هدف (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].PP
گزینههای
مقصد picoJava:
[-mb|-me]
گزینههای
مقصد PowerPC:
[-a32|-a64]
[-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|-m403|-m405|
-m440|-m464|-m476|-m7400|-m7410|-m7450|-m7455|-m750cl|-mgekko|
-mbroadway|-mppc64|-m620|-me500|-e500x2|-me500mc|-me500mc64|-me5500|
-me6500|-mppc64bridge|-mbooke|-mpower4|-mpwr4|-mpower5|-mpwr5|-mpwr5x|
-mpower6|-mpwr6|-mpower7|-mpwr7|-mpower8|-mpwr8|-mpower9|-mpwr9-ma2|
-mcell|-mspe|-mspe2|-mtitan|-me300|-mcom]
[-many] [-maltivec|-mvsx|-mhtm|-mvle]
[-mregnames|-mno-regnames]
[-mrelocatable|-mrelocatable-lib|-K PIC] [-memb]
[-mlittle|-mlittle-endian|-le|-mbig|-mbig-endian|-be]
[-nops=count]
گزینههای
مقصد PRU:
[-link-relax]
[-mnolink-relax]
[-mno-warn-regname-label]
گزینههای
مقصد RISC-V:
[-fpic|-fPIC|-fno-pic]
[-march=ISA|Profiles|Profiles_ISA]
[-mabi=ABI]
[-mlittle-endian|-mbig-endian]
گزینههای
مقصد RL78:
[-mg10]
[-m32bit-doubles|-m64bit-doubles]
گزینههای
مقصد RX:
[-mlittle-endian|-mbig-endian]
[-m32bit-doubles|-m64bit-doubles]
[-muse-conventional-section-names]
[-msmall-data-limit]
[-mpid]
[-mrelax]
[-mint-register=number]
[-mgcc-abi|-mrx-abi]
گزینههای
مقصد s390:
[-m31|-m64] [-mesa|-mzarch]
[-march=CPU]
[-mregnames|-mno-regnames]
[-mwarn-areg-zero]
[-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch]
گزینههای
مقصد SCORE:
[-EB][-EL][-FIXDD][-NWARN]
[-SCORE5][-SCORE5U][-SCORE7][-SCORE3]
[-march=score7][-march=score3]
[-USE_R1][-KPIC][-O0][-G
num][-V]
گزینههای
مقصد SPARC:
[-Av6|-Av7|-Av8|-Aleon|-Asparclet|-Asparclite
-Av8plus|-Av8plusa|-Av8plusb|-Av8plusc|-Av8plusd
-Av8plusv|-Av8plusm|-Av9|-Av9a|-Av9b|-Av9c
-Av9d|-Av9e|-Av9v|-Av9m|-Asparc|-Asparcvis
-Asparcvis2|-Asparcfmaf|-Asparcima|-Asparcvis3
-Asparcvisr|-Asparc5]
[-xarch=v8plus|-xarch=v8plusa]|-xarch=v8plusb|-xarch=v8plusc
-xarch=v8plusd|-xarch=v8plusv|-xarch=v8plusm|-xarch=v9
-xarch=v9a|-xarch=v9b|-xarch=v9c|-xarch=v9d|-xarch=v9e
-xarch=v9v|-xarch=v9m|-xarch=sparc|-xarch=sparcvis
-xarch=sparcvis2|-xarch=sparcfmaf|-xarch=sparcima
-xarch=sparcvis3|-xarch=sparcvisr|-xarch=sparc5
-bump]
[-32|-64]
[--enforce-aligned-data][--dcti-couples-detect]
گزینههای
مقصد TIC54X:
[-mcpu=54[123589]|-mcpu=54[56]lp]
[-mfar-mode|-mf]
[-merrors-to-file <filename>|-me
<filename>]
گزینههای
مقصد TIC6X:
[-march=arch] [-mbig-endian|-mlittle-endian]
[-mdsbt|-mno-dsbt]
[-mpid=no|-mpid=near|-mpid=far]
[-mpic|-mno-pic]
گزینههای
مقصد TILE-Gx:
[-m32|-m64][-EB][-EL]
گزینههای
مقصد Visium:
[-mtune=arch]
گزینههای
مقصد Xtensa:
[--[no-]text-section-literals] [--[no-]auto-litpools]
[--[no-]absolute-literals]
[--[no-]target-align] [--[no-]longcalls]
[--[no-]transform]
[--rename-section oldname=newname]
[--[no-]trampolines]
[--abi-windowed|--abi-call0]
گزینههای
مقصد Z80:
[-march=CPU[-EXT][+EXT]]
[-local-prefix=PREFIX]
[-colonless]
[-sdcc]
[-fp-s=FORMAT]
[-fp-d=FORMAT].SH
"توضیحات
(DESCRIPTION)" در
واقع، GNU as
خانوادهای
از
اسمبلرها
است. اگر از
اسمبلر GNU
روی یک
معماری
استفاده
میکنید (یا
قبلاً
استفاده
کردهاید)،
هنگام کار
با آن روی
معماری
دیگر با
محیطی
نسبتاً
مشابه
روبرو
خواهید شد.
هر نسخه
نقاط مشترک
زیادی با
دیگر
نسخهها
دارد، از
جمله
قالبهای
فایل شیء (object
file)، بیشتر
دستورالعملهای
اسمبلر (که
اغلب pseudo-ops
نامیده
میشوند) و
نحو (syntax)
اسمبلر.
هدف اصلی as اسمبل کردن خروجی کامپایلر C گنو "gcc" برای استفاده توسط پیونددهنده "ld" است. با این حال، تلاش شده است تا as هر آنچه را که اسمبلرهای دیگر برای همان ماشین اسمبل میکنند، بهدرستی اسمبل کند. هرگونه استثنا بهطور صریح مستند شده است. این بدان معنا نیست که as همیشه از همان نحو اسمبلر دیگر برای همان معماری استفاده میکند؛ برای مثال، چندین نسخه ناسازگار از نحو زبان اسمبلی 680x0 شناخته شده است.
هر بار که as را اجرا میکنید، دقیقاً یک برنامه مبدأ را اسمبل میکند. برنامه مبدأ از یک یا چند فایل تشکیل شده است. (ورودی استاندارد نیز یک فایل به شمار میرود.)
شما خط فرمانی حاوی صفر یا چند نام فایل ورودی را به as میدهید. فایلهای ورودی خوانده میشوند (از نام فایل سمت چپ به راست). هر آرگومان خط فرمان (در هر موقعیتی) که معنای خاصی نداشته باشد، بهعنوان نام فایل ورودی در نظر گرفته میشود.
اگر هیچ نام فایلی به as ندهید، تلاش میکند یک فایل ورودی را از ورودی استاندارد as (که معمولاً ترمینال شماست) بخواند. ممکن است لازم باشد کلید ctl-D را بفشارید تا به as اعلام کنید برنامه دیگری برای اسمبل وجود ندارد.
اگر نیاز دارید صراحتاً نام فایل ورودی استاندارد را در خط فرمان خود مشخص کنید، از -- استفاده نمایید.
اگر مبدأ خالی باشد، as یک فایل شیء کوچک و خالی تولید میکند.
ممکن است as هشدارها و پیامهای خطا را در فایل خطای استاندارد (معمولاً ترمینال شما) بنویسد. این امر نباید هنگامی که یک کامپایلر بهطور خودکار as را اجرا میکند رخ دهد. هشدارها فرضیاتی را گزارش میدهند که برای امکانپذیر ساختن ادامه اسمبل یک برنامه معیوب توسط as اتخاذ شدهاند؛ خطاها مشکل وخیمی را گزارش میکنند که فرآیند اسمبل را متوقف میسازد.
اگر as را از طریق کامپایلر C گنو فراخوانی میکنید، میتوانید از گزینه -Wa برای ارسال آرگومانها به اسمبلر استفاده کنید. آرگومانهای اسمبلر باید با کاما از یکدیگر (و از -Wa) جدا شوند. برای مثال:
gcc -c -g -O -Wa,-alh,-L file.c
این دستور دو گزینه را به اسمبلر ارسال میکند: -alh (تولید فهرستی در خروجی استاندارد به همراه کد مبدأ سطحبالا و اسمبلی) و -L (نگهداشتن نمادهای داخلی در جدول نمادها).
معمولاً نیازی به استفاده از این سازوکار -Wa ندارید، زیرا بسیاری از گزینههای خط فرمان کامپایلر بهطور خودکار توسط کامپایلر به اسمبلر ارسال میشوند. (میتوانید گرداننده کامپایلر GNU را با گزینه -v فراخوانی کنید تا دقیقاً ببینید چه گزینههایی را به هر گام کامپایل، از جمله اسمبلر، منتقل میکند.)
گزینهها (OPTIONS)
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
بهجای
گزینه
اولیه @file
قرار
میگیرند.
اگر file وجود
نداشته
باشد، یا
قابل
خواندن
نباشد، با
گزینه
بهصورت
لغوی
(تحتاللفظی)
برخورد شده
و حذف
نخواهد شد.
گزینهها در file با نویسه فاصله (whitespace) از یکدیگر جدا میشوند. یک نویسه فاصله را میتوان با قرار دادن کل گزینه در علامتهای نقلقول تکی یا دوتایی درون آن گنجاند. هر نویسهای (از جمله بکاسلش) را میتوان با افزودن یک بکاسلش به ابتدای آن وارد کرد. خود file میتواند حاوی گزینههای @file اضافی باشد؛ هر یک از این گزینهها بهصورت بازگشتی پردازش خواهند شد.
- -a[cdghilmns]
- فعالسازی فهرستبندیها (listings)، به هر یک از روشهای گوناگون:
- -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 پیشفرض است، اما میتوان از یک گزینه در زمان پیکربندی (configure) برای بازنویسی این مقدار استفاده کرد.
- -D
- در صورت پشتیبانی، اشکالزدایی را در بخشهای پسین (backends) مختص هدف فعال میکند؛ در غیر این صورت نادیده گرفته میشود. حتی اگر نادیده گرفته شود، این گزینه برای سازگاری اسکریپتها با فراخوانیهای سایر اسمبلرها پذیرفته میشود.
- --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 symbols) را با نوع "STT_COMMON" تولید کند یا خیر. مقدار پیشفرض را میتوان با گزینه پیکربندی --enable-elf-stt-common کنترل کرد.
- --emit-local-absolute
- حتی نمادهای مطلق (محلی) از پیشتعریفشده را نیز در جدول نمادهای خروجی درج میکند. توجه داشته باشید که این دقیقاً برعکس --strip-local-absolute نیست.
- --emulation=name
- اگر اسمبلر برای پشتیبانی از چندین پیکربندی هدف مختلف پیکربندی شده باشد، میتوان از این گزینه برای انتخاب فرم مورد نظر استفاده کرد.
- -f
- «سریع» (fast)---صرفنظر کردن از پیشپردازش فاصلههای خالی و کامنتها (فرض بر این است که منبع، خروجی کامپایلر است).
- -g
- --gen-debug
- تولید اطلاعات اشکالزدایی برای هر خط از سورس اسمبلر با استفاده از هر قالب اشکالزدایی که توسط هدف ترجیح داده شده است. در حال حاضر این به معنای یکی از قالبهای STABS، ECOFF یا DWARF2 است. هنگامی که قالب اشکالزدایی DWARF باشد، بخشهای ".debug_info" و ".debug_line" تنها در صورتی تولید میشوند که فایل اسمبلی خود آنها را تولید نکرده باشد.
- --gstabs
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسمبلی. اگر اشکالزدا بتواند آن را مدیریت کند، ممکن است به اشکالزدایی کد اسمبلی کمک کند.
- --gstabs+
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسمبلی با افزونههای GNU که احتمالاً فقط gdb میتواند آنها را پردازش کند، و ممکن است باعث فروپاشی (crash) سایر اشکالزداها یا خودداری آنها از خواندن برنامه شما شود. این ممکن است به اشکالزدایی کد اسمبلی کمک کند. در حال حاضر تنها افزونه 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 از تولید آن جلوگیری کرد. مقدار پیشفرض را میتوان توسط گزینه پیکربندی --enable-default-sframe کنترل کرد. نسخه فعلی دادههای ردگیری پشته SFrame منتشرشده SFRAME_VERSION_3 است.
- --gsframe-3
- تولید اطلاعات ردگیری پشته SFrame مطابق با نسخه ۳ مشخصات.
- --hash-size N
- نادیده گرفته میشود. برای سازگاری خط فرمان با سایر اسمبلرها پشتیبانی میشود.
- --help
- چاپ خلاصهای از گزینههای خط فرمان و خروج.
- --target-help
- چاپ خلاصهای از تمام گزینههای مختص به هدف و خروج.
- --info
- پیامهای اطلاعاتی را نادیده نگیر.
- --no-info
- نادیده گرفتن پیامهای اطلاعاتی.
- -I dir
- افزودن دایرکتوری dir به فهرست جستجو برای دستورالعملهای ".include".
- -J
- در مورد سرریز علامتدار (signed overflow) هشدار نده.
- -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
- جلوگیری از پُر کردن (padding) انتهای بخشهای خروجی توسط اسمبلر تا حد تراز (alignment) آن بخش. حالت پیشفرض، پُر کردن بخشها است، اما این کار میتواند فضایی را که ممکن است در اهداف دارای محدودیت شدید حافظه مورد نیاز باشد هدر دهد.
- -o objfile
- نامگذاری فایل شیء خروجی از as به objfile..IP -R 4 ادغام بخش data در بخش text.
- --reduce-memory-overheads
- نادیده گرفته میشود. برای سازگاری با ابزارهایی که گزینه یکسانی را به هر دو ابزار اسمبلر و پیونددهنده ارسال میکنند پشتیبانی میشود.
- --reloc-section-sym=all
- --reloc-section-sym=internal
- --reloc-section-sym=none
- کنترل اینکه آیا بازنشانیهای ارجاعدهنده به نمادهای با پیوند محلی، به جای آن برای استفاده از نمادهای بخش تنظیم شوند یا خیر. با "all" (پیشفرض)، بازنشانیها برای همه نمادهای واجد شرایط با پیوند محلی تبدیل میشوند. با "internal"، فقط بازنشانیهای مربوط به برچسبهای داخلی (نمادهای مطابق با پیشوند ".L") تبدیل میشوند. با "none"، هیچگونه تبدیلی انجام نمیشود.
- --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
- صدور خطا یا هشدار برای دستورالعمل نامعتبر .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"، و
"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" و
"armv9.5-a".
اگر هر دو گزینه -mcpu و -march مشخص شده باشند، اسمبلر از مقدار تعیینشده برای -mcpu استفاده خواهد کرد. اگر هیچکدام مشخص نشده باشند، پیشفرض اسمبلر -mcpu=all خواهد بود.
گزینه معماری میتواند با همان گزینههای افزونه مجموعه دستورالعمل مربوط به گزینه -mcpu گسترش یابد. برخلاف -mcpu، افزونهها همواره به صورت پیشفرض فعال نیستند..IP -mbig-obj 4 در مقصد PE/COFF، این گزینه استفاده از قالب فایل شیء بزرگ را اجباری میکند که امکان داشتن بیش از ۳۲۷۶۸ بخش را فراهم میسازد.
- -mverbose-error
- این گزینه پیامهای خطای پرگو (verbose) را برای 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 (بوتلودر 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 Manual را ببینید.
- -g
- این گزینه زمانی استفاده میشود که کامپایلر اطلاعات اشکالزدایی تولید میکند. هنگامی که gcc از mips-tfile برای تولید اطلاعات اشکالزدایی جهت ECOFF استفاده میکند، برچسبهای محلی باید به فایل شیء منتقل شوند. در غیر این صورت این گزینه هیچ اثری ندارد.
- -Gsize
- نمادهای مشترک محلی بزرگتر از size در ".bss" قرار میگیرند، در حالی که نمادهای کوچکتر در ".sbss" قرار داده میشوند.
- -F
- -32addr
- این گزینهها برای سازگاری با نسخههای پیشین نادیده گرفته میشوند.
هنگامی که as برای یک پردازندهٔ ARC پیکربندی شده باشد، گزینههای زیر در دسترس هستند.
- -mcpu=cpu
- این گزینه گونهٔ پردازندهٔ اصلی را انتخاب میکند.
- -EB | -EL
- خروجی بزرگپایان (-EB) یا کوچکپایان (-EL) را انتخاب میکند.
- -mcode-density
- دستورالعملهای افزونهٔ Code Density را فعال میکند.
هنگامی که as برای خانوادهٔ پردازندههای ARM پیکربندی شده باشد، گزینههای زیر در دسترس هستند.
- -mcpu=processor[+extension...]
- مشخص میکند کدام گونه از پردازندههای ARM مقصد است.
- -march=architecture[+extension...]
- مشخص میکند کدام گونه از معماری ARM توسط مقصد استفاده میشود.
- -mfpu=floating-point-format
- مشخص میکند کدام معماری ممیز شناور (Floating Point) مقصد است.
- -mfloat-abi=abi
- مشخص میکند کدام ABI ممیز شناور مورد استفاده قرار گیرد.
- -mthumb
- رمزگشایی دستورالعملها را تنها برای Thumb فعال میکند.
- -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
- قرارداد فراخوانی رویهٔ مورد استفاده را انتخاب میکند.
- -EB | -EL
- خروجی بزرگپایان (-EB) یا کوچکپایان (-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"..IP -mfdpic 4 اسمبل کردن برای FDPIC ABI.
- -mno-fdpic
- -mnopic
- غیرفعال کردن -mfdpic.
گزینههای زیر زمانی در دسترس هستند که as برای خانوادهٔ پردازندههای BPF هسته لینوکس پیکربندی شده باشد.
@chapter ویژگیهای وابسته به BPF
گزینههای BPF (BPF Options)
- -EB
- این گزینه مشخص میکند که اسمبلر باید eBPF از نوع big-endian تولید کند.
- -EL
- این گزینه مشخص میکند که اسمبلر باید eBPF از نوع little-endian تولید کند.
- -mdialect=dialect
- این گزینه گویش (dialect) زبان اسمبلی را برای شناسایی در حین اسمبل کردن مشخص میکند. اسمبلر از normal و pseudoc پشتیبانی میکند.
- -misa-spec=spec
- این گزینه
نسخهٔ
مجموعه
دستورالعملهای
BPF را برای
استفاده در
هنگام
اسمبل کردن
مشخص
میکند.
نسخههای BPF ISA
پشتیبانیشده
عبارتند از
v1، v2، v3 و v4.
مقدار xbpf را میتوان برای شناسایی دستورالعملهای اضافی که توسط GCC برای اهداف آزمایشی استفاده میشوند مشخص کرد. اما توجه داشته باشید که این مقدار BPF معتبر نیست.
- -mno-relax
- این گزینه به اسمبلر اعلام میکند که دستورالعملها را سادهسازی (relax) نکند.
توجه داشته باشید که اگر هیچ گزینهٔ 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
- ارسال
بازنشانیهای
(relocations) "R_CKCORE_PCREL_IMM26BY2"
برای
دستورالعملهای
"bsr" به
پیونددهنده
(linker).
این گزینه تنها برای مقصدهای 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
- فعال/غیرفعال کردن قرارگیری استخرهای لیترال پس از انشعابهای غیرشرطی. این گزینه بهطور پیشفرض فعال است.
- -mistack
- -mno-istack
- فعال/غیرفعال کردن دستورالعملهای پشتهٔ وقفه (interrupt stack). این گزینه بهطور پیشفرض روی پردازندههای CK801، CK802 و CK802 فعال است.
گزینههای زیر بهطور صریح دستورالعملهای اختیاری معینی را فعال میکنند. این ویژگیها همچنین بهطور ضمنی با استفاده از "-mcpu=" برای مشخص کردن پردازندهای که از آنها پشتیبانی میکند، فعال میشوند.
- -mhard-float
- فعالسازی دستورالعملهای ممیز شناور سختافزاری (hard float).
- -mmp
- فعالسازی دستورالعملهای چندپردازندهای (multiprocessor)..IP -mcp 4 فعالسازی دستورالعملهای پردازنده کمکی (coprocessor).
- -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
- اندازه
کلمه را
انتخاب
میکند که
۳۲ بیتی یا
۶۴ بیتی
است. گزینه
--32 بیانگر
معماری Intel i386
است، در
حالی که --x32 و
--64
بهترتیب
بیانگر
معماری AMD x86-64
با اندازه
کلمه ۳۲
بیتی یا ۶۴
بیتی هستند.
این گزینهها فقط با قالب فایل شیء 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"،
"znver6"،
"btver1"،
"btver2"،
"generic32" و
"generic64".
علاوه بر مجموعه دستورالعملهای پایه، میتوان به اسمبلر دستور داد که نمادهای افزونههای گوناگون را بپذیرد. برای نمونه، "-march=i686+sse4+vmx" پردازنده i686 را با sse4 و vmx گسترش میدهد. در حال حاضر افزونههای زیر پشتیبانی میشوند: 8087، 287، 387، 687، "cmov"، "fxsr"، "mmx"، "sse"، "sse2"، "sse3"، "sse4a"، "ssse3"، "sse4.1"، "sse4.2"، "sse4"، "avx"، "avx2"، "lahf_sahf"، "monitor"، "adx"، "rdseed"، "prfchw"، "smap"، "mpx"، "sha"، "rdpid"، "ptwrite"، "cet"، "gfni"، "vaes"، "vpclmulqdq"، "prefetchwt1"، "clflushopt"، "se1"، "clwb"، "movdiri"، "movdir64b"، "enqcmd"، "serialize"، "tsxldtrk"، "kl"، "widekl"، "hreset"، "avx512f"، "avx512cd"، "avx512er"، "avx512pf"، "avx512vl"، "avx512bw"، "avx512dq"، "avx512ifma"، "avx512vbmi"، "avx512_4fmaps"، "avx512_4vnniw"، "avx512_vpopcntdq"، "avx512_vbmi2"، "avx512_vnni"، "avx512_bitalg"، "avx512_vp2intersect"، "tdx"، "avx512_bf16"، "avx_vnni"، "avx512_fp16"، "avx512_bmm"، "prefetchi"، "avx_ifma"، "avx_vnni_int8"، "cmpccxadd"، "wrmsrns"، "msrlist"، "avx_ne_convert"، "rao_int"، "fred"، "lkgs"، "avx_vnni_int16"، "sha512"، "sm3"، "sm4"، "pbndkb"، "avx10.1"، "avx10.1/512"، "avx10.1/256"، "avx10.1/128"، "user_msr"، "msr_imm"، "apx_f"، "apx_nci"، "apx_ndd"، "apx_nf"، "apx_nci_ndd_nf"، "avx10.2"، "avx10.2/512"، "avx10.2/256"، "avx10.2/128"، "movrs"، "amx_int8"، "amx_bf16"، "amx_fp16"، "amx_complex"، "amx_transpose"، "amx_tf32"، "amx_fp8" "amx_movrs"، "amx_avx512"، "amx_tile"، "vmx"، "vmfunc"، "smx"، "xsave"، "xsaveopt"، "xsavec"، "xsaves"، "aes"، "pclmul"، "fsgsbase"، "rdrnd"، "f16c"، "bmi2"، "fma"، "movbe"، "ept"، "lzcnt"، "popcnt"، "hle"، "rtm"، "tsx"، "invpcid"، "clflush"، "mwaitx"، "clzero"، "wbnoinvd"، "pconfig"، "waitpkg"، "uintr"، "cldemote"، "rdpru"، "mcommit"، "sev_es"، "lwp"، "fma4"، "xop"، "cx16"، "syscall"، "rdtscp"، "3dnow"، "3dnowa"، "sse4a"، "sse5"، "snp"، "invlpgb"، "tlbsync"، "rmpquery"، "rmpread"، "svme"، "gmism2"، "gmiccs"، "padlockrng2"، "padlockphe2"، "padlockxmodx" و "padlock". توجه داشته باشید که این نمادهای افزونه میتوانند با پیشوند "no" همراه شوند تا قابلیت مربوطه (و هر قابلیت وابسته به آن) لغو شود. همچنین توجه داشته باشید که پسوندهای مجاز روی "-march=avx10.<N>" یک محدودیت طول بردار را اعمال میکنند، به این معنا که با وجود اینکه این گزینهها در اصل «فعالکننده» هستند، استفاده از این پسوندها همه دستورالعملهای دارای عملوندهای برداری یا ثباتهای ماسک عریضتر را غیرفعال خواهد کرد..Sp هنگامی که رهنمود ".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
- این گزینه مشخص میکند که اسمبلر باید انتقال برداری همتراز را به صورت انتقال برداری ناهمتراز کدگذاری کند.
- -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 را در برابر مقصدهای انشعاب سراسری غیرضعیفِ تعریفشده با نمایانی پیشفرض بهینهسازی کرده و حذف میکند. گزینهٔ -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 بازنشانیهای منعطف را تولید خواهد کرد. -mrelax-relocations=no بازنشانیهای منعطف را تولید نخواهد کرد..IP -mtls-check=no 4
- -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، که دستورهای بازگشت (ret) را تراز میکند؛ و indirect، که پرشها و فراخوانیهای غیرمستقیم را تراز میکند. حالت پیشفرض -malign-branch=jcc+fused+jmp است.
- -malign-branch-prefix-size=NUM
- این گزینه حداکثر تعداد پیشوندهای مجاز روی یک دستورالعمل را برای تراز کردن انشعابها مشخص میکند. NUM باید بین ۰ و ۵ باشد. مقدار پیشفرض NUM برابر ۵ است.
- -mbranches-within-32B-boundaries
- این گزینه پرشهای شرطی، پرشهای شرطی ادغامشده و پرشهای بدون شرط را در مرزهای ۳۲ بایتی با حداکثر ۵ پیشوند سگمنت روی یک دستورالعمل تراز میکند. این گزینه معادل است با: -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
- این گزینهها کنترل میکنند که آیا اسمبلر پیش از دستورالعملهای انشعاب نزدیک غیرمستقیم، باید 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-only توسط اسمبلر را کنترل میکنند. -mevexrcig=rne بیتهای RC دستورالعمل EVEX را با 00 کُدگذاری میکند، که حالت پیشفرض است. -mevexrcig=rd، -mevexrcig=ru و -mevexrcig=rz دستورالعملهای EVEX از نوع SAE-only را به ترتیب با بیتهای RC معادل 01، 10 و 11 کُدگذاری میکنند.
- -mamd64
- -mintel64
- این گزینه مشخص میکند که اسمبلر در حالت 64-bit تنها ISAهای AMD64 یا Intel64 را بپذیرد. حالت پیشفرض پذیرش ISAهای مشترک، فقط Intel64، و AMD64 است.
- -O0 | -O | -O1 | -O2 | -Os
- کُدگذاری
دستورالعملها
را برای
رسیدن به
اندازه
دستورالعمل
کوچکتر
بهینهسازی
میکند. -O و
-O1
دستورالعملهای
بارگذاری
ثبات 64-bit با
مقادیر
فوری (immediate) ۶۴
بیتی را
بهصورت
دستورالعملهای
بارگذاری
ثبات 32-bit با
مقادیر
فوری ۳۱
بیتی یا ۳۲
بیتی
کُدگذاری
میکنند،
دستورالعملهای
پاکسازی
ثبات 64-bit را با
دستورالعملهای
پاکسازی
ثبات 32-bit
کُدگذاری
میکنند،
دستورالعملهای
پاکسازی
ثبات
برداری 256-bit/512-bit
متعلق به VEX/EVEX
را با
دستورالعملهای
پاکسازی
ثبات
برداری 128-bit
متعلق به VEX
کُدگذاری
میکنند،
دستورالعملهای
بارگذاری/ذخیره
(load/store) ثبات
برداری 128-bit/256-bit
متعلق به EVEX
را با
دستورالعملهای
بارگذاری/ذخیره
ثبات
برداری VEX
کُدگذاری
میکنند، و
دستورالعملهای
منطقی صحیح
بستهبندیشده
(packed integer) برداری
128-bit/256-bit متعلق به
EVEX را با
منطقی صحیح
بستهبندیشده
128-bit/256-bit متعلق به
VEX کُدگذاری
میکنند.
-O2 شامل بهینهسازیهای -O1 است، بهعلاوه دستورالعملهای پاکسازی ثبات برداری 256-bit/512-bit متعلق به EVEX را با دستورالعملهای پاکسازی ثبات برداری 128-bit متعلق به EVEX کُدگذاری میکند. در حالت 64-bit، عملوندهای مبدأ دستورالعملهای کُدگذاریشده با VEX که خاصیت جابجاییپذیری دارند، در صورتی که این کار استفاده از فرم پیشوند ۲ بایتی VEX را بهجای فرم ۳ بایتی ممکن سازد، جابهجا میشوند. شکلهای خاصی از AND و همچنین OR با همان عملوند (ثبات) که دو بار مشخص شده باشد نیز به TEST تبدیل میشوند.
-Os شامل بهینهسازیهای -O2 است، بهعلاوه آزمونهای ثبات 16-bit، 32-bit و 64-bit با مقادیر فوری را بهصورت آزمونهای ثبات 8-bit با مقادیر فوری کُدگذاری میکند. -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 (میتسوبیشی M32R سابق) پیکربندی شده باشد..IP --m32rx 4 مشخص میکند که کدام پردازنده از خانواده M32R هدف است. پیشفرض معمولاً M32R است، اما این گزینه آن را به M32RX تغییر میدهد.
- --warn-explicit-parallel-conflicts or --Wp
- هنگام مواجهه با ساختارهای موازی مشکوک، پیامهای هشدار تولید میکند.
- --no-warn-explicit-parallel-conflicts or --Wnp
- هنگام مواجهه با ساختارهای موازی مشکوک، پیامهای هشدار تولید نمیکند.
گزینههای زیر هنگامی در دسترس هستند که as برای سری Motorola 68000 پیکربندی شده باشد.
- -l
- ارجاعات به نمادهای تعریفنشده را به جای دو کلمه، به یک کلمه کوتاهتر میکند.
- -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 را برای عبارتهای تفاضلی صادر خواهد کرد.
- -mno-link-relax
- فرض میکند که LD دستورالعملهای LDI32 را بهینهسازی نمیکند. در نتیجه، بازنشانیهای DIFF صادر نخواهند شد.
- -mno-warn-regname-label
- در صورتی که نام یک برچسب با نام یک ثبات مطابقت داشته باشد، هشدار نمیدهد. معمولاً برنامهنویسان اسمبلی مایلند این هشدار صادر شود. کامپایلرهای C ممکن است بخواهند این گزینه را غیرفعال کنند.
- -mcore-revision=revision
- این گزینه بازنگری هسته PRU را برای اسمبل کردن مشخص میکند. بازنگریهای زیر شناسایی میشوند: "V1"، "V2"، "V3" و "V4". پیشفرض اسمبلر بر روی "V3" است.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده MIPS پیکربندی شده باشد.
- -G num
- این گزینه حداکثر اندازه شیئی را که میتوان به صورت ضمنی با ثبات "gp" به آن ارجاع داد، تعیین میکند. این گزینه فقط برای مقاصدی پذیرفته میشود که از قالب ECOFF استفاده میکنند، مانند یک DECstation که Ultrix را اجرا میکند. مقدار پیشفرض 8 است.
- -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
- در صورتی که خواندن ثبات مقصد یک دستورالعمل mfhi یا mflo در دو دستورالعمل بعدی رخ دهد، باعث درج دستورات nop میشود.
- -mfix-rm7000
- -mno-fix-rm7000
- در صورتی که پس از یک دستورالعمل dmult یا dmultu یک دستورالعمل load بیاید، باعث درج دستورات nop میشود..IP -mfix-r5900 4
- -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
- استفاده از عملیاتهای ممیز شناور روی ثباتهای با دقت یگانهٔ (single-precision) فردشماره را در صورت پشتیبانی 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
- تولید کد برای افزونهٔ کاربرد-خاص 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 eXtended Physical Address (XPA). این به اسمبلر میگوید که دستورالعملهای XPA را بپذیرد. -mno-xpa این گزینه را غیرفعال میکند.
- -mmt
- -mno-mt
- تولید کد برای افزونهٔ کاربرد-خاص MT. این به اسمبلر میگوید که دستورالعملهای MT را بپذیرد. -mno-mt این گزینه را غیرفعال میکند.
- -mmcu
- -mno-mcu
- تولید کد برای افزونهٔ کاربرد-خاص MCU. این به اسمبلر میگوید که دستورالعملهای MCU را بپذیرد. -mno-mcu این گزینه را غیرفعال میکند..IP -mcrc 4
- -mno-crc
- تولید کد برای افزونهٔ کاربرد-خاص (ASE) بررسی افزونگی چرخشی (CRC) در MIPS. این گزینه به اسمبلر اعلام میکند که دستورالعملهای CRC را بپذیرد. -mno-crc این گزینه را غیرفعال میکند.
- -mginv
- -mno-ginv
- تولید کد برای افزونهٔ کاربرد-خاص ابطال سراسری (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 EXTensions R2 (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 ایجاد میکنند (و تنها برای سطح ۲ و بالاتر معماری مجموعه دستورالعمل کار میکنند)؛ --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"
- غیرفعال کردن تعدیل fp-as-gp برای این فایل.
- "-mb2bb-relax"
- بهینهسازی انشعابهای متوالی (Back-to-back).
- "-mno-all-relax"
- غیرفعال کردن تمامی تعدیلها برای این فایل.
- "-march=<arch name>"
- اسمبل برای معماری <arch name> که میتواند v3، v3j، v3m، v3f، v3s، v2، v2j، v2f یا v2s باشد.
- "-mbaseline=<baseline>"
- اسمبل برای خط پایهٔ <baseline> که میتواند v2، v3 یا v3m باشد.
- "-mfpu-freg=FREG"
- تعیین یک پیکربندی FPU.
- "0 8 SP / 4 DP registers"
- "1 16 SP / 8 DP registers"
- "2 32 SP / 16 DP registers"
- "3 32 SP / 32 DP registers"
- "-mabi=abi"
- مشخص کردن نسخهٔ abi؛ مقدار <abi> میتواند v1، v2، v2fp یا v2fpp باشد.
- "-m[no-]mac"
- فعال/غیرفعال کردن پشتیبانی از دستورالعملهای ضرب (Multiply).
- "-m[no-]div"
- فعال/غیرفعال کردن پشتیبانی از دستورالعملهای تقسیم (Divide).
- "-m[no-]16bit-ext"
- فعال/غیرفعال کردن افزونهٔ 16-bit
- "-m[no-]dx-regs"
- فعال/غیرفعال کردن ثباتهای d0/d1
- "-m[no-]perf-ext"
- فعال/غیرفعال کردن افزونهٔ کارایی (Performance extension)
- "-m[no-]perf2-ext"
- فعال/غیرفعال کردن افزونهٔ کارایی ۲ (Performance extension 2)
- "-m[no-]string-ext"
- فعال/غیرفعال کردن افزونهٔ رشته (String extension)
- "-m[no-]reduced-regs"
- فعال/غیرفعال کردن گزینهٔ پیکربندی ثباتهای کاهشیافته (GPR16)
- "-m[no-]audio-isa-ext"
- فعال/غیرفعال کردن افزونهٔ AUDIO ISA
- "-m[no-]fpu-sp-ext"
- فعال/غیرفعال کردن افزونهٔ FPU SP
- "-m[no-]fpu-dp-ext"
- فعال/غیرفعال کردن افزونهٔ FPU DP
- "-m[no-]fpu-fma"
- فعال/غیرفعال کردن دستورالعملهای ضرب-جمع ادغامشدهٔ FPU (fused-multiply-add)
- "-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
- تولید کد برای پردازندههای دارای دستورالعملهای برداری-اسکالر (VSX).
- -mhtm
- تولید کد برای پردازندههای دارای دستورالعملهای حافظهٔ تراکنشی سختافزاری (Hardware Transactional Memory).
- -mpower4, -mpwr4
- تولید کد برای معماری Power4.
- -mpower5, -mpwr5, -mpwr5x
- تولید کد برای معماری Power5.
- -mpower6, -mpwr6
- تولید کد برای معماری Power6..IP "-mpower7, -mpwr7" 4 تولید کد برای معماری 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.
- -nops=count
- اگر یک دستورالعمل همترازی بیش از count دستور nop درج کند، یک پرش در ابتدا قرار میدهد تا از اجرای nopها صرفنظر شود.
گزینههای زیر هنگامی در دسترس هستند که as برای پردازندهٔ RISC-V پیکربندی شده باشد.
- -fpic
- -fPIC
- تولید کد مستقل از موقعیت (position-independent code)
- -fno-pic
- کد مستقل از موقعیت تولید نشود (پیشفرض)
- -march=ISA|Profiles|Profiles_ISA
- انتخاب isa پایه، همانطور که توسط ISA یا Profiles یا Profies_ISA مشخص شده است. برای نمونه -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. اگر این گزینه و مشخصههای معماری تنظیم نشده باشند، اسمبلر تنظیمات پیکربندی پیشفرض --with-arch=ISA را بررسی خواهد کرد.
- -misa-spec=ISAspec
- انتخاب نسخهٔ مشخصات (spec) پیشفرض 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" دنبال میشود تا نشاندهندهٔ قرارداد فراخوانی ممیز شناور با دقت یگانه، دقت مضاعف یا دقت چهارگانه باشد، یا هیچچیز یا "e" برای مشخص کردن قرارداد فراخوانی ممیز شناور نرمافزاری (soft-float) باشد ("e" نشاندهندهٔ یک ABI از نوع soft-float RVE است).
- -mrelax
- بهرهگیری از سادهسازیهای پیونددهنده (linker relaxations) برای کاهش تعداد دستورالعملهای مورد نیاز جهت محاسبهٔ نشانیهای نماد. (پیشفرض)
- -mno-relax
- انجام ندادن سادهسازیهای پیونددهنده.
- -march-attr
- تولید محتوای پیشفرض برای بخش مشخصهٔ ELF در riscv اگر دستورالعملهای .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی به کار میرود که پیونددهنده یا بارگذار زمان اجرا برای بررسی سازگاری به آنها نیاز دارد. این اطلاعات شامل رشتهٔ ISA، نیازمندی همترازی پشته، دسترسیهای ناتراز به حافظه، و نسخهٔ اصلی، فرعی و بازنگری مشخصات سطح دسترسی ویژه میشود.
- -mno-arch-attr
- اگر دستورالعملهای .attribute تنظیم نشده باشند، بخش پیشفرض مشخصهٔ ELF در riscv تولید نشود.
- -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
- هشدار دادن هرگاه عملوند یک ثبات پایه یا شاخص مشخص شده باشد اما مقدار آن صفر ارزیابی شود.
- -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 است، هرگونه بررسی نوع نام ثبات را غیرفعال میکند..PP گزینههای زیر زمانی که as برای یک پردازندهٔ TMS320C6000 پیکربندی شده باشد، در دسترس هستند.
- -march=arch
- (تنها)
دستورالعملهای
معماری arch
را فعال
میکند.
بهطور
پیشفرض،
تمام
دستورالعملها
مجاز هستند.
مقدارهای زیر برای arch پذیرفته میشوند: "c62x"، "c64x"، "c64x+"، "c67x"، "c67x+"، "c674x".
- -mdsbt
- -mno-dsbt
- گزینهٔ -mdsbt باعث میشود اسمبلر مشخصهٔ "Tag_ABI_DSBT" را با مقدار ۱ تولید کند که نشان میدهد کد از آدرسدهی DSBT استفاده میکند. گزینهٔ -mno-dsbt که پیشفرض است، باعث میشود این برچسب مقدار ۰ داشته باشد که نشان میدهد کد از آدرسدهی DSBT استفاده نمیکند. اگر شیءفایلهای از انواع مختلف (DSBT و غیر-DSBT) به یکدیگر پیوند داده شوند، پیونددهنده هشداری صادر خواهد کرد.
- -mpid=no
- -mpid=near
- -mpid=far
- گزینهٔ -mpid= باعث میشود اسمبلر مشخصهٔ "Tag_ABI_PID" را با مقداری که نشاندهندهٔ شیوهٔ آدرسدهی دادهٔ مورد استفاده در کد است تولید کند. -mpid=no که پیشفرض است، نشاندهندهٔ آدرسدهی دادهٔ وابسته به مکان است؛ -mpid=near نشاندهندهٔ آدرسدهی مستقل از مکان با دسترسیهای GOT با استفاده از آدرسدهی DP نزدیک است؛ و -mpid=far نشاندهندهٔ آدرسدهی مستقل از مکان با دسترسیهای GOT با استفاده از آدرسدهی DP دور است. اگر شیءفایلهای ساختهشده با تنظیمات متفاوتی از این گزینه به یکدیگر پیوند داده شوند، پیونددهنده هشداری صادر خواهد کرد.
- -mpic
- -mno-pic
- گزینهٔ -mpic باعث میشود اسمبلر مشخصهٔ "Tag_ABI_PIC" را با مقدار ۱ تولید کند که نشان میدهد کد از آدرسدهی کد مستقل از مکان استفاده میکند. گزینهٔ "-mno-pic" که پیشفرض است، باعث میشود این برچسب مقدار ۰ داشته باشد که نشاندهندهٔ آدرسدهی کد وابسته به مکان است. اگر شیءفایلهای از انواع مختلف (وابسته به مکان و مستقل از مکان) به یکدیگر پیوند داده شوند، پیونددهنده هشداری صادر خواهد کرد.
- -mbig-endian
- -mlittle-endian
- تولید کد برای ترتیب بایت (endianness) مشخصشده. پیشفرض، little-endian است.
گزینههای زیر زمانی که as برای یک پردازندهٔ TILE-Gx پیکربندی شده باشد، در دسترس هستند.
- -m32 | -m64
- انتخاب اندازهٔ کلمه (word size)، ۳۲ بیتی یا ۶۴ بیتی.
- -EB | -EL
- انتخاب ترتیب بایت (endianness)، مهینبایت (-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، مقادیر لفظی در بخش text پراکنده میشوند تا حتیالامکان به ارجاعاتشان نزدیک نگه داشته شوند. این عمل ممکن است برای فایلهای اسمبلی بزرگ ضروری باشد، جایی که در غیر این صورت مقادیر لفظی خارج از محدودهٔ دستورالعملهای "L32R" در بخش text قرار خواهند گرفت. مقادیر لفظی پس از دستورهای راهنمای ".literal_position" یا پیش از دستورالعملهای "ENTRY" در استخرها گروهبندی میشوند. این گزینهها تنها بر مقادیر لفظی ارجاعشده از طریق دستورالعملهای "L32R" به صورت PC-relative اثر میگذارند؛ مقادیر لفظی برای دستورالعملهای حالت مطلق "L32R" بهطور جداگانه مدیریت میشوند.
- --auto-litpools | --no-auto-litpools
- نحوهٔ رفتار با استخرهای مقادیر لفظی را کنترل میکند. پیشفرض --no-auto-litpools است که در صورت نبودِ --text-section-literals، مقادیر لفظی را در بخشهای جداگانهای در فایل خروجی قرار میدهد. این کار امکان قرارگیری استخر لفظی را در یک RAM/ROM داده فراهم میسازد. با --auto-litpools، مقادیر لفظی در بخش text پراکنده میشوند تا حتیالامکان نزدیک به ارجاعاتشان بمانند، و نیازی به دستورهای راهنمای صریح ".literal_position" نخواهد بود. این امر ممکن است برای توابع بسیار بزرگ ضروری باشد، جایی که ممکن است یک استخر لفظی منفرد در آغاز تابع توسط دستورالعملهای "L32R" در انتهای آن قابل دسترسی نباشد. این گزینهها تنها بر مقادیر لفظی ارجاعشده از طریق دستورالعملهای "L32R" وابسته به PC اثر میگذارند؛ مقادیر لفظی برای دستورالعملهای حالت مطلق "L32R" بهطور جداگانه مدیریت میشوند. هنگام استفادهٔ همزمان با --text-section-literals، گزینهٔ --auto-litpools اولویت دارد.
- --absolute-literals | --no-absolute-literals
- برای اسمبلر مشخص میکند که آیا دستورالعملهای "L32R" از آدرسدهی مطلق یا وابسته به PC استفاده کنند. اگر پردازنده شامل گزینهٔ آدرسدهی مطلق باشد، پیشفرض استفاده از بازنشانیهای (relocations) مطلق "L32R" است. در غیر این صورت، تنها بازنشانیهای وابسته به PC برای "L32R" قابل استفاده هستند.
- --target-align | --no-target-align
- همترازی خودکار را برای کاهش جریمههای انشعاب، با مقداری افزایش در اندازهٔ کد، فعال یا غیرفعال میکند. این بهینهسازی بهطور پیشفرض فعال است. توجه داشته باشید که اسمبلر همواره دستورالعملهایی نظیر "LOOP" را که الزامات همترازی ثابت دارند، همتراز خواهد کرد.
- --longcalls | --no-longcalls
- تبدیل دستورالعملهای فراخوانی (call) را برای مجاز ساختن فراخوانیها در دامنهٔ بزرگتری از آدرسها فعال یا غیرفعال میکند. این گزینه باید زمانی استفاده شود که مقصدهای فراخوانی ممکن است خارج از محدوده باشند. این گزینه ممکن است هم اندازهٔ کد و هم کارایی را کاهش دهد، اما پیونددهنده عموماً هنگامی که یک فراخوانی در نهایت درون محدوده قرار گیرد میتواند سربار غیرضروری را حذف کند. پیشفرض --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.SS "گزینههای خط فرمان (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
- پذیرش برچسبهای بدون دونقطه (colon). با تمام نمادها در ابتدای خط به عنوان برچسب رفتار میشود.
- -sdcc
- پذیرش کد اسمبلی تولیدشده توسط SDCC.
- -fp-s=FORMAT
- قالب اعداد ممیز شناور با دقت تکی. پیشفرض: ieee754 (۳۲ بیت).
- -fp-d=FORMAT
- قالب اعداد ممیز شناور با دقت مضاعف. پیشفرض: ieee754 (۶۴ بیت).
همچنین ببینید (SEE ALSO)
کپیرایت و تکثیر (COPYRIGHT)
Copyright (c) 1991-2026 Free Software Foundation, Inc.
اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ بالاتر منتشرشده توسط بنیاد نرمافزارهای آزاد (Free Software Foundation)؛ بدون بخشهای تغییرناپذیر، بدون متنهای روی جلد، و بدون متنهای پشت جلد داده میشود. یک نسخه از مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.
| 2026-08-03 | binutils-2.47 |