| 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 در واقع
خانوادهای
از
اسمبلرها
است. اگر از
اسمبلر گنو
در یک
معماری
استفاده
میکنید (یا
استفاده
کردهاید)،
باید هنگام
استفاده از
آن در
معماری
دیگر، با
محیط
نسبتاً
مشابهی
روبرو شوید.
هر نسخه با
سایر
نسخهها
مشترکات
زیادی
دارد، از
جمله
قالبهای
فایل شیء،
بیشتر
دستورالعملهای
اسمبلر (که
اغلب 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 با نویسههای فاصله از یکدیگر جدا میشوند. یک نویسهٔ فاصله میتواند با محصور کردن کل گزینه در علامتهای نقلقول تکی یا دوتایی، در گزینه گنجانده شود. هر نویسهای (از جمله بکاسلش) را میتوان با قرار دادن یک بکاسلش در ابتدای آن نویسه در گزینه گنجاند. خود file ممکن است شامل گزینههای @file بیشتری باشد؛ هر یک از این گزینهها بهصورت بازگشتی پردازش خواهند شد.
- -a[cdghilmns]
- تولید فهرستها را به روشهای گوناگون فعال میکند:
- -ac
- صرفنظر کردن از شرطهای نادرست
- -ad
- صرفنظر کردن از دستورالعملهای اشکالزدایی
- -ag
- گنجاندن اطلاعات عمومی، مانند نسخهٔ as و گزینههای ارسالشده
- -ah
- گنجاندن کد منبع سطحبالا
- -al
- گنجاندن اسمبلی
- -ali
- گنجاندن اسمبلی همراه با ginsn
- -am
- گنجاندن بسطهای ماکرو
- -an
- صرفنظر کردن از پردازش فرمها
- -as
- گنجاندن نمادها
- =file
- تعیین نام فایل فهرست
میتوانید این گزینهها را با هم ترکیب کنید؛ برای مثال، از -aln برای فهرست اسمبلی بدون پردازش فرمها استفاده کنید. گزینهٔ =file در صورت استفاده باید آخرین گزینه باشد. به تنهایی، -a بهصورت پیشفرض معادل -ahls است.
- --alternate
- شروع در حالت ماکروی جایگزین.
- --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 باید نمادهای عمومی را با نوع "STT_COMMON" تولید کند یا خیر. مقدار پیشفرض را میتوان با گزینهٔ پیکربندی --enable-elf-stt-common کنترل کرد.
- --emit-local-absolute
- حتی نمادهای مطلق (محلی) از پیش تعریفشده را نیز در جدول نماد خروجی درج میکند. توجه داشته باشید که این گزینه دقیقاً برعکس --strip-local-absolute نیست.
- --emulation=name
- اگر اسِمبلر برای پشتیبانی از چندین پیکربندی هدف مختلف پیکربندی شده باشد، میتوان از این گزینه برای انتخاب ساختار مورد نظر استفاده کرد.
- -f
- «سریع» - صرفنظر کردن از پیشپردازش فاصلههای خالی و کامنتها (با این فرض که کد منبع، خروجی کامپایلر است).
- -g
- --gen-debug
- تولید اطلاعات اشکالزدایی برای هر خط از کد منبع اسِمبلی با استفاده از هر قالب اشکالزدایی که هدف ترجیح میدهد. این مورد در حال حاضر به معنای یکی از قالبهای STABS، ECOFF یا DWARF2 است. هنگامی که قالب اشکالزدایی DWARF باشد، بخشهای ".debug_info" و ".debug_line" تنها در صورتی درج میشوند که خود فایل اسِمبلی آنها را تولید نکرده باشد.
- --gstabs
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسِمبلر. این کار در صورتی که اشکالزدا بتواند آن را پردازش کند، ممکن است به اشکالزدایی کد اسِمبلی کمک کند.
- --gstabs+
- تولید اطلاعات اشکالزدایی stabs برای هر خط اسِمبلر، با افزونههای 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 متوقف کرد. مقدار پیشفرض را میتوان توسط گزینهٔ پیکربندی --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) انتهای بخشهای خروجی توسط اسِمبلر تا تراز آن بخش. حالت پیشفرض پُر کردن بخشها است، اما این امر میتواند فضایی را که ممکن است در هدفهای دارای محدودیت شدید حافظه مورد نیاز باشد، هدر دهد.
- -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"
برای کدهای
تولیدشده
توسط
کامپایلر،
از جمله
اسمبلی
درونخطی (inline
assembly)، در نظر
گرفته نشده
است. این
پشتیبانی
آزمایشی در
حال توسعه
است. تنها 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"
میتواند
برای مجاز
کردن
اسمبلر به
پذیرش
دستوراتی
که برای هر
پردازنده
پشتیبانیشده
معتبر است،
شامل تمام
افزونههای
اختیاری،
استفاده
شود.
علاوه بر مجموعه دستورات پایه، میتوان به اسمبلر دستور داد تا شناسههای نمادین (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، افزونهها همیشه به طور پیشفرض فعال نیستند..IP -mbig-obj 4 در مقصد PE/COFF این گزینه استفاده از قالب فایل شیء بزرگ (big object) را اجباری میکند، که امکان وجود بیش از ۳۲۷۶۸ بخش (section) را فراهم میآورد.
- -mverbose-error
- این گزینه پیامهای خطای تفصیلی را برای gas در معماری AArch64 فعال میکند. این گزینه بهطور پیشفرض فعال است.
- -mno-verbose-error
- این گزینه پیامهای خطای تفصیلی را در gas برای معماری AArch64 غیرفعال میکند.
- -menable-sysreg-checking
- این گزینه پیامهای خطایی را فعال میکند که در صورت اقدام به اسمبلی یک دسترسی به ثبات سیستم (system register) که روی معماری مقصد قابل اجرا نیست، صادر میشوند.
گزینههای زیر هنگامی در دسترس هستند که 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
- یک نماد مشترک محلی (local common symbol) بزرگتر از 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
- انتخاب میکند که کدام معماری ممیز شناور مقصد است.
- -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" به
پیونددهنده.
این گزینه تنها برای مقصدهای 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 pool) پس از هر تابع.
- -mlabr
- -mliterals-after-br
- -mno-labr
- -mnoliterals-after-br
- فعال/غیرفعال کردن قرار دادن مخزن مقادیر صریح (literal pool) پس از انشعابهای غیرشرطی. این گزینه بهطور پیشفرض فعال است.
- -mistack
- -mno-istack
- فعال/غیرفعال کردن دستورالعملهای پشتهٔ وقفه. این گزینه بهطور پیشفرض در پردازندههای CK801، CK802 و CK802 فعال است.
گزینههای زیر صریحاً دستورالعملهای اختیاری معینی را فعال میکنند. این قابلیتها همچنین با استفاده از "-mcpu=" برای مشخص کردن پردازندهای که از آنها پشتیبانی میکند، بهطور ضمنی فعال میشوند.
- -mhard-float
- فعال کردن دستورالعملهای ممیز شناور سختافزاری (hard float).
- -mmp
- فعال کردن دستورالعملهای چندپردازندهای..IP -mcp 4 فعال کردن دستورالعملهای کمکپردازنده.
- -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".
علاوه بر مجموعه دستورالعملهای پایه، میتوان به اسمبلر دستور داد تا نمادهای یادافزای (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"، "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
- این گزینه یادافزای دستورالعمل را برای تطبیق دستورالعملها مشخص میکند. دایرکتیوهای ".att_mnemonic" و ".intel_mnemonic" اولویت خواهند داشت.
- -msyntax=att
- -msyntax=intel
- این گزینه نحو دستورالعمل را هنگام پردازش دستورالعملها مشخص میکند. دایرکتیوهای ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
- -mnaked-reg
- این گزینه مشخص میکند که ثباتها نیازی به پیشوند % ندارند. دایرکتیوهای ".att_syntax" و ".intel_syntax" اولویت خواهند داشت.
- -madd-bnd-prefix
- این گزینه اسمبلر را وادار میکند که پیشوند BND را به همه انشعابها بیفزاید، حتی اگر چنین پیشوندی صراحتاً در کد منبع مشخص نشده باشد.
- -mno-shared
- روی هدف ELF، اسمبلر بهطور معمول بازمکانیهای غیر PLT را برای اهداف انشعاب سراسری غیرضعیفِ تعریفشده با نمایانی پیشفرض، با بهینهسازی حذف میکند. گزینه -mshared به اسمبلر میگوید کدی تولید کند که ممکن است در یک کتابخانه مشترک قرار گیرد که در آن تمام اهداف انشعاب سراسری غیرضعیف با نمایانی پیشفرض بتوانند بازداشته (preempt) شوند. کد حاصل اندکی حجیمتر خواهد بود. این گزینه تنها بر نحوه مدیریت دستورالعملهای انشعاب تأثیر میگذارد.
- -mbig-obj
- روی هدف PE/COFF، این گزینه استفاده از قالب فایل شیء بزرگ را تحمیل میکند که بیش از ۳۲۷۶۸ بخش را مجاز میداند.
- -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
- این گزینهها کنترل میکنند که آیا اسمبلر قبل از دستورالعملهای شاخهٔ نزدیک غیرمستقیم (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-only را توسط اسمبلر کنترل میکنند. -mevexrcig=rne بیتهای RC از دستورالعمل EVEX را با 00 کدگذاری میکند، که حالت پیشفرض است. -mevexrcig=rd، -mevexrcig=ru و -mevexrcig=rz دستورالعملهای SAE-only EVEX را بهترتیب با بیتهای RC برابر با 01، 10 و 11 کدگذاری خواهند کرد.
- -mamd64
- -mintel64
- این گزینه مشخص میکند که اسمبلر در حالت ۶۴ بیتی فقط باید معماری مجموعه دستورالعمل (ISA) از نوع AMD64 یا Intel64 را بپذیرد. حالت پیشفرض، پذیرش ISAهای مشترک، فقط Intel64 و AMD64 است.
- -O0 | -O | -O1 | -O2 | -Os
- کدگذاری
دستورالعملها
را با
اندازهٔ
دستورالعمل
کوچکتر
بهینهسازی
میکند. -O و
-O1
دستورالعملهای
بارگذاری
ثبات ۶۴
بیتی با
مقدار
بیدرنگ (immediate)
۶۴ بیتی را
بهصورت
دستورالعملهای
بارگذاری
ثبات ۳۲
بیتی با
مقادیر
بیدرنگ ۳۱
یا ۳۲ بیتی
کدگذاری
میکنند،
دستورالعملهای
پاکسازی
ثبات ۶۴
بیتی را با
دستورالعملهای
پاکسازی
ثبات ۳۲
بیتی
کدگذاری
میکنند،
دستورالعملهای
پاکسازی
ثبات
برداری ۲۵۶
بیتی/۵۱۲
بیتی VEX/EVEX را
با
دستورالعملهای
پاکسازی
ثبات
برداری ۱۲۸
بیتی VEX
کدگذاری
میکنند،
دستورالعملهای
بارگذاری/ذخیرهٔ
ثبات
برداری ۱۲۸
بیتی/۲۵۶
بیتی EVEX را با
دستورالعملهای
بارگذاری/ذخیرهٔ
ثبات
برداری VEX
کدگذاری
میکنند، و
دستورالعملهای
منطقی
اعداد صحیح
بستهبندیشدهٔ
۱۲۸
بیتی/۲۵۶
بیتی EVEX را با
دستورالعملهای
منطقی
اعداد صحیح
بستهبندیشدهٔ
۱۲۸
بیتی/۲۵۶
بیتی VEX
کدگذاری
میکنند.
-O2 شامل بهینهسازیهای -O1 بههمراه کدگذاری دستورالعملهای پاکسازی ثبات برداری ۲۵۶ بیتی/۵۱۲ بیتی EVEX با دستورالعملهای پاکسازی ثبات برداری ۱۲۸ بیتی EVEX است. در حالت ۶۴ بیتی، دستورالعملهای کدگذاریشده با VEX که دارای عملوندهای مبدأ جابهجاییپذیر (commutative) هستند، در صورتی که امکان استفاده از فرم پیشوند VEX دو بایتی را بهجای سه بایتی فراهم کند، عملوندهای مبدأشان جابهجا خواهد شد. شکلهای خاصی از AND و همچنین OR با همان عملوند (ثبات) که دو بار مشخص شده باشد نیز به TEST تبدیل خواهند شد.
-Os شامل بهینهسازیهای -O2 بههمراه کدگذاری آزمونهای ثباتهای ۱۶ بیتی، ۳۲ بیتی و ۶۴ بیتی با مقدار بیدرنگ بهصورت آزمون ثبات ۸ بیتی با مقدار بیدرنگ است. -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 شناخته میشد) پیکربندی شده باشد در دسترس هستند..IP --m32rx 4 مشخص میکند کدام پردازنده از خانوادهٔ 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 با بررسی ۱۶ بیت بالایی expression، دستورالعملهای LDI32 را بهینهسازی خواهد کرد. اگر همهٔ آنها صفر باشند، LD دستورالعمل LDI32 را به یک LDI واحد کوتاه میکند. در چنین حالتی "as" برای عبارتهای diff، بازنشانیهای DIFF را در خروجی درج میکند.
- -mno-link-relax
- فرض میکند که LD دستورالعملهای LDI32 را بهینهسازی نخواهد کرد. در نتیجه، بازنشانیهای DIFF صادر نخواهند شد.
- -mno-warn-regname-label
- اگر نام یک برچسب با نام یک ثبات مطابقت داشته باشد، هشدار نمیدهد. معمولاً برنامهنویسان اسمبلی مایلند این هشدار صادر شود. کامپایلرهای C ممکن است بخواهند این گزینه را غیرفعال کنند.
- -mcore-revision=revision
- این گزینه نسخهٔ بازنگری (revision) هستهٔ PRU را برای اسمبل کردن مشخص میکند. بازنگریهای زیر شناسایی میشوند: "V1"، "V2"، "V3" و "V4". پیشفرض اسمبلر "V3" است.
گزینههای زیر هنگامی در دسترس هستند که 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
- اگر خواندن ثبات مقصدِ یک دستورالعمل 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
- استفاده از عملیات ممیز شناور را روی ثباتهای تکدقتی با شمارهٔ فرد، در صورت پشتیبانی توسط 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 (Application Specific Extension). این گزینه به اسمبلر میگوید دستورالعملهای 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 (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 extension).
- "-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
- تولید کد برای پردازندههای دارای دستورالعملهای Vector-Scalar (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 درج کند، یک انشعاب (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» دنبال میشود تا قرارداد فراخوانی ممیز شناور با دقت یگانه، دقت دوگانه یا دقت چهارگانه را مشخص کند؛ یا بدون پسوند یا با «e» برای مشخص کردن قرارداد فراخوانی ممیز شناور نرمافزاری (soft-float) (که «e» نشاندهندهٔ ABI از نوع RVE با soft-float است).
- -mrelax
- بهرهگیری از بهینهسازیهای پیونددهنده (linker relaxations) برای کاهش تعداد دستورالعملهای مورد نیاز جهت تعیین نشانی نمادها. (پیشفرض)
- -mno-relax
- عدم انجام بهینهسازیهای پیونددهنده.
- -march-attr
- تولید محتوای پیشفرض برای بخش مشخصههای riscv elf در صورتی که دستورالعملهای .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی به کار میرود که پیونددهنده یا بارگذار زمان اجرا برای بررسی سازگاری به آن نیاز دارند. این اطلاعات شامل رشتهٔ ISA، نیازمندی همترازی پشته، دسترسیهای ناهمتراز به حافظه، و شمارهٔ نسخهٔ اصلی، فرعی و بازبینی مشخصات سطح دسترسی است.
- -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
- انتخاب اندازهٔ کلمه، یا ۳۱/۳۲ بیت یا ۶۴ بیت.
- -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" را با مقدار 1 تولید کند که نشان میدهد کد از آدرسدهی DSBT استفاده میکند. گزینه -mno-dsbt که پیشفرض است، باعث میشود این برچسب دارای مقدار 0 باشد که نشان میدهد کد از آدرسدهی 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" را با مقدار 1 تولید کند که نشان میدهد کد از آدرسدهی کد مستقل از موقعیت استفاده میکند. گزینه "-mno-pic" که پیشفرض است، باعث میشود برچسب دارای مقدار 0 باشد که نشاندهنده آدرسدهی کد وابسته به موقعیت است. اگر فایلهای شیء با نوع متفاوت (وابسته به موقعیت و مستقل از موقعیت) با یکدیگر پیوند داده شوند، پیونددهنده یک هشدار صادر خواهد کرد.
- -mbig-endian
- -mlittle-endian
- تولید کد برای ترتیب بایت (endianness) مشخصشده. پیشفرض little-endian است.
گزینههای زیر هنگامی در دسترس هستند که as برای پردازنده TILE-Gx پیکربندی شده باشد.
- -m32 | -m64
- انتخاب اندازه کلمه (word size)، ۳۲ بیتی یا ۶۴ بیتی.
- -EB | -EL
- انتخاب ترتیب بایت، big-endian (-EB) یا little-endian (-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 ارجاع داده شدهاند؛ لیترالهای مربوط به دستورالعملهای "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".
علاوه بر
مجموعه
دستورالعمل
پایه،
میتوان به
اسمبلر
اعلام کرد
که نمادهای
یادافزای
برخی
افزونهها
را نیز
بپذیرد.
برای
نمونه،
"-march=z180+sli+infc"
پردازندهٔ
z180 را با
دستورالعملهای
SLI و IN F,(C)
گسترش
میدهد.
افزونههای
زیر در حال
حاضر
پشتیبانی
میشوند:
"full"
(تمامی
دستورالعملهای
شناختهشده)،
"adl" (حالت
پیشفرض ADL CPU،
فقط برای 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
- برچسبهای بدون دونقطه را میپذیرد. تمام نمادهای ابتدای خط به عنوان برچسب در نظر گرفته میشوند.
- -sdcc
- کد اسمبلی تولیدشده توسط SDCC را میپذیرد.
- -fp-s=FORMAT
- قالب اعداد ممیز شناور با دقت یگانه (Single precision). پیشفرض: ieee754 (۳۲ بیت).
- -fp-d=FORMAT
- قالب اعداد ممیز شناور با دقت مضاعف (Double precision). پیشفرض: ieee754 (۶۴ بیت).
همچنین ببینید (SEE ALSO)
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (c) ۱۹۹۱-۲۰۲۶ Free Software Foundation, Inc.
اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ بعدی منتشرشده توسط بنیاد نرمافزار آزاد اعطا میشود؛ بدون بخشهای تغییرناپذیر، بدون متنهای روی جلد و بدون متنهای پشت جلد. نسخهای از این مجوز در بخشی با عنوان “GNU Free Documentation License” گنجانده شده است.
| 2026-08-03 | binutils-2.47 |