| AS(1) | GNU Development Tools | AS(1) |
نام (NAME)
as - اسمبلر چندسکویی گنو
خلاصه دستور (SYNOPSIS)
as [-a[cdghilns][=file]]
[--alternate]
[--compress-debug-sections] [--nocompress-debug-sections]
[-D]
[--dump-config]
[--debug-prefix-map old=new]
[--defsym sym=val]
[--elf-stt-common=[no|yes]]
[--emulation=name]
[-f]
[-g] [--gstabs] [--gstabs+]
[--gdwarf-<N>] [--gdwarf-sections]
[--gdwarf-cie-version=VERSION]
[--generate-missing-build-notes=[no|yes]]
[--gsframe] [--gsframe=[no|yes]]
[--hash-size=N]
[--help] [--target-help]
[--info] [--no-info]
[-I dir]
[-J]
[-K]
[--keep-locals]
[-L]
[--listing-lhs-width=NUM]
[--listing-lhs-width2=NUM]
[--listing-rhs-width=NUM]
[--listing-cont-lines=NUM]
[--multibyte-handling=[allow|warn|warn-sym-only]]
[--no-pad-sections]
[-o objfile] [-R]
[--scfi=experimental]
[--sectname-subst]
[--size-check=[error|warning]]
[--statistics]
[-v] [--verbose]
[-version] [--version]
[-W] [--no-warn] [--warn] [--fatal-warnings]
[-w] [-x]
[-Z] [@FILE]
[target-options]
[--|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]
[-msolaris|-mno-solaris]
[-nops=count]
گزینههای
هدف PRU:
[-link-relax]
[-mnolink-relax]
[-mno-warn-regname-label]
گزینههای
هدف RISC-V:
[-fpic|-fPIC|-fno-pic]
[-march=ISA|Profiles|Profiles_ISA]
[-mabi=ABI]
[-mlittle-endian|-mbig-endian]
گزینههای
هدف RL78:
[-mg10]
[-m32bit-doubles|-m64bit-doubles]
گزینههای
هدف RX:
[-mlittle-endian|-mbig-endian]
[-m32bit-doubles|-m64bit-doubles]
[-muse-conventional-section-names]
[-msmall-data-limit]
[-mpid]
[-mrelax]
[-mint-register=number]
[-mgcc-abi|-mrx-abi]
گزینههای
هدف s390:
[-m31|-m64] [-mesa|-mzarch]
[-march=CPU]
[-mregnames|-mno-regnames]
[-mwarn-areg-zero]
[-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch]
گزینههای
هدف SCORE:
[-EB][-EL][-FIXDD][-NWARN]
[-SCORE5][-SCORE5U][-SCORE7][-SCORE3]
[-march=score7][-march=score3]
[-USE_R1][-KPIC][-O0][-G
num][-V]
گزینههای
هدف SPARC:
[-Av6|-Av7|-Av8|-Aleon|-Asparclet|-Asparclite
-Av8plus|-Av8plusa|-Av8plusb|-Av8plusc|-Av8plusd
-Av8plusv|-Av8plusm|-Av9|-Av9a|-Av9b|-Av9c
-Av9d|-Av9e|-Av9v|-Av9m|-Asparc|-Asparcvis
-Asparcvis2|-Asparcfmaf|-Asparcima|-Asparcvis3
-Asparcvisr|-Asparc5]
[-xarch=v8plus|-xarch=v8plusa]|-xarch=v8plusb|-xarch=v8plusc
-xarch=v8plusd|-xarch=v8plusv|-xarch=v8plusm|-xarch=v9
-xarch=v9a|-xarch=v9b|-xarch=v9c|-xarch=v9d|-xarch=v9e
-xarch=v9v|-xarch=v9m|-xarch=sparc|-xarch=sparcvis
-xarch=sparcvis2|-xarch=sparcfmaf|-xarch=sparcima
-xarch=sparcvis3|-xarch=sparcvisr|-xarch=sparc5
-bump]
[-32|-64]
[--enforce-aligned-data][--dcti-couples-detect]
گزینههای
هدف TIC54X:
[-mcpu=54[123589]|-mcpu=54[56]lp]
[-mfar-mode|-mf]
[-merrors-to-file <filename>|-me
<filename>]
گزینههای
هدف TIC6X:
[-march=arch] [-mbig-endian|-mlittle-endian]
[-mdsbt|-mno-dsbt]
[-mpid=no|-mpid=near|-mpid=far]
[-mpic|-mno-pic]
گزینههای
هدف TILE-Gx:
[-m32|-m64][-EB][-EL]
گزینههای
هدف Visium:
[-mtune=arch]
گزینههای
هدف Xtensa:
[--[no-]text-section-literals] [--[no-]auto-litpools]
[--[no-]absolute-literals]
[--[no-]target-align] [--[no-]longcalls]
[--[no-]transform]
[--rename-section oldname=newname]
[--[no-]trampolines]
[--abi-windowed|--abi-call0]
گزینههای
هدف Z80:
[-march=CPU[-EXT][+EXT]]
[-local-prefix=PREFIX]
[-colonless]
[-sdcc]
[-fp-s=FORMAT]
[-fp-d=FORMAT].SH
"توضیحات
(DESCRIPTION)" برنامهٔ
GNU as در واقع
خانوادهای
از
اسمبلرها
است. اگر از
اسمبلر GNU در
یک معماری
استفاده
میکنید (یا
استفاده
کردهاید)،
هنگام
استفاده از
آن در
معماری
دیگر با
محیطی
نسبتاً
مشابه
روبهرو
خواهید شد.
هر نسخه با
سایر
نسخهها
مشترکات
فراوانی
دارد؛ از
جمله
قالبهای
فایل شیء (object
file)، اکثر
دستورالعملهای
اسمبلر (که
اغلب pseudo-ops
نامیده
میشوند) و
نحو (syntax)
اسمبلر.
هدف اصلی as اسمبل کردن خروجی کامپایلر سی گنو "gcc" برای استفاده توسط پیونددهندهٔ "ld" است. با این حال، تلاش شده است تا as هر آنچه را که اسمبلرهای دیگر برای همان ماشین اسمبل میکنند، بهدرستی اسمبل کند. هرگونه استثنا بهطور صریح مستند شده است. این بدان معنا نیست که as همیشه از همان نحوِ اسمبلر دیگر برای همان معماری استفاده میکند؛ برای مثال، نسخههای ناسازگار متعددی از نحو زبان اسمبلی 680x0 شناخته شده است.
هر بار که as را اجرا میکنید، دقیقاً یک برنامهٔ منبع را اسمبل میکند. برنامهٔ منبع از یک یا چند فایل تشکیل شده است. (ورودی استاندارد نیز یک فایل به شمار میرود.)
شما به as یک خط فرمان حاوی صفر یا چند نام فایل ورودی میدهید. فایلهای ورودی (از نام فایل سمت چپ به راست) خوانده میشوند. هر آرگومان خط فرمان (در هر موقعیتی) که معنای خاصی نداشته باشد، به عنوان نام یک فایل ورودی در نظر گرفته میشود.
اگر هیچ نام فایلی به as ندهید، تلاش میکند یک فایل ورودی را از ورودی استاندارد as، که معمولاً ترمینال شما است، بخواند. ممکن است برای اعلام اینکه برنامهٔ دیگری برای اسمبل وجود ندارد، نیاز به فشردن ctl-D داشته باشید.
اگر نیاز دارید که صراحتاً فایل ورودی استاندارد را در خط فرمان خود مشخص کنید، از -- استفاده کنید.
اگر منبع خالی باشد، as یک فایل شیء کوچک و خالی تولید میکند.
ممکن است as هشدارها و پیامهای خطا را در فایل خطای استاندارد (معمولاً ترمینال شما) بنویسد. زمانی که یک کامپایلر as را بهطور خودکار اجرا میکند، نباید چنین اتفاقی بیفتد. هشدارها فرضیاتی را گزارش میدهند که باعث شده as بتواند به اسمبل کردن یک برنامهٔ دارای اشکال ادامه دهد؛ خطاها مشکلی جدی را گزارش میکنند که فرایند اسمبل را متوقف میسازد.
اگر as را از طریق کامپایلر GNU C فراخوانی میکنید، میتوانید از گزینهٔ -Wa برای ارسال آرگومانها به اسمبلر استفاده کنید. آرگومانهای اسمبلر باید با کاما از یکدیگر (و از -Wa) جدا شوند. برای مثال:
gcc -c -g -O -Wa,-alh,-L file.c
این دستور دو گزینه را به اسمبلر منتقل میکند: -alh (ارسال یک فهرست به خروجی استاندارد به همراه کد منبع سطح بالا و اسمبلی) و -L (نگهداشتن نمادهای محلی در جدول نمادها).
معمولاً نیازی به استفاده از این سازوکار -Wa ندارید، زیرا بسیاری از گزینههای خط فرمان کامپایلر بهطور خودکار توسط کامپایلر به اسمبلر منتقل میشوند. (میتوانید راهانداز کامپایلر GNU را با گزینهٔ -v فراخوانی کنید تا دقیقاً ببینید چه گزینههایی را به هر مرحله از کامپایل، از جمله اسمبلر، منتقل میکند.)
گزینهها (OPTIONS)
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
به جای
گزینهٔ
اصلی @file
جایگزین
میشوند.
اگر file وجود
نداشته
باشد یا
قابل
خواندن
نباشد، با
گزینه
بهصورت
تحتاللفظی
برخورد شده
و حذف
نخواهد شد.
گزینهها در file با نویسههای فاصله از هم جدا میشوند. یک نویسهٔ فاصله میتواند با محصور کردن کل گزینه درون نقلقول تکی یا دوتایی، در گزینه گنجانده شود. هر نویسهای (از جمله بکاسلش) را میتوان با قرار دادن یک بکاسلش پیش از آن وارد کرد. خود file نیز میتواند حاوی گزینههای @file بیشتری باشد؛ هر کدام از این گزینهها بهصورت بازگشتی پردازش خواهند شد.
- -a[cdghilmns]
- فعالسازی فهرستنویسی (listings) به روشهای گوناگون:
- -ac
- نادیده گرفتن شرطهای نادرست (false)
- -ad
- نادیده گرفتن دستورالعملهای اشکالزدایی
- -ag
- گنجاندن اطلاعات عمومی، مانند نسخهٔ as و گزینههای ارسالشده
- -ah
- گنجاندن کد منبع سطحبالا
- -al
- گنجاندن اسمبلی
- -ali
- گنجاندن اسمبلی به همراه ginsn
- -am
- گنجاندن بسطهای ماکرو
- -an
- نادیده گرفتن پردازش فرمها
- -as
- گنجاندن نمادها
- =file
- تعیین نام فایل فهرستنویسی
میتوانید این گزینهها را با هم ترکیب کنید؛ برای مثال از -aln برای فهرستنویسی اسمبلی بدون پردازش فرمها استفاده کنید. گزینهٔ =file در صورت استفاده باید آخرین گزینه باشد. به تنهایی، پیشفرض -a گزینهٔ -ahls است.
- --alternate
- شروع در حالت ماکروی جایگزین (alternate macro mode).
- --compress-debug-sections
- فشردهسازی بخشهای اشکالزدایی DWARF با استفاده از zlib به همراه SHF_COMPRESSED از ELF ABI. فایل شیء حاصل ممکن است با پیونددهندهها و ابزارهای قدیمیترِ فایل شیء سازگار نباشد. توجه داشته باشید که اگر فشردهسازی باعث بزرگتر شدن یک بخش شود، آن بخش فشرده نخواهد شد.
- --compress-debug-sections=none
- --compress-debug-sections=zlib
- --compress-debug-sections=zlib-gnu
- --compress-debug-sections=zlib-gabi
- --compress-debug-sections=zstd
- این گزینهها نحوهٔ فشردهسازی بخشهای اشکالزدایی DWARF را کنترل میکنند. گزینهٔ --compress-debug-sections=none معادل --nocompress-debug-sections است. گزینههای --compress-debug-sections=zlib و --compress-debug-sections=zlib-gabi معادل --compress-debug-sections هستند. گزینهٔ --compress-debug-sections=zlib-gnu بخشهای اشکالزدایی DWARF را با استفاده از قالب منسوخشدهٔ zlib-gnu فشرده میکند. نام بخشهای اشکالزدایی تغییر یافته تا با .zdebug آغاز شوند. گزینهٔ --compress-debug-sections=zstd بخشهای اشکالزدایی DWARF را با استفاده از zstd فشرده میکند. توجه - اگر فشردهسازی در عمل باعث بزرگتر شدن یک بخش شود، فشرده نشده و تغییر نام نیز نخواهد یافت.
- --nocompress-debug-sections
- بخشهای اشکالزدایی DWARF را فشرده نمیکند. این حالت معمولاً برای همهٔ مقاصد به جز x86/x86_64 پیشفرض است، اما میتوان از یک گزینه در زمان پیکربندی (configure time) برای تغییر این رفتار استفاده کرد.
- -D
- در صورت پشتیبانی، اشکالزدایی را در بکاندهای خاص مقصد فعال میکند. در غیر این صورت نادیده گرفته میشود. حتی در صورت نادیده گرفته شدن، این گزینه جهت سازگاری اسکریپتها با فراخوانی سایر اسمبلرها پذیرفته میشود.
- --debug-prefix-map old=new
- هنگام اسمبل کردن فایلها در دایرکتوری old، اطلاعات اشکالزدایی را بهگونهای ثبت میکند که گویی در دایرکتوری new قرار دارند.
- --defsym sym=value
- پیش از اسمبل کردن فایل ورودی، نماد sym را برابر با value تعریف میکند. مقدار value باید یک ثابت عدد صحیح باشد. همانند زبان C، یک پیشوند 0x نشاندهندهٔ مقدار مبنای ۱۶ (hexadecimal) و یک پیشوند 0 نشاندهندهٔ مقدار مبنای ۸ (octal) است. مقدار نماد را میتوان در داخل فایل منبع با استفاده از شبهدستور ".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
- «سریع» (fast)---از پیشپردازش فاصلههای خالی و توضیحات صرفنظر میکند (فرض میشود منبع، خروجی کامپایلر است).
- -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 غیرفعال شود.
- --hash-size N
- نادیده گرفته میشود. برای سازگاری خط فرمان با سایر اسمبلرها پشتیبانی میشود.
- --help
- خلاصهای از گزینههای خط فرمان را چاپ کرده و خارج میشود.
- --target-help
- خلاصهای از تمام گزینههای ویژهٔ هدف را چاپ کرده و خارج میشود.
- --info
- پیامهای اطلاعاتی را سرکوب نمیکند.
- --no-info
- پیامهای اطلاعاتی را سرکوب میکند.
- -I dir
- دایرکتوری dir را به فهرست جستجوی دستورالعملهای ".include" اضافه میکند.
- -J
- در مورد سرریز علامتدار هشداری صادر نمیکند.
- -K
- هنگامی که جدولهای تفاضل برای جابهجاییهای طولانی تغییر مییابند، هشدار صادر میکند.
- -L
- --keep-locals
- نمادهای محلی را (در جدول نمادها) نگه میدارد. این نمادها با پیشوندهای برچسب محلی مختص به سیستم شروع میشوند، معمولاً .L برای سیستمهای ELF یا L برای سیستمهای سنتی a.out.
- --listing-lhs-width=number
- حداکثر عرض ستون دادههای خروجی برای سیاههٔ اسمبلر را بر حسب word روی number تنظیم میکند.
- --listing-lhs-width2=number
- حداکثر عرض ستون دادههای خروجی برای خطوط ادامه در سیاههٔ اسمبلر را بر حسب word روی number تنظیم میکند.
- --listing-rhs-width=number
- حداکثر عرض یک خط منبع ورودی را همانطور که در سیاهه نمایش داده میشود، روی number بایت تنظیم میکند.
- --listing-cont-lines=number
- حداکثر تعداد خطوط چاپشده در یک سیاهه برای یک خط ورودی تکی را روی number + 1 تنظیم میکند.
- --multibyte-handling=allow
- --multibyte-handling=warn
- --multibyte-handling=warn-sym-only
- --multibyte-handling=warn_sym_only
- نحوهٔ مدیریت نویسههای چندبایتی در ورودی توسط اسمبلر را کنترل میکند. حالت پیشفرض (که با استفاده از آرگومان allow قابل بازگردانی است) اجازه دادن به چنین نویسههایی بدون صدور اخطار است. استفاده از آرگومان warn باعث میشود اسمبلر در صورت برخورد با هر نویسهٔ چندبایتی یک پیام هشدار تولید کند. استفاده از آرگومان warn-sym-only تنها زمانی موجب تولید هشدار میشود که نمادی با نامی شامل نویسههای چندبایتی تعریف شود. (ارجاع به نمادهای تعریفنشده هشداری تولید نخواهد کرد).
- --no-pad-sections
- اسمبلر را از پدگذاری (فاصلهگذاری) انتهای بخشهای خروجی تا رسیدن به تراز آن بخش متوقف میکند. حالت پیشفرض پدگذاری بخشها است، اما این کار میتواند فضایی را که ممکن است در سیستمهای هدف با محدودیت حافظه مورد نیاز باشد تلف کند.
- -o objfile
- نام فایل شیء خروجی از as را objfile تعیین میکند.
- -R
- بخش داده (data) را در بخش متن (text) ادغام میکند.
- --reduce-memory-overheads
- نادیده
گرفته
میشود. جهت
سازگاری با
ابزارهایی
پشتیبانی
میشود که
گزینهٔ
مشابهی را
هم به
اسمبلر و هم
به
پیونددهنده
ارسال
میکنند..IP
--scfi=experimental 4 این
گزینه مشخص
میکند که
آیا اسمبلر
باید CFI را
برای
ورودیهای
دستنویس
ترکیب (synthesize)
کند یا خیر.
اگر ورودی
از پیش حاوی
برخی
دستورالعملهای
قابل ترکیب
CFI باشد،
اسمبلر
آنها را
نادیده
گرفته و یک
هشدار صادر
میکند.
توجه داشته
باشید که
"--scfi=experimental"
برای کدهای
تولیدشده
توسط
کامپایلر،
از جمله
اسمبلی
درونخطی (inline
assembly)، در نظر
گرفته نشده
است. این
پشتیبانی
آزمایشی در
حال توسعه
است. تنها System V AMD64
ABI پشتیبانی
میشود.
هر تابع ورودی در اسمبلی باید با دستورالعمل ".type" آغاز شود و در حالت ایدهآل باید با استفاده از یک دستورالعمل ".size" خاتمه یابد. هنگام استفاده از SCFI، هر دستورالعمل ".type" موجب میشود GAS یک FDE جدید (یا همان Function Descriptor Entry) را آغاز کند. این بدان معناست که با هر دستورالعمل ".type"، بلوک قبلی دستورالعملها، در صورت وجود، به عنوان یک FDE متمایز نهایی میشود.
- --sectname-subst
- توالیهای جایگزینی (substitution sequences) را در نام بخشها رعایت میکند.
- --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، افزونهها همیشه به طور پیشفرض فعال نیستند.
- -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 (بوتلودر ARC لینوکس)، نامهای شمارهدار پردازنده (مانند 21064) دستورالعملهای PALcode مختص پردازنده را فعال میکنند، در حالی که نامهای «electro-vlasic» (مانند "ev4") این کار را انجام نمیدهند..IP -mdebug 4
- -no-mdebug
- تولید کپسولهسازی ".mdebug" را برای رهنمودهای stabs و توصیفکنندههای رویه فعال یا غیرفعال میکند. حالت پیشفرض این است که با دیدن اولین رهنمود stabs، گزینه ".mdebug" بهطور خودکار فعال شود.
- -relax
- این گزینه تحمیل میکند که همه بازنشانیها (relocations) به جای صرفهجویی در فضا و حلوفصل برخی از آنها در زمان اسمبل، در فایل شیء قرار گیرند. توجه داشته باشید که این گزینه همه محاسبات نمادها را به فایل شیء منتقل نمیکند، زیرا همه محاسبات نماد قابل بازنمایی نیستند. با این وجود، این گزینه همچنان میتواند در کاربردهای خاص مفید باشد.
- -replace
- -noreplace
- بهینهسازی فراخوانیهای رویه را، چه در زمان اسمبل و چه در زمان پیوند، فعال یا غیرفعال میکند. این گزینهها فقط برای مقصدهای VMS در دسترس هستند و "-replace" حالت پیشفرض است. بخش 1.4.1 از راهنمای OpenVMS Linker Utility را ببینید.
- -g
- این گزینه زمانی استفاده میشود که کامپایلر اطلاعات اشکالزدایی تولید میکند. وقتی gcc از mips-tfile برای تولید اطلاعات اشکالزدایی برای ECOFF استفاده میکند، برچسبهای محلی باید به فایل شیء منتقل شوند. در غیر این صورت، این گزینه تأثیری ندارد.
- -Gsize
- نماد مشترک محلی بزرگتر از size در ".bss" قرار میگیرد، در حالی که نمادهای کوچکتر در ".sbss" قرار میگیرند.
- -F
- -32addr
- این گزینهها برای سازگاری با نسخههای پیشین نادیده گرفته میشوند.
گزینههای زیر زمانی در دسترس هستند که as برای یک پردازنده ARC پیکربندی شده باشد.
- -mcpu=cpu
- این گزینه گونه پردازنده اصلی را انتخاب میکند.
- -EB | -EL
- خروجی big-endian (-EB) یا little-endian (-EL) را انتخاب میکند.
- -mcode-density
- دستورالعملهای افزونه Code Density را فعال میکند.
گزینههای زیر زمانی در دسترس هستند که as برای خانواده پردازندههای ARM پیکربندی شده باشد.
- -mcpu=processor[+extension...]
- مشخص میکند که کدام گونه از پردازنده ARM مقصد است.
- -march=architecture[+extension...]
- مشخص میکند که کدام گونه از معماری ARM توسط مقصد استفاده میشود.
- -mfpu=floating-point-format
- معماری ممیز شناور (Floating Point) مقصد را انتخاب میکند.
- -mfloat-abi=abi
- انتخاب میکند که کدام ABI ممیز شناور مورد استفاده قرار گیرد.
- -mthumb
- رمزگشایی دستورالعملهای منحصر به Thumb را فعال میکند.
- -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
- قرارداد فراخوانی رویه (procedure calling convention) مورد استفاده را انتخاب میکند.
- -EB | -EL
- خروجی big-endian (-EB) یا little-endian (-EL) را انتخاب میکند.
- -mthumb-interwork
- مشخص میکند که کد با در نظر گرفتن کارکرد متقابل میان کدهای Thumb و ARM تولید شده است.
- -mccs
- حالت سازگاری نحو اسمبلی CodeComposer Studio را فعال میکند.
- -k
- مشخص میکند که کد PIC تولید شده است.
گزینههای زیر زمانی در دسترس هستند که as برای خانواده پردازندههای Blackfin پیکربندی شده باشد.
- -mcpu=processor[-sirevision]
- این گزینه پردازنده مقصد را مشخص میکند. مقدار اختیاری sirevision در اسمبلر استفاده نمیشود. وجود آن فقط به این منظور است که GCC بتواند گزینه "-mcpu=" خود را بهسادگی منتقل کند. اگر تلاشی برای اسمبل دستورالعملی انجام گیرد که روی پردازنده مقصد اجرا نخواهد شد، اسمبلر پیام خطا صادر خواهد کرد. نامهای پردازنده زیر شناخته میشوند: "bf504"، "bf506"، "bf512"، "bf514"، "bf516"، "bf518"، "bf522"، "bf523"، "bf524"، "bf525"، "bf526"، "bf527"، "bf531"، "bf532"، "bf533"، "bf534"، "bf535" (هنوز پیادهسازی نشده است)، "bf536"، "bf537"، "bf538"، "bf539"، "bf542"، "bf542m"، "bf544"، "bf544m"، "bf547"، "bf547m"، "bf548"، "bf548m"، "bf549"، "bf549m"، "bf561" و "bf592".
- -mfdpic
- برای FDPIC ABI اسمبل میکند.
- -mno-fdpic
- -mnopic
- غیرفعال کردن -mfdpic.
گزینههای زیر زمانی در دسترس هستند که as برای خانواده پردازندههای BPF در هسته لینوکس پیکربندی شده باشد.
@chapter ویژگیهای وابسته به BPF.SS "گزینههای BPF (BPF Options)"
- -EB
- این گزینه مشخص میکند که اسمبلر باید eBPF از نوع بزرگپایان (big-endian) تولید کند.
- -EL
- این گزینه مشخص میکند که اسمبلر باید eBPF از نوع کوچکپایان (little-endian) تولید کند.
- -mdialect=dialect
- این گزینه گویش زبان اسمبلی را برای شناسایی در هنگام اسمبل کردن مشخص میکند. اسمبلر از normal و pseudoc پشتیبانی میکند.
- -misa-spec=spec
- این گزینه
نسخهٔ
مجموعه
دستورالعملهای
BPF را برای
استفاده در
هنگام
اسمبل کردن
مشخص
میکند.
نسخههای BPF ISA
پشتیبانیشده
عبارتند از
v1، v2، v3 و v4.
مقدار xbpf میتواند برای شناسایی دستورالعملهای اضافی که توسط GCC برای مقاصد آزمایشی استفاده میشوند مشخص شود؛ اما توجه داشته باشید که این یک BPF معتبر نیست.
- -mno-relax
- این گزینه به اسمبلر میگوید که دستورالعملها را ریلکس (relax) نکند.
توجه داشته باشید که اگر هیچ گزینهٔ ترتیب بایتی در خط فرمان مشخص نشده باشد، ترتیب بایتهای میزبان استفاده میشود. برای مستندات گزینههای مختص 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) تولید میکند.
- -mljump
- -mno-ljump
- فعال/غیرفعال کردن تبدیل دستورالعملهای پرش کوتاه "jbf"، "jbt" و "jbr" به "jmpi". این گزینه فقط برای پردازندههای V2 است. در مقصدهای CK801 و CK802 که از دستورالعمل "jmpi" پشتیبانی نمیکنند نادیده گرفته میشود، و برای سایر پردازندهها بهطور پیشفرض فعال است.
- -mbranch-stub
- -mno-branch-stub
- بازنشانیهای
"R_CKCORE_PCREL_IMM26BY2"
را برای
دستورالعملهای
"bsr" به
پیونددهنده
ارسال
میکند.
این گزینه تنها برای مقصدهای ELF سختافزار خام (bare-metal) در C-SKY V2 در دسترس است، جایی که بهطور پیشفرض فعال است. نمیتوان از آن در کدی که قرار است بهطور پویا با کتابخانههای اشتراکی پیوند داده شود استفاده کرد.
- -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
- دستورالعملهای ممیز شناور سختافزاری را فعال میکند.
- -mmp
- دستورالعملهای چندپردازندهای را فعال میکند.
- -mcp
- دستورالعملهای کمکپردازنده را فعال میکند.
- -mcache
- دستورالعمل واکشی پیشاپیش حافظهٔ نهان (cache prefetch) را فعال میکند.
- -msecurity
- دستورالعملهای امنیتی C-SKY را فعال میکند.
- -mtrust
- دستورالعملهای اعتماد (trust) در C-SKY را فعال میکند.
- -mdsp
- دستورالعملهای DSP را فعال میکند..IP -medsp 4 فعالسازی دستورالعملهای ارتقایافتهٔ DSP.
- -mvdsp
- فعالسازی دستورالعملهای برداری DSP.
گزینههای زیر زمانی در دسترس هستند که "as" برای یک پردازندهٔ Epiphany پیکربندی شده باشد.
- -mepiphany
- مشخص میکند که هر دو دسته دستورالعملهای ۳۲ و ۱۶ بیتی مجاز هستند. این رفتار پیشفرض است.
- -mepiphany16
- دستورالعملهای مجاز را تنها به مجموعهٔ ۱۶ بیتی محدود میکند.
گزینههای زیر زمانی در دسترس هستند که "as" برای یک پردازندهٔ H8/300 پیکربندی شده باشد. @chapter ویژگیهای وابسته به H8/300
گزینهها (Options)
نسخهٔ Renesas H8/300 از "as" دارای یک گزینهٔ وابسته به ماشین است:
- -h-tick-hex
- پشتیبانی از ثابتهای هگزادسیمال به سبک H'00 علاوه بر سبک 0x00.
- -mach=name
- گونهٔ ماشین H8300 را تعیین میکند. نامهای ماشین زیر شناختهشده هستند: "h8300h"، "h8300hn"، "h8300s"، "h8300sn"، "h8300sx" و "h8300sxn".
گزینههای زیر زمانی در دسترس هستند که "as" برای یک پردازندهٔ i386 پیکربندی شده باشد.
- --32 | --x32 | --64
- اندازهٔ
کلمه (word size) را
مشخص
میکند که
میتواند
۳۲ بیت یا
۶۴ بیت
باشد.
گزینهٔ --32
بیانگر
معماری Intel i386
است، در
حالی که --x32 و
--64 به ترتیب
بیانگر
معماری AMD x86-64
با اندازهٔ
کلمهٔ ۳۲
بیتی یا ۶۴
بیتی هستند.
این گزینهها تنها با قالب فایل شیء ELF در دسترس هستند و نیاز دارند که پشتیبانی لازم از BFD گنجانده شده باشد (در یک پلتفرم ۳۲ بیتی باید --enable-64-bit-bfd را به configure اضافه کنید تا استفاده از ۶۴ بیت فعال شود و از x86-64 به عنوان پلتفرم هدف استفاده گردد).
- -n
- به طور پیشفرض، x86 GAS چندین دستورالعمل nop استفادهشده برای ترازسازی درون بخشهای کد را با دستورالعملهای چندبایتی nop مانند leal 0(%esi,1),%esi جایگزین میکند. اگر یک nop تکبایتی (0x90) صراحتاً به عنوان بایت پُرکننده برای ترازسازی مشخص شده باشد، این سوییچ آن بهینهسازی را غیرفعال میکند.
- --divide
- در پلتفرمهای مشتقشده از SVR4، نویسهٔ / به عنوان نویسهٔ کامنت در نظر گرفته میشود؛ به این معنی که نمیتوان از آن در عبارتها استفاده کرد. گزینهٔ --divide نویسهٔ / را به یک نویسهٔ معمولی تبدیل میکند. این گزینه / را در ابتدای خط برای شروع کامنت غیرفعال نمیکند و بر استفاده از # برای شروع کامنت نیز تأثیری نمیگذارد.
- -march=CPU[+EXTENSION...]
- این گزینه
پردازندهٔ
هدف را
تعیین
میکند. اگر
تلاشی برای
اسمبل کردن
دستورالعملی
صورت گیرد
که روی
پردازندهٔ
هدف اجرا
نخواهد شد،
اسمبلر یک
پیام خطا
صادر خواهد
کرد.
نامهای
پردازندهٔ
زیر
شناختهشده
هستند:
"i8086"،
"i186"،
"i286"،
"i386"،
"i486"،
"i586"،
"i686"،
"pentium"،
"pentiumpro"،
"pentiumii"،
"pentiumiii"،
"pentium4"،
"prescott"،
"nocona"،
"core"،
"core2"،
"corei7"،
"iamcu"،
"k6"،
"k6_2"،
"athlon"،
"opteron"،
"k8"،
"amdfam10"،
"bdver1"،
"bdver2"،
"bdver3"،
"bdver4"،
"znver1"،
"znver2"،
"znver3"،
"znver4"،
"znver5"،
"btver1"،
"btver2"،
"generic32" و
"generic64".
علاوه بر مجموعه دستورالعملهای پایه، میتوان به اسمبلر اعلام کرد که نمادهای یادافزا (mnemonics) از افزونههای گوناگون را بپذیرد. برای نمونه، "-march=i686+sse4+vmx" پردازندهٔ i686 را با sse4 و vmx گسترش میدهد. افزونههای زیر در حال حاضر پشتیبانی میشوند: 8087، 287، 387، 687، "cmov"، "fxsr"، "mmx"، "sse"، "sse2"، "sse3"، "sse4a"، "ssse3"، "sse4.1"، "sse4.2"، "sse4"، "avx"، "avx2"، "lahf_sahf"، "monitor"، "adx"، "rdseed"، "prfchw"، "smap"، "mpx"، "sha"، "rdpid"، "ptwrite"، "cet"، "gfni"، "vaes"، "vpclmulqdq"، "prefetchwt1"، "clflushopt"، "se1"، "clwb"، "movdiri"، "movdir64b"، "enqcmd"، "serialize"، "tsxldtrk"، "kl"، "widekl"، "hreset"، "avx512f"، "avx512cd"، "avx512er"، "avx512pf"، "avx512vl"، "avx512bw"، "avx512dq"، "avx512ifma"، "avx512vbmi"، "avx512_4fmaps"، "avx512_4vnniw"، "avx512_vpopcntdq"، "avx512_vbmi2"، "avx512_vnni"، "avx512_bitalg"، "avx512_vp2intersect"، "tdx"، "avx512_bf16"، "avx_vnni"، "avx512_fp16"، "prefetchi"، "avx_ifma"، "avx_vnni_int8"، "cmpccxadd"، "wrmsrns"، "msrlist"، "avx_ne_convert"، "rao_int"، "fred"، "lkgs"، "avx_vnni_int16"، "sha512"، "sm3"، "sm4"، "pbndkb"، "avx10.1"، "avx10.1/512"، "avx10.1/256"، "avx10.1/128"، "user_msr"، "msr_imm"، "apx_f"، "avx10.2"، "avx10.2/512"، "avx10.2/256"، "avx10.2/128"، "movrs"، "amx_int8"، "amx_bf16"، "amx_fp16"، "amx_complex"، "amx_transpose"، "amx_tf32"، "amx_fp8" "amx_movrs"، "amx_avx512"، "amx_tile"، "vmx"، "vmfunc"، "smx"، "xsave"، "xsaveopt"، "xsavec"، "xsaves"، "aes"، "pclmul"، "fsgsbase"، "rdrnd"، "f16c"، "bmi2"، "fma"، "movbe"، "ept"، "lzcnt"، "popcnt"، "hle"، "rtm"، "tsx"، "invpcid"، "clflush"، "mwaitx"، "clzero"، "wbnoinvd"، "pconfig"، "waitpkg"، "uintr"، "cldemote"، "rdpru"، "mcommit"، "sev_es"، "lwp"، "fma4"، "xop"، "cx16"، "syscall"، "rdtscp"، "3dnow"، "3dnowa"، "sse4a"، "sse5"، "snp"، "invlpgb"، "tlbsync"، "rmpquery"، "rmpread"، "svme"، "gmism2"، "gmiccs"، "padlockrng2"، "padlockphe2"، "padlockxmodx" و "padlock". توجه داشته باشید که میتوان پیشوند "no" را به این نمادهای افزونه اضافه کرد تا قابلیت مربوطه (و هر قابلیت وابسته به آن) لغو شود. همچنین توجه داشته باشید که پسوندهای مجاز در "-march=avx10.<N>" یک محدودیت طول بردار اعمال میکنند؛ یعنی با وجود اینکه این گزینهها در حالت عادی گزینههای «فعالکننده» هستند، استفاده از این پسوندها تمام دستورالعملهایی را که عملوندهای ثبات ماسک یا برداری عریضتر دارند غیرفعال میکند..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 را
با طول
بردار 128
بیتی
کدگذاری
میکند، که
حالت
پیشفرض
است. -mavxscalar=256
دستورالعملهای
اسکالر AVX را
با طول
بردار 256
بیتی
کدگذاری
خواهد کرد.
هشدار: از این گزینه برای کدهای محیط عملیاتی استفاده نکنید - بهدلیل 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 را با طول بردار 128 بیتی کدگذاری میکند، که حالت پیشفرض است. -mevexlig=256 و -mevexlig=512 دستورالعملهای LIG EVEX را به ترتیب با طول بردار 256 بیتی و 512 بیتی کدگذاری خواهند کرد.
- -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، این گزینه استفاده از قالب فایل شیء بزرگ را اجباری میکند، که امکان وجود بیش از 32768 بخش (section) را فراهم میسازد.
- -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) در حالت 64 بیتی و lock addl $0x0, (%esp) در حالت 32 بیتی کدگذاری خواهد کرد. -mfence-as-lock-add=no دستورالعملهای lfence، mfence و sfence را طبق روال معمول کدگذاری میکند، که حالت پیشفرض است.
- -mrelax-relocations=no
- -mrelax-relocations=yes
- این گزینهها کنترل میکنند که آیا اسمبلر باید بازمکانیهای کاهشی (relax relocations)، یعنی R_386_GOT32X در حالت 32 بیتی، یا R_X86_64_GOTPCRELX و R_X86_64_REX_GOTPCRELX در حالت 64 بیتی را تولید کند یا خیر. -mrelax-relocations=yes بازمکانیهای کاهشی را تولید خواهد کرد. -mrelax-relocations=no بازمکانیهای کاهشی را تولید نخواهد کرد. حالت پیشفرض را میتوان از طریق یک گزینهٔ پیکربندی --enable-x86-relax-relocations کنترل کرد..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، که بازگشتها را همتراز میکند، و 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_X86_ISA_1_USED و GNU_PROPERTY_X86_FEATURE_2_USED را تولید کند یا خیر. مقدار پیشفرض میتواند با گزینهٔ پیکربندی --enable-x86-used-note کنترل شود.
- -mevexrcig=rne
- -mevexrcig=rd
- -mevexrcig=ru
- -mevexrcig=rz
- این گزینهها کنترل میکنند که اسمبلر چگونه باید دستورالعملهای EVEX تنها با ویژگی SAE (SAE-only) را کدگذاری کند. -mevexrcig=rne بیتهای RC دستورالعمل EVEX را با 00 کدگذاری میکند که حالت پیشفرض است. -mevexrcig=rd، -mevexrcig=ru و -mevexrcig=rz دستورالعملهای EVEX تنها با SAE را بهترتیب با بیتهای RC معادل 01، 10 و 11 کدگذاری میکنند.
- -mamd64
- -mintel64
- این گزینه مشخص میکند که اسمبلر در حالت ۶۴ بیتی فقط باید ISA مربوط به AMD64 یا Intel64 را بپذیرد. حالت پیشفرض، پذیرش مجموعههای ISA مشترک، تنها Intel64 و AMD64 است.
- -O0 | -O | -O1 | -O2 | -Os
- کدگذاری
دستورالعملها
را
بهینهسازی
کرده تا
اندازهٔ
آنها کاهش
یابد.
گزینههای
-O و -O1
دستورالعملهای
بارگذاری
ثبات ۶۴
بیتی با
مقدار
بیدرنگ ۶۴
بیتی را به
صورت
دستورالعملهای
بارگذاری
ثبات ۳۲
بیتی با
مقادیر
بیدرنگ ۳۱
بیتی یا ۳۲
بیتی
کدگذاری
میکنند،
دستورالعملهای
پاکسازی
ثبات ۶۴
بیتی را با
دستورالعملهای
پاکسازی
ثبات ۳۲
بیتی
کدگذاری
میکنند،
دستورالعملهای
پاکسازی
ثبات
برداری VEX/EVEX
برابر ۲۵۶
بیتی/۵۱۲
بیتی را با
دستورالعملهای
پاکسازی
ثبات
برداری VEX
برابر ۱۲۸
بیتی
کدگذاری
میکنند،
دستورالعملهای
بارگذاری/ذخیره
ثبات
برداری EVEX
برابر ۱۲۸
بیتی/۲۵۶
بیتی را با
دستورالعملهای
بارگذاری/ذخیره
ثبات
برداری VEX
کدگذاری
میکنند، و
دستورالعملهای
منطقی
اعداد صحیح
بستهبندیشدهٔ
EVEX برابر ۱۲۸
بیتی/۲۵۶
بیتی را با
دستورالعملهای
منطقی
اعداد صحیح
بستهبندیشدهٔ
VEX برابر ۱۲۸
بیتی/۲۵۶
بیتی
کدگذاری
میکنند.
-O2 شامل بهینهسازیهای -O1 است، بهعلاوه کدگذاری دستورالعملهای پاکسازی ثبات برداری EVEX برابر ۲۵۶ بیتی/۵۱۲ بیتی به صورت دستورالعملهای پاکسازی ثبات برداری EVEX برابر ۱۲۸ بیتی. در حالت ۶۴ بیتی، در دستورالعملهای کدگذاریشده با VEX که دارای عملوندهای مبدأ جابهجاییپذیر هستند نیز چنانچه جابهجایی عملوندها اجازه دهد از قالب پیشوند ۲ بایتی 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
- ارجاعات به نمادهای تعریفنشده را به جای دو کلمه، به یک کلمه کوتاه میکند.
- -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) هست (یا نیست). حالت پیشفرض، در نظر گرفتن یک MMU برای 68020 و بالاتر است.
برای جزئیات بیشتر در مورد گزینههای ویژگیهای وابسته به ماشین PDP-11، به PDP-11-Options مراجعه کنید.
- -mpic | -mno-pic
- تولید کد مستقل از موقعیت (یا وابسته به موقعیت). پیشفرض -mpic است.
- -mall
- -mall-extensions
- فعال کردن تمام افزونههای مجموعه دستورالعمل. این حالت پیشفرض است.
- -mno-extensions
- غیرفعال کردن تمام افزونههای مجموعه دستورالعمل.
- -mextension | -mno-extension
- فعال (یا غیرفعال) کردن یک افزونه خاص از مجموعه دستورالعمل.
- -mcpu
- فعال کردن افزونههای مجموعه دستورالعملی که توسط یک CPU خاص پشتیبانی میشوند، و غیرفعال کردن تمامی افزونههای دیگر.
- -mmachine
- فعال کردن افزونههای مجموعه دستورالعملی که توسط یک مدل ماشین خاص پشتیبانی میشوند، و غیرفعال کردن تمامی افزونههای دیگر.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده picoJava پیکربندی شده باشد.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده PRU پیکربندی شده باشد.
- -mlink-relax
- فرض میکند که LD دستورالعملهای LDI32 را با بررسی ۱۶ بیت بالایی expression بهینهسازی میکند. اگر همه آنها صفر باشند، آنگاه LD دستورالعمل LDI32 را به یک LDI تکی کوتاه میکند. در این حالت "as" بازنشانیهای DIFF را برای عبارتهای diff صادر خواهد کرد.
- -mno-link-relax
- فرض میکند که LD دستورالعملهای LDI32 را بهینهسازی نمیکند. در نتیجه، بازنشانیهای DIFF صادر نخواهند شد.
- -mno-warn-regname-label
- در صورتی که نام یک برچسب با نام یک ثبات یکسان باشد، هشدار نمیدهد. معمولاً برنامهنویسان اسمبلی مایلند این هشدار صادر شود. کامپایلرهای C ممکن است بخواهند این گزینه را خاموش کنند.
گزینههای زیر هنگامی در دسترس هستند که as برای یک پردازنده MIPS پیکربندی شده باشد.
- -G num
- این گزینه بیشترین اندازه شیئی را تعیین میکند که میتواند بهطور ضمنی با ثبات "gp" مورد ارجاع قرار گیرد. این گزینه تنها برای مقاصدی پذیرفته میشود که از قالب ECOFF استفاده میکنند، مانند یک DECstation در حال اجرای Ultrix. مقدار پیشفرض ۸ است.
- -EB
- تولید خروجی در قالب "big endian".
- -EL
- تولید خروجی در قالب "little endian".
- -mips1
- -mips2
- -mips3
- -mips4
- -mips5
- -mips32
- -mips32r2
- -mips32r3
- -mips32r5
- -mips32r6
- -mips64
- -mips64r2
- -mips64r3
- -mips64r5
- -mips64r6
- تولید کد برای یک سطح خاص از معماری مجموعه دستورالعمل MIPS. -mips1 نام مستعاری برای -march=r3000، و -mips2 نام مستعاری برای -march=r6000، و -mips3 نام مستعاری برای -march=r4000 و -mips4 نام مستعاری برای -march=r8000 است. -mips5، -mips32، -mips32r2، -mips32r3، -mips32r5، -mips32r6، -mips64، -mips64r2، -mips64r3، -mips64r5 و -mips64r6 به ترتیب متناظر با پردازندههای عمومی معماری (ISA) MIPS V، MIPS32، MIPS32 Release 2، MIPS32 Release 3، MIPS32 Release 5، MIPS32 Release 6، MIPS64، MIPS64 Release 2، MIPS64 Release 3، MIPS64 Release 5 و MIPS64 Release 6 هستند.
- -march=cpu
- تولید کد برای یک CPU خاص MIPS.
- -mtune=cpu
- زمانبندی و تنظیم برای یک CPU خاص MIPS.
- -mfix7000
- -mno-fix7000
- در صورتی که خواندن ثبات مقصد یک دستورالعمل mfhi یا mflo در دو دستورالعمل بعدی رخ دهد، باعث درج دستورات nop میشود.
- -mfix-rm7000
- -mno-fix-rm7000
- در صورتی که به دنبال یک دستورالعمل dmult یا dmultu یک دستورالعمل load بیاید، باعث درج دستورات nop میشود.
- -mfix-r5900
- -mno-fix-r5900
- تلاشی برای زمانبندی دستور قبلی در شکاف تاخیر (delay slot) یک دستور انشعاب قرار گرفته در انتهای یک حلقه کوتاه شش دستورالعملی یا کمتر انجام نمیدهد و در عوض همیشه یک دستور "nop" را در آنجا قرار میدهد. باگ حلقه کوتاه تحت شرایطی خاص، به دلیل یک نقص سختافزاری در تراشه R5900، باعث میشود حلقهها تنها یک یا دو بار اجرا شوند..IP -mdebug 4
- -no-mdebug
- باعث میشود خروجی اشکالزدایی سبک stabs به جای بخشهای استاندارد .stabs در ELF، در یک بخش .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 (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 Architecture. این گزینه به اسمبلر میگوید دستورالعملهای 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 این گزینه را غیرفعال میکند.
- -mcrc
- -mno-crc
- تولید کد برای افزونه کاربرد خاص بررسی افزونگی چرخهای (CRC) در MIPS. این گزینه به اسمبلر میگوید دستورالعملهای CRC را بپذیرد. -mno-crc این گزینه را غیرفعال میکند.
- -mginv
- -mno-ginv
- تولید کد برای افزونهٔ مختص به کاربرد (ASE) اعتبارسنجی سراسری (GINV). این گزینه به اسمبلر میگوید دستورالعملهای GINV را بپذیرد. -mno-ginv این گزینه را غیرفعال میکند.
- -mloongson-mmi
- -mno-loongson-mmi
- تولید کد برای افزونهٔ مختص به کاربرد دستورالعملهای چندرسانهای لونگسان (MMI). این گزینه به اسمبلر میگوید دستورالعملهای MMI را بپذیرد. -mno-loongson-mmi این گزینه را غیرفعال میکند.
- -mloongson-cam
- -mno-loongson-cam
- تولید کد برای دستورالعملهای حافظهٔ محتواآدرسپذیر (CAM) لونگسان. این گزینه به اسمبلر میگوید دستورالعملهای CAM لونگسان را بپذیرد. -mno-loongson-cam این گزینه را غیرفعال میکند.
- -mloongson-ext
- -mno-loongson-ext
- تولید کد برای دستورالعملهای افزونههای لونگسان (EXT). این گزینه به اسمبلر میگوید دستورالعملهای EXT لونگسان را بپذیرد. -mno-loongson-ext این گزینه را غیرفعال میکند.
- -mloongson-ext2
- -mno-loongson-ext2
- تولید کد برای دستورالعملهای افزونههای نسخه ۲ لونگسان (EXT2). این گزینه به طور ضمنی -mloongson-ext را نیز فعال میکند. این گزینه به اسمبلر میگوید دستورالعملهای 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 در
نسخهٔ 2.24 از GAS
حذف شد،
بنابراین
این گزینه
اکنون
کاربرد
چندانی
ندارد. این
گزینه برای
سازگاری
عقبرو حفظ
شده است.
نامهای پیکربندی موجود عبارتند از: 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"
- غیرفعال کردن تمام تعدیلها (relaxation) برای این فایل.
- "-march=<arch name>"
- اسمبل کردن برای معماری <arch name> که میتواند v3، v3j، v3m، v3f، v3s، v2، v2j، v2f یا v2s باشد.
- "-mbaseline=<baseline>"
- اسمبل کردن برای خطپایه (baseline) <baseline> که میتواند v2، v3 یا v3m باشد.
- "-mfpu-freg=FREG"
- مشخص کردن یک پیکربندی FPU.
- "0 8 SP / 4 DP registers"
- "1 16 SP / 8 DP registers"
- "2 32 SP / 16 DP registers"
- "3 32 SP / 32 DP registers"
- "-mabi=abi"
- مشخص کردن یک نسخهٔ abi؛ مقدار <abi> میتواند v1، v2، v2fp یا v2fpp باشد.
- "-m[no-]mac"
- فعال/غیرفعال کردن پشتیبانی از دستورالعملهای ضرب.
- "-m[no-]div"
- فعال/غیرفعال کردن پشتیبانی از دستورالعملهای تقسیم.
- "-m[no-]16bit-ext"
- فعال/غیرفعال کردن افزونهٔ ۱۶ بیتی.
- "-m[no-]dx-regs"
- فعال/غیرفعال کردن ثباتهای d0/d1.
- "-m[no-]perf-ext"
- فعال/غیرفعال کردن افزونهٔ کارایی (Performance).
- "-m[no-]perf2-ext"
- فعال/غیرفعال کردن افزونهٔ کارایی ۲ (Performance 2).
- "-m[no-]string-ext"
- فعال/غیرفعال کردن افزونهٔ رشته (String).
- "-m[no-]reduced-regs"
- فعال/غیرفعال کردن گزینهٔ پیکربندی کاهشیافتهٔ ثباتها (GPR16).
- "-m[no-]audio-isa-ext"
- فعال/غیرفعال کردن افزونهٔ AUDIO ISA.
- "-m[no-]fpu-sp-ext"
- فعال/غیرفعال کردن افزونهٔ FPU SP.
- "-m[no-]fpu-dp-ext"
- فعال/غیرفعال کردن افزونهٔ FPU DP.
- "-m[no-]fpu-fma"
- فعال/غیرفعال کردن دستورالعملهای 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
- تولید کد برای پردازندههای دارای دستورالعملهای حافظهٔ تراکنشی سختافزاری (HTM).
- -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.
- -msolaris
- تولید کد برای Solaris.
- -mno-solaris
- عدم تولید کد برای Solaris.
- -nops=count
- اگر یک رهنمود همترازی بیشتر از count عملگر nop درج کند، یک شاخه (branch) در ابتدا قرار میدهد تا از اجرای nopها صرفنظر شود.
گزینههای زیر زمانی که as برای یک پردازندهٔ RISC-V پیکربندی شده باشد در دسترس هستند.
- -fpic
- -fPIC
- تولید کد مستقل از موقعیت (position-independent code).
- -fno-pic
- عدم تولید کد مستقل از موقعیت (پیشفرض).
- -march=ISA|Profiles|Profiles_ISA
- انتخاب ISA پایه، به صورتی که با ISA یا Profiles یا Profiles_ISA مشخص شده است. برای مثال -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. اگر این گزینه و صفتهای معماری تنظیم نشده باشند، اسمبلر تنظیم پیکربندی پیشفرض --with-arch=ISA را بررسی خواهد کرد.
- -misa-spec=ISAspec
- انتخاب نسخهٔ مشخصات پیشفرض ISA. اگر نسخهٔ ISA توسط -march تعیین نشده باشد، اسمبلر به تنظیم نسخه مطابق با مشخصات برگزیدهٔ پیشفرض کمک میکند. اگر این گزینه تنظیم نشده باشد، اسمبلر تنظیم پیکربندی پیشفرض --with-isa-spec=ISAspec را بررسی خواهد کرد.
- -mpriv-spec=PRIVspec
- انتخاب نسخهٔ مشخصات سطح دسترسی (privileged spec). میتوان بر اساس مشخصات انتخابشده تصمیم گرفت که آیا CSR معتبر است یا خیر. اگر این گزینه و صفتهای سطح دسترسی تنظیم نشده باشند، اسمبلر تنظیم پیکربندی پیشفرض --with-priv-spec=PRIVspec را بررسی خواهد کرد.
- -mabi=ABI
- انتخاب ABI، که میتواند "ilp32" یا "lp64" باشد، و بهصورت اختیاری در ادامهٔ آن "f"، "d" یا "q" برای مشخص کردن قرارداد فراخوانی ممیز شناورِ دقت یگانه، دقت دوگانه یا دقت چهارگانه، و یا بدون پسوند یا "e" برای مشخص کردن قرارداد فراخوانی soft-float میآید ("e" نمایانگر یک ABI از نوع soft-float RVE است).
- -mrelax
- بهرهگیری از بهینهسازیهای پیونددهنده (linker relaxations) به منظور کاهش تعداد دستورالعملهای مورد نیاز برای شکلدهی آدرسهای نماد. (پیشفرض)
- -mno-relax
- عدم انجام بهینهسازیهای پیونددهنده.
- -march-attr
- تولید محتوای پیشفرض برای بخش صفتهای ELF در riscv اگر رهنمودهای .attribute تنظیم نشده باشند. این بخش برای ثبت اطلاعاتی به کار میرود که پیونددهنده یا بارگذار زمان اجرا برای بررسی سازگاری به آن نیاز دارند. این اطلاعات شامل رشتهٔ ISA، ملزومات همترازی پشته، دسترسیهای ناتراز به حافظه، و نسخهٔ اصلی، فرعی و بازنگری مشخصات سطح دسترسی (privileged specification) است.
- -mno-arch-attr
- عدم تولید بخش صفتهای پیشفرض ELF در riscv اگر رهنمودهای .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
- انتخاب حالت معماری؛ یا معماری سامانه سازمانی (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
- کنترل میکند که آیا اسمبلر بررسی نوع نام ثبات را انجام داده و در صورت عدم تطابق با نوع ثبات عملوند، یک پیام هشدار صادر کند یا خیر. حالت پیشفرض (که با استفاده از آرگومان relaxed قابل بازگردانی است) انجام بررسیهای آسانگیرانه روی نوع نام ثبات است، که به نامهای ثبات ممیز شناور (FPR) از %f0 تا %f15 اجازه میدهد به عنوان آرگومان برای عملوندهای ثبات برداری (VR) مشخص شوند و به نامهای ثبات برداری (VR) از %v0 تا %v15 اجازه میدهد به عنوان آرگومان برای عملوندهای ثبات ممیز شناور (FPR) تعیین گردند. این امر قابل قبول است زیرا FPR در نیمه پایینی VR تعبیه شده است. با استفاده از آرگومان strict، بررسیهای سختگیرانه روی نوع نام ثبات انجام میشود. آرگومان no، که معادل -mno-warn-regtype-mismatch است، هرگونه بررسی نوع نام ثبات را غیرفعال میکند.
گزینههای زیر هنگامی که as برای یک پردازنده TMS320C6000 پیکربندی شده باشد، در دسترس هستند.
- -march=arch
- (تنها)
دستورالعملهای
مربوط به
معماری arch
را فعال
میکند. به
طور
پیشفرض،
تمام
دستورالعملها
مجاز هستند.
مقادیر زیر برای arch پذیرفته میشوند: "c62x"، "c64x"، "c64x+"، "c67x"، "c67x+"، "c674x".
- -mdsbt
- -mno-dsbt
- گزینه -mdsbt باعث میشود اسمبلر مشخصه "Tag_ABI_DSBT" را با مقدار ۱ تولید کند، که نشان میدهد کد از آدرسدهی DSBT استفاده میکند. گزینه -mno-dsbt که حالت پیشفرض است، باعث میشود این برچسب مقدار ۰ داشته باشد و نشان دهد که کد از آدرسدهی DSBT استفاده نمیکند. پیونددهنده (linker) در صورتی که شیءهایی از انواع مختلف (DSBT و غیر DSBT) به یکدیگر پیوند داده شوند، هشداری صادر خواهد کرد.
- -mpid=no
- -mpid=near
- -mpid=far
- گزینه -mpid= باعث میشود اسمبلر مشخصه "Tag_ABI_PID" را با مقداری تولید کند که نشاندهنده نوع آدرسدهی دادههای مورد استفاده توسط کد است. -mpid=no، که پیشفرض است، نشاندهنده آدرسدهی داده وابسته به موقعیت (position-dependent) است، -mpid=near نشاندهنده آدرسدهی مستقل از موقعیت با دسترسیهای GOT با استفاده از آدرسدهی DP نزدیک (near DP addressing) است، و -mpid=far نشاندهنده آدرسدهی مستقل از موقعیت با دسترسیهای GOT با استفاده از آدرسدهی DP دور (far DP addressing) است. پیونددهنده در صورتی که شیءهای ساختهشده با تنظیمات مختلف این گزینه به یکدیگر پیوند داده شوند، هشداری صادر خواهد کرد.
- -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) را انتخاب میکند، خواه 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" در استخرهایی گروهبندی میشوند. این گزینهها فقط بر مقادیر صریحی که از طریق دستورالعملهای PC-relative "L32R" ارجاع داده شدهاند اثر میگذارد؛ مقادیر صریح برای دستورالعملهای "L32R" در حالت مطلق (absolute mode) به طور جداگانه مدیریت میشوند.
- --auto-litpools | --no-auto-litpools
- نحوه مدیریت استخرهای مقادیر صریح را کنترل میکند. حالت پیشفرض --no-auto-litpools است که در غیاب --text-section-literals مقادیر صریح را در بخشهای جداگانهای در فایل خروجی قرار میدهد. این کار به استخر مقادیر صریح اجازه میدهد در یک RAM/ROM داده قرار گیرد. با --auto-litpools، لیترالها در بخش text پراکنده میشوند تا در نزدیکترین حالت ممکن به مراجع خود قرار گیرند و نیازی به دستورالعملهای هدایتی صریح ".literal_position" نیست. این امر ممکن است برای توابع بسیار بزرگ ضروری باشد، جایی که ممکن است یک استخر واحد مقادیر صریح در ابتدای تابع، توسط دستورالعملهای "L32R" در انتهای آن قابل دسترسی نباشد. این گزینهها فقط بر لیترالهایی که از طریق دستورالعملهای PC-relative "L32R" ارجاع داده شدهاند اثر میگذارد؛ مقادیر صریح برای دستورالعملهای "L32R" در حالت مطلق به طور جداگانه پردازش میشوند. هنگام استفاده همزمان با --text-section-literals، اولویت با --auto-litpools است.
- --absolute-literals | --no-absolute-literals
- به اسمبلر مشخص میکند که آیا دستورالعملهای "L32R" از آدرسدهی مطلق یا PC-relative استفاده کنند. اگر پردازنده شامل گزینه آدرسدهی مطلق باشد، حالت پیشفرض استفاده از بازنشانیهای (relocations) مطلق "L32R" است. در غیر این صورت، تنها بازنشانیهای PC-relative دستور "L32R" قابل استفاده هستند.
- --target-align | --no-target-align
- ترازسازی خودکار (automatic alignment) را به منظور کاهش جریمههای انشعاب (branch penalties) با صرف هزینهای اندک در افزایش اندازه کد، فعال یا غیرفعال میکند. این بهینهسازی به طور پیشفرض فعال است. توجه داشته باشید که اسمبلر همواره دستورالعملهایی مانند "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 پیکربندی شده باشد، در دسترس هستند..PP @chapter ویژگیهای وابسته به Z80
گزینههای خط فرمان (Command-line Options)
- -march=CPU[-EXT...][+EXT...]
- این گزینه
پردازندهٔ
هدف را مشخص
میکند. اگر
تلاشی برای
اسمبل کردن
دستورالعملی
صورت گیرد
که روی
پردازندهٔ
هدف اجرا
نخواهد شد،
اسمبلر یک
پیام خطا
صادر
میکند. نام
پردازندههای
زیر
شناختهشده
هستند:
"z80"،
"z180"،
"ez80"،
"gbz80"،
"z80n"،
"r800".
علاوه بر
مجموعه
دستورالعملهای
پایه،
میتوان به
اسمبلر
اعلام کرد
که برخی
کدهای
یادافزار
(mnemonics) افزونه
را نیز
بپذیرد.
برای مثال،
"-march=z180+sli+infc"
پردازندهٔ
z180 را با
دستورالعملهای
SLI و IN F,(C)
گسترش
میدهد. در
حال حاضر
افزونههای
زیر
پشتیبانی
میشوند:
"full" (تمام
دستورالعملهای
شناختهشده)،
"adl" (حالت
پردازندهٔ
ADL بهطور
پیشفرض،
فقط برای eZ80)،
"sli"
(دستورالعمل
شناختهشده
بهصورت
SLI، SLL یا SL1)،
"xyhl"
(دستورالعملهایی
با
نیمههای
ثباتهای
شاخص: IXL، IXH،
IYL، IYH)،
"xdcb"
(دستورالعملهایی
مانند RotOp (II+d),R و
BitOp n,(II+d),R)، "infc"
(دستورالعمل
IN F,(C) یا IN (C))،
"outc0"
(دستورالعمل
OUT (C),0). توجه
داشته
باشید که به
جای گسترش
یک مجموعه
دستورالعمل
پایه،
یادافزارهای
افزونهای
که با "-"
آغاز
میشوند
قابلیت
مربوطه را
لغو
میکنند:
"-march=z80-full+xyhl"
ابتدا تمام
افزونههای
پیشفرض را
حذف کرده و
فقط
پشتیبانی
از
نیمههای
ثباتهای
شاخص را
اضافه
میکند.
اگر این گزینه مشخص نشود، مقدار "-march=z80+xyhl+infc" در نظر گرفته میشود.
- -local-prefix=prefix
- تمام برچسبهای دارای پیشوند مشخصشده را به عنوان محلی (local) علامتگذاری میکند. اما چنین برچسبی میتواند صریحاً در کد به صورت سراسری (global) علامتگذاری شود. این گزینه پیشوند برچسبهای محلی پیشفرض یعنی ".L" را تغییر نمیدهد، بلکه صرفاً پیشوند جدیدی اضافه میکند.
- -colonless
- برچسبهای بدون دونقطه را میپذیرد. تمام نمادها در ابتدای خط به عنوان برچسب در نظر گرفته میشوند.
- -sdcc
- کد اسمبلی تولیدشده توسط SDCC را میپذیرد.
- -fp-s=FORMAT
- قالب اعداد ممیز شناور با دقت یگانه (Single precision). پیشفرض: ieee754 (۳۲ بیتی).
- -fp-d=FORMAT
- قالب اعداد ممیز شناور با دقت مضاعف (Double precision). پیشفرض: ieee754 (۶۴ بیتی).
همچنین ببینید (SEE ALSO)
کپیرایت و تکثیر (COPYRIGHT)
Copyright (c) 1991-2025 Free Software Foundation, Inc.
اجازهٔ نسخهبرداری، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ بعدی منتشرشده توسط بنیاد نرمافزارهای آزاد (Free Software Foundation)؛ بدون بخشهای تغییرناپذیر، بدون متنهای روی جلد و بدون متنهای پشت جلد، داده میشود. یک نسخه از این مجوز در بخشی تحت عنوان «GNU Free Documentation License» گنجانده شده است.
| 2026-01-23 | binutils-2.45.1 |