as AS - แอสเซมเบลอร์ GNU แบบพกพา
as [-a[cdghlns][=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] [--hash-size=N] [--help] [--target-help] [-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] [--sectname-subst] [--size-check=[error|warning]] [--statistics] [-v] [-version] [--version] [-W] [--warn] [--fatal-warnings] [-w] [-x] [-Z] [@FILE] [target-options] [--|files ...]
กำหนดเป้าหมายตัวเลือก AArch64:
[-EB|-EL] [-mabi=ABI]
กำหนดเป้าหมายตัวเลือกอัลฟ่า:
[-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 เป้าหมาย:
ตัวเลือก 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]
ตัวเลือกเป้าหมาย Nios II:
[-relax-all] [-relax-section] [-no-relax] [-EB] [-EL]
กำหนดเป้าหมายตัวเลือก NDS32:
[-EL] [-EB] [-O] [-Os] [-mcpu=cpu] [-misa=isa] [-mabi=abi] [-mall-ext] [-m[no-]16-bit] [-m[no-]perf-ext] [-m[no-]perf2-ext] [-m[no-]string-ext] [-m[no-]dsp-ext] [-m[no-]mac] [-m[no-]div] [-m[no-]audio-isa-ext] [-m[no-]fpu-sp-ext] [-m[no-]fpu-dp-ext] [-m[no-]fpu-fma] [-mfpu-freg=FREG] [-mreduced-regs] [-mfull-regs] [-m[no-]dx-regs] [-mpic] [-mno-relax] [-mb2bb]
กำหนดเป้าหมายตัวเลือก PDP11:
[-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]
กำหนดเป้าหมายตัวเลือก picoJava:
[-mb|-me]
กำหนดเป้าหมายตัวเลือก PowerPC:
[-a32|-a64] [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|-m403|-m405| -m440|-m464|-m476|-m7400|-m7410|-m7450|-m7455|-m750cl|-mgekko| -mbroadway|-mppc64|-m620|-me500|-e500x2|-me500mc|-me500mc64|-me5500| -me6500|-mppc64bridge|-mbooke|-mpower4|-mpwr4|-mpower5|-mpwr5|-mpwr5x| -mpower6|-mpwr6|-mpower7|-mpwr7|-mpower8|-mpwr8|-mpower9|-mpwr9-ma2| -mcell|-mspe|-mspe2|-mtitan|-me300|-mcom] [-many] [-maltivec|-mvsx|-mhtm|-mvle] [-mregnames|-mno-regnames] [-mrelocatable|-mrelocatable-lib|-K PIC] [-memb] [-mlittle|-mlittle-endian|-le|-mbig|-mbig-endian|-be] [-msolaris|-mno-solaris] [-nops=count]
ตัวเลือก PRU เป้าหมาย:
[-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
กำหนดเป้าหมายตัวเลือก RISC-V:
[-fpic|-fPIC|-fno-pic] [-march=ISA] [-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]
ตัวเลือกคะแนนเป้าหมาย:
[-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]
GNU เนื่องจาก เป็นตระกูลแอสเซมเบลอร์จริงๆ หากคุณใช้ (หรือเคยใช้) แอสเซมเบลอร์ GNU บนสถาปัตยกรรมหนึ่ง คุณควรพบสภาพแวดล้อมที่ค่อนข้างคล้ายกันเมื่อคุณใช้กับสถาปัตยกรรมอื่น แต่ละเวอร์ชันมีหลายอย่างเหมือนกันกับเวอร์ชันอื่นๆ รวมถึงรูปแบบไฟล์วัตถุ คำสั่งแอสเซมเบลอร์ส่วนใหญ่ (มักเรียกว่า pseudo-ops) และไวยากรณ์แอสเซมเบลอร์
เนื่องจาก มีวัตถุประสงค์หลักเพื่อรวบรวมเอาต์พุตของคอมไพเลอร์ GNU C gcc เพื่อใช้งานโดยตัวเชื่อมโยง ld อย่างไรก็ตาม เราได้พยายามทำให้เป็นการประกอบอย่างถูกต้องทุกอย่างที่ผู้ประกอบอื่นๆ สำหรับเครื่องเดียวกันจะประกอบ มีการบันทึกข้อยกเว้นไว้อย่างชัดเจน ไม่ได้หมายความว่า เป็น จะใช้ไวยากรณ์เดียวกันกับแอสเซมเบลอร์อื่นสำหรับสถาปัตยกรรมเดียวกันเสมอ ตัวอย่างเช่น เราทราบไวยากรณ์ภาษาแอสเซมบลี 680x0 หลายเวอร์ชันที่เข้ากันไม่ได้
แต่ละครั้งที่คุณเรียกใช้ เป็น โปรแกรมจะรวบรวมโปรแกรมต้นทางเพียงโปรแกรมเดียว โปรแกรมต้นทางประกอบด้วยไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไป (อินพุตมาตรฐานยังเป็นไฟล์)
คุณกำหนด เป็น บรรทัดคำสั่งที่มีชื่อไฟล์อินพุตเป็นศูนย์หรือมากกว่านั้น ไฟล์อินพุตจะถูกอ่าน (จากชื่อไฟล์ซ้ายไปขวา) อาร์กิวเมนต์บรรทัดคำสั่ง (ในตำแหน่งใดก็ได้) ที่ไม่มีความหมายพิเศษจะถือเป็นชื่อไฟล์อินพุต
หากคุณระบุชื่อไฟล์ เป็น ระบบจะพยายามอ่านไฟล์อินพุตหนึ่งไฟล์จากอินพุตมาตรฐาน เป็น ซึ่งโดยปกติแล้วจะเป็นเทอร์มินัลของคุณ คุณอาจต้องพิมพ์ ctl-D เพื่อแจ้งว่า เนื่องจาก ไม่มีโปรแกรมให้ประกอบอีกต่อไป
ใช้ -- หากคุณต้องการตั้งชื่อไฟล์อินพุตมาตรฐานอย่างชัดเจนในบรรทัดคำสั่งของคุณ
หากแหล่งที่มาว่างเปล่า เป็น จะสร้างไฟล์อ็อบเจกต์ว่างขนาดเล็ก
เนื่องจาก อาจเขียนคำเตือนและข้อความแสดงข้อผิดพลาดไปยังไฟล์ข้อผิดพลาดมาตรฐาน (โดยปกติจะเป็นเทอร์มินัลของคุณ) สิ่งนี้ไม่ควรเกิดขึ้นเมื่อคอมไพเลอร์ทำงาน เป็น โดยอัตโนมัติ คำเตือนจะรายงานข้อสันนิษฐานที่เป็นที่สามารถประกอบโปรแกรมที่มีข้อบกพร่องต่อไปได้ ข้อผิดพลาดรายงานปัญหาร้ายแรงที่ทำให้แอสเซมบลีหยุดทำงาน
หากคุณกำลังเรียกใช้ เป็น ผ่านคอมไพเลอร์ GNU C คุณสามารถใช้ตัวเลือก -Wa เพื่อส่งอาร์กิวเมนต์ไปยังแอสเซมเบลอร์ ต้องแยกอาร์กิวเมนต์แอสเซมเบลอร์ออกจากกัน (และ -Wa) ด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น:
gcc -c -g -O -Wa,-alh,-L file.c
ซึ่งส่งผ่านสองตัวเลือกไปยังแอสเซมเบลอร์: -alh (ส่งรายการไปยังเอาต์พุตมาตรฐานที่มีระดับสูงและแหล่งแอสเซมบลี) และ -L (เก็บสัญลักษณ์ในเครื่องไว้ในตารางสัญลักษณ์ ).
โดยปกติแล้ว คุณไม่จำเป็นต้องใช้กลไก -Wa นี้ เนื่องจากตัวเลือกบรรทัดคำสั่งของคอมไพเลอร์จำนวนมากจะถูกส่งผ่านไปยังแอสเซมเบลอร์โดยอัตโนมัติโดยคอมไพเลอร์ (คุณสามารถเรียกใช้ไดรเวอร์คอมไพเลอร์ GNU ด้วยตัวเลือก -v เพื่อดูว่าตัวเลือกใดบ้างที่ส่งผ่านไปยังแต่ละคอมไพล์พาส รวมทั้งแอสเซมเบลอร์ด้วย)
อ่านตัวเลือกบรรทัดคำสั่งจาก ไฟล์ ตัวเลือกที่อ่านจะถูกแทรกแทนที่ตัวเลือก @ไฟล์ ดั้งเดิม หากไม่มี ไฟล์ หรือไม่สามารถอ่านได้ ตัวเลือกดังกล่าวจะถือว่าตรงตามตัวอักษรและไม่ถูกลบออก ตัวเลือกใน ไฟล์ คั่นด้วยช่องว่าง อักขระช่องว่างอาจรวมอยู่ในตัวเลือกโดยล้อมรอบตัวเลือกทั้งหมดในเครื่องหมายคำพูดเดี่ยวหรือคู่ อักขระใดๆ (รวมถึงเครื่องหมายแบ็กสแลช) อาจรวมไว้โดยนำหน้าอักขระที่จะรวมด้วยเครื่องหมายแบ็กสแลช ตัว ไฟล์ อาจมีตัวเลือก @ไฟล์ เพิ่มเติม; ตัวเลือกดังกล่าวจะถูกประมวลผลซ้ำ
เปิดรายการด้วยวิธีต่างๆ ดังต่อไปนี้
ละเว้นเงื่อนไขที่เป็นเท็จ
ละเว้นคำสั่งการดีบัก
รวมถึงข้อมูลทั่วไป เช่น รุ่นและตัวเลือกที่ส่งผ่าน
รวมแหล่งที่มาระดับสูง
รวมถึงการประกอบ
รวมถึงการขยายมาโคร
ละเว้นการประมวลผลแบบฟอร์ม
รวมถึงสัญลักษณ์
ตั้งชื่อไฟล์รายการ
คุณอาจรวมตัวเลือกเหล่านี้ ตัวอย่างเช่น ใช้ -aln สำหรับรายการแอสเซมบลีโดยไม่ต้องประมวลผลแบบฟอร์ม ถ้าใช้ตัวเลือก =file จะต้องเป็นตัวสุดท้าย โดยตัวมันเอง -a จะมีค่าเริ่มต้นเป็น -ahls
เริ่มต้นในโหมดมาโครสำรอง
บีบอัดส่วนดีบัก DWARF โดยใช้ zlib กับ SHF_COMPRESSED จาก ELF ABI ไฟล์อ็อบเจกต์ที่เป็นผลลัพธ์อาจเข้ากันไม่ได้กับลิงเกอร์และยูทิลิตีไฟล์อ็อบเจ็กต์รุ่นเก่า โปรดทราบว่าหากการบีบอัดจะทำให้ส่วนที่ระบุใหญ่ขึ้น ก็จะไม่ถูกบีบอัด
ตัวเลือกเหล่านี้ควบคุมวิธีบีบอัดส่วนการแก้ไขข้อบกพร่องของ 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 หมายเหตุ - หากการบีบอัดจะทำให้ส่วนใหญ่ขึ้นจริง ๆ ก็จะไม่บีบอัดหรือเปลี่ยนชื่อ
อย่าบีบอัดส่วนดีบัก DWARF โดยปกติจะเป็นค่าเริ่มต้นสำหรับเป้าหมายทั้งหมด ยกเว้น x86/x86_64 แต่สามารถใช้ตัวเลือกกำหนดค่าเวลาเพื่อแทนที่สิ่งนี้ได้
เปิดใช้งานการถอดรหัสในแบ็กเอนด์เฉพาะเป้าหมาย หากรองรับ มิฉะนั้นละเว้น แม้ว่าจะละเว้น ตัวเลือกนี้เป็นที่ยอมรับสำหรับความเข้ากันได้ของสคริปต์กับการเรียกไปยังแอสเซมเบลอร์อื่น
เมื่อรวบรวมไฟล์ในไดเร็กทอรี เก่า ให้บันทึกข้อมูลการดีบักโดยอธิบายเป็น ใหม่ แทน
กำหนดสัญลักษณ์ sym เป็น value ก่อนประกอบไฟล์อินพุต ค่า ต้องเป็นค่าคงที่จำนวนเต็ม เช่นเดียวกับในภาษา C เครื่องหมาย 0x ที่นำหน้าหมายถึงค่าเลขฐานสิบหก และเครื่องหมาย 0 ที่นำหน้าหมายถึงค่าเลขฐานแปด ค่าของสัญลักษณ์สามารถถูกแทนที่ภายในซอร์สไฟล์ได้โดยใช้ .set pseudo-op
แสดงวิธีการกำหนดค่าแอสเซมเบลอร์แล้วออก
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ ELF ควรสร้างสัญลักษณ์ทั่วไปที่มีประเภท STT_COMMON หรือไม่ ค่าเริ่มต้นสามารถควบคุมได้ด้วยตัวเลือกการกำหนดค่า --enable-elf-stt-common
หากแอสเซมเบลอร์ได้รับการกำหนดค่าให้รองรับการกำหนดค่าเป้าหมายที่แตกต่างกันหลายรายการ จะสามารถใช้ตัวเลือกนี้เพื่อเลือกแบบฟอร์มที่ต้องการได้
รวดเร็ว --- ข้ามช่องว่างและการประมวลผลความคิดเห็นล่วงหน้า (สมมติว่าแหล่งที่มาคือเอาต์พุตของคอมไพเลอร์)
สร้างข้อมูลการดีบักสำหรับแต่ละบรรทัดของแอสเซมเบลอร์โดยใช้รูปแบบการดีบักที่เป้าหมายต้องการ ปัจจุบันหมายถึง STABS, ECOFF หรือ DWARF2 เมื่อรูปแบบการดีบักเป็น DWARF ส่วน .debug_info และ .debug_line จะถูกปล่อยออกมาเฉพาะเมื่อไฟล์แอสเซมบลีไม่ได้สร้างเอง
สร้างข้อมูลการดีบักแทงสำหรับแต่ละสายแอสเซมเบลอร์ นี่อาจช่วยแก้จุดบกพร่องรหัสแอสเซมเบลอร์ ถ้าดีบักเกอร์สามารถจัดการได้
สร้างข้อมูลการดีบั๊กการแทงสำหรับแต่ละสายแอสเซมเบลอร์ ด้วยส่วนขยาย GNU ที่อาจมีเพียง gdb เท่านั้นที่สามารถจัดการได้ และนั่นอาจทำให้ดีบักเกอร์อื่นๆ หยุดทำงานหรือปฏิเสธที่จะอ่านโปรแกรมของคุณ สิ่งนี้อาจช่วยแก้ไขรหัสแอสเซมเบลอร์ ขณะนี้ส่วนขยาย GNU เพียงตำแหน่งเดียวคือตำแหน่งของไดเร็กทอรีการทำงานปัจจุบัน ณ เวลาการประกอบ
สร้างข้อมูลการดีบัก DWARF2 สำหรับแต่ละสายแอสเซมเบลอร์ นี่อาจช่วยแก้จุดบกพร่องรหัสแอสเซมเบลอร์ ถ้าดีบักเกอร์สามารถจัดการได้ หมายเหตุ---ตัวเลือกนี้รองรับเฉพาะบางเป้าหมายเท่านั้น ไม่ใช่ทั้งหมด
ตัวเลือกนี้เหมือนกับตัวเลือก --gdwarf-2 ยกเว้นว่าจะอนุญาตให้สร้างข้อมูลการดีบักเพิ่มเติมตามข้อกำหนด DWARF รุ่น 3 หมายเหตุ - การเปิดใช้งานตัวเลือกนี้ไม่ได้รับประกันการสร้างข้อมูลเพิ่มเติมใดๆ ทางเลือกในการทำเช่นนั้นขึ้นอยู่กับเป้าหมายแต่ละราย
ตัวเลือกนี้เหมือนกับตัวเลือก --gdwarf-2 ยกเว้นว่าจะอนุญาตให้สร้างข้อมูลการดีบักเพิ่มเติมตามข้อกำหนด DWARF เวอร์ชัน 4 หมายเหตุ - การเปิดใช้งานตัวเลือกนี้ไม่ได้รับประกันการสร้างข้อมูลเพิ่มเติมใดๆ ทางเลือกในการทำเช่นนั้นขึ้นอยู่กับเป้าหมายแต่ละราย
ตัวเลือกนี้เหมือนกับตัวเลือก --gdwarf-2 ยกเว้นว่าจะอนุญาตให้สร้างข้อมูลการดีบักเพิ่มเติมตามข้อกำหนด DWARF เวอร์ชัน 5 หมายเหตุ - การเปิดใช้งานตัวเลือกนี้ไม่ได้รับประกันการสร้างข้อมูลเพิ่มเติมใดๆ ทางเลือกในการทำเช่นนั้นขึ้นอยู่กับเป้าหมายแต่ละราย
แทนที่จะสร้างส่วน .debug_line ให้สร้างชุดของส่วน .debug_line.foo โดยที่ foo เป็นชื่อของส่วนโค้ดที่เกี่ยวข้อง ตัวอย่างเช่น ส่วนโค้ดที่ชื่อ .text.func จะมีข้อมูลหมายเลขบรรทัดแคระอยู่ในส่วนชื่อ .debug_line.text.func หากส่วนรหัสเรียกว่า .text ส่วนของบรรทัดการแก้ไขข้อบกพร่องจะยังคงเรียกเพียง .debug_line โดยไม่มีส่วนต่อท้าย
ควบคุมเวอร์ชันของรายการข้อมูลทั่วไป (CIE) ของ DWARF ที่ผลิตขึ้น เมื่อไม่ได้ระบุแฟล็กนี้ ค่าดีฟอลต์คือเวอร์ชัน 1 แม้ว่าบางเป้าหมายสามารถแก้ไขค่าดีฟอลต์นี้ได้ ค่าอื่นๆ ที่เป็นไปได้สำหรับ เวอร์ชัน คือ 3 หรือ 4
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ ELF ควรสร้างบันทึกแอตทริบิวต์ GNU Build หรือไม่ หากไม่มีอยู่ในแหล่งอินพุต ค่าเริ่มต้นสามารถควบคุมได้โดยตัวเลือกกำหนดค่า --enable-generate-build-notes
สร้างส่วน .sframe จากคำสั่ง CFI
ละเว้น รองรับความเข้ากันได้ของบรรทัดคำสั่งกับแอสเซมเบลอร์อื่น ๆ
พิมพ์สรุปตัวเลือกบรรทัดคำสั่งและออก
พิมพ์สรุปตัวเลือกและทางออกเฉพาะเป้าหมายทั้งหมด
เพิ่มไดเรกทอรี dir ในรายการค้นหาสำหรับคำสั่ง .include
อย่าเตือนเกี่ยวกับลายเซ็นล้น
ออกคำเตือนเมื่อตารางผลต่างมีการเปลี่ยนแปลงสำหรับการแทนที่แบบยาว
เก็บ (ในตารางสัญลักษณ์) สัญลักษณ์ท้องถิ่น สัญลักษณ์เหล่านี้ขึ้นต้นด้วยคำนำหน้าป้ายกำกับเฉพาะระบบ โดยทั่วไปคือ .L สำหรับระบบ ELF หรือ L สำหรับระบบ a.out แบบดั้งเดิม
ตั้งค่าความกว้างสูงสุดเป็นคำพูดของคอลัมน์ข้อมูลเอาต์พุตสำหรับแอสเซมเบลอร์ที่แสดงรายการเป็น number
ตั้งค่าความกว้างสูงสุดเป็นคำพูดของคอลัมน์ข้อมูลเอาต์พุตสำหรับบรรทัดต่อเนื่องในแอสเซมเบลอร์ที่แสดงรายการเป็น number
ตั้งค่าความกว้างสูงสุดของบรรทัดอินพุตตามที่แสดงในรายการ เป็น จำนวน ไบต์
ตั้งค่าจำนวนบรรทัดสูงสุดที่พิมพ์ในรายการสำหรับอินพุตหนึ่งบรรทัดเป็น number + 1
ควบคุมวิธีที่แอสเซมเบลอร์จัดการกับอักขระหลายไบต์ในอินพุต ค่าเริ่มต้น (ซึ่งสามารถกู้คืนได้โดยใช้อาร์กิวเมนต์ allow) คือการอนุญาตอักขระดังกล่าวโดยไม่มีการร้องเรียน การใช้อาร์กิวเมนต์ warn จะทำให้แอสเซมเบลอร์สร้างข้อความเตือนเมื่อใดก็ตามที่พบอักขระหลายไบต์ การใช้อาร์กิวเมนต์ warn-sym-only จะทำให้เกิดคำเตือนเมื่อสัญลักษณ์ถูกกำหนดด้วยชื่อที่มีอักขระหลายไบต์เท่านั้น (การอ้างอิงถึงสัญลักษณ์ที่ไม่ได้กำหนดจะไม่สร้างคำเตือน)
หยุดแอสเซมเบลอร์เพื่อขยายส่วนท้ายของส่วนเอาต์พุตไปยังการจัดตำแหน่งของส่วนนั้น ค่าเริ่มต้นคือการเติมส่วน แต่อาจทำให้เสียพื้นที่ซึ่งอาจจำเป็นสำหรับเป้าหมายที่มีข้อจำกัดด้านหน่วยความจำที่จำกัด
ตั้งชื่อเอาต์พุตไฟล์วัตถุจาก เป็น objfile
พับส่วนข้อมูลลงในส่วนข้อความ
ละเว้น รองรับความเข้ากันได้กับเครื่องมือที่ใช้ตัวเลือกเดียวกันกับทั้งแอสเซมเบลอร์และลิงเกอร์
ให้เกียรติลำดับการแทนที่ในชื่อส่วน
ออกข้อผิดพลาดหรือคำเตือนสำหรับคำสั่ง ELF .size ที่ไม่ถูกต้อง
พิมพ์พื้นที่สูงสุด (เป็นไบต์) และเวลาทั้งหมด (เป็นวินาที) ที่ใช้โดยแอสเซมบลี
ลบสัญลักษณ์สัมบูรณ์ในเครื่องออกจากตารางสัญลักษณ์ขาออก
พิมพ์เวอร์ชัน เป็น
พิมพ์เวอร์ชัน เป็น แล้วออก
ระงับข้อความเตือน
ถือว่าคำเตือนเป็นข้อผิดพลาด
อย่าระงับข้อความเตือนหรือถือว่าเป็นข้อผิดพลาด
ละเว้น
ละเว้น
สร้างไฟล์ออบเจกต์แม้หลังจากเกิดข้อผิดพลาด
อินพุตมาตรฐานหรือไฟล์ต้นฉบับเพื่อประกอบ
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโหมด 64 บิตของสถาปัตยกรรม ARM (AArch64)
ตัวเลือกนี้ระบุว่าเอาต์พุตที่สร้างโดยแอสเซมเบลอร์ควรทำเครื่องหมายว่าเข้ารหัสสำหรับโปรเซสเซอร์ big-endian
ตัวเลือกนี้ระบุว่าเอาต์พุตที่สร้างโดยแอสเซมเบลอร์ควรทำเครื่องหมายว่าเข้ารหัสสำหรับโปรเซสเซอร์ little-endian
ระบุ ABI ที่ซอร์สโค้ดใช้ อาร์กิวเมนต์ที่รู้จักคือ: ilp32 และ lp64 ซึ่งกำหนดไฟล์อ็อบเจ็กต์ที่สร้างขึ้นในรูปแบบ ELF32 และ ELF64 ตามลำดับ ค่าเริ่มต้นคือ lp64
ตัวเลือกนี้ระบุตัวประมวลผลเป้าหมาย แอสเซมเบลอร์จะแสดงข้อความแสดงข้อผิดพลาดหากมีการพยายามรวบรวมคำสั่งที่จะไม่ดำเนินการกับโปรเซสเซอร์เป้าหมาย ชื่อโปรเซสเซอร์ต่อไปนี้เป็นที่รู้จัก: 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-a710 , ares, exynos-m1, falkor, neoverse-n1, neoverse- n2, neoverse-e1, neoverse-v1, qdf24xx, saphira, thunderx , วัลแคน, xgene1 xgene2, cortex-r82, cortex-x1 และ <รหัส>cortex-x2
อาจใช้ชื่อพิเศษ all เพื่อให้แอสเซมเบลอร์ยอมรับคำสั่งที่ใช้ได้สำหรับโปรเซสเซอร์ใดๆ ที่รองรับ รวมถึงส่วนขยายเพิ่มเติมทั้งหมด นอกเหนือจากชุดคำสั่งพื้นฐานแล้ว แอสเซมเบลอร์สามารถบอกให้ยอมรับ หรือจำกัด ตัวช่วยจำส่วนขยายต่างๆ ที่ขยายโปรเซสเซอร์ หากการใช้งานโปรเซสเซอร์บางตัวสามารถมีส่วนขยายได้ ส่วนขยายเหล่านั้นจะถูกเปิดใช้งานโดยอัตโนมัติ ดังนั้น คุณจึงไม่จำเป็นต้องระบุนามสกุลเพิ่มเติมใดๆ
ตัวเลือกนี้ระบุสถาปัตยกรรมเป้าหมาย แอสเซมเบลอร์จะแสดงข้อความแสดงข้อผิดพลาดหากมีการพยายามรวบรวมคำสั่งซึ่งจะไม่ดำเนินการบนสถาปัตยกรรมเป้าหมาย ชื่อสถาปัตยกรรมต่อไปนี้เป็นที่รู้จัก: 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-r, armv9-a, armv9.1- ก, armv9.2-a และ armv9.3-a หากระบุทั้ง -mcpu และ -march แอสเซมเบลอร์จะใช้การตั้งค่าสำหรับ -mcpu หากไม่ได้ระบุไว้ แอสเซมเบลอร์จะมีค่าเริ่มต้นเป็น -mcpu=all ตัวเลือกสถาปัตยกรรมสามารถขยายได้ด้วยตัวเลือกส่วนขยายชุดคำสั่งเดียวกันกับตัวเลือก -mcpu ซึ่งแตกต่างจาก -mcpu ส่วนขยายไม่ได้เปิดใช้งานตามค่าเริ่มต้นเสมอ
ตัวเลือกนี้เปิดใช้งานข้อความแสดงข้อผิดพลาดอย่างละเอียดสำหรับก๊าซ AArch64 ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้น
ตัวเลือกนี้ปิดใช้งานข้อความแสดงข้อผิดพลาดอย่างละเอียดในก๊าซ AArch64
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Alpha
ตัวเลือกนี้ระบุตัวประมวลผลเป้าหมาย หากมีความพยายามที่จะรวบรวมคำสั่งที่จะไม่ดำเนินการกับโปรเซสเซอร์เป้าหมาย แอสเซมเบลอร์อาจขยายคำสั่งเป็นแมโครหรือแสดงข้อความแสดงข้อผิดพลาด ตัวเลือกนี้เทียบเท่ากับคำสั่ง .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 สำหรับคำสั่งการแทงและตัวอธิบายขั้นตอน ค่าเริ่มต้นคือเปิดใช้งาน .mdebug โดยอัตโนมัติเมื่อเห็นคำสั่งการแทงครั้งแรก
ตัวเลือกนี้บังคับให้ใส่การย้ายตำแหน่งทั้งหมดลงในไฟล์วัตถุ แทนที่จะประหยัดพื้นที่และแก้ไขการย้ายตำแหน่งบางส่วนในเวลาประกอบ โปรดทราบว่าตัวเลือกนี้ไม่ได้เผยแพร่เลขคณิตของสัญลักษณ์ทั้งหมดลงในไฟล์อ็อบเจ็กต์ เนื่องจากไม่สามารถแสดงเลขคณิตของสัญลักษณ์ทั้งหมดได้ อย่างไรก็ตาม ตัวเลือกนี้ยังคงมีประโยชน์ในการใช้งานบางอย่าง
เปิดใช้งานหรือปิดใช้งานการปรับให้เหมาะสมของการเรียกโพรซีเดอร์ ทั้งที่แอสเซมบลาจและเวลาลิงก์ ตัวเลือกเหล่านี้ใช้ได้เฉพาะกับเป้าหมาย VMS และ -replace เป็นค่าเริ่มต้น ดูหัวข้อ 1.4.1 ของคู่มือยูทิลิตี้ OpenVMS Linker
ตัวเลือกนี้ใช้เมื่อคอมไพเลอร์สร้างข้อมูลการดีบัก เมื่อ gcc ใช้ mips-tfile เพื่อสร้างข้อมูลการแก้ไขข้อบกพร่องสำหรับ ECOFF ป้ายกำกับในเครื่องจะต้องส่งผ่านไปยังไฟล์วัตถุ มิฉะนั้นตัวเลือกนี้จะไม่มีผล
สัญลักษณ์ทั่วไปในเครื่องที่ใหญ่กว่า ขนาด จะอยู่ใน .bss ในขณะที่สัญลักษณ์ที่เล็กกว่าจะอยู่ใน .sbss
ตัวเลือกเหล่านี้จะถูกละเว้นสำหรับความเข้ากันได้แบบย้อนหลัง
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ ARC
ตัวเลือกนี้เลือกตัวแปรโปรเซสเซอร์หลัก
เลือกเอาต์พุต big-endian (-EB) หรือ little-endian (-EL)
เปิดใช้งานคำแนะนำส่วนขยายความหนาแน่นของโค้ด
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับตระกูลโปรเซสเซอร์ ARM
ระบุว่าตัวแปรโปรเซสเซอร์ ARM ใดเป็นเป้าหมาย
ระบุว่าตัวแปรสถาปัตยกรรม ARM ใดที่เป้าหมายใช้
เลือกสถาปัตยกรรม Floating Point ที่เป็นเป้าหมาย
เลือกจุดลอยตัว ABI ที่ใช้งานอยู่
เปิดใช้งานการถอดรหัสคำสั่ง Thumb only
เลือกแบบแผนการเรียกโพรซีเดอร์ที่ใช้อยู่
เลือกเอาต์พุต big-endian (-EB) หรือ little-endian (-EL)
ระบุว่ารหัสถูกสร้างขึ้นโดยคำนึงถึงการทำงานร่วมกันระหว่างรหัส Thumb และ ARM
เปิดโหมดความเข้ากันได้ทางไวยากรณ์ของแอสเซมบลี CodeComposer Studio
ระบุว่ารหัส PIC ถูกสร้างขึ้น
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับตระกูลโปรเซสเซอร์ Blackfin
ตัวเลือกนี้ระบุตัวประมวลผลเป้าหมาย ไม่ใช้ 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
รวมตัวกันสำหรับ FDPIC ABI
ปิดการใช้งาน -mfdpic
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับตระกูลตัวประมวลผล BPF ของเคอร์เนล Linux
@chapter คุณลักษณะขึ้นอยู่กับ BPF
ตัวเลือกนี้ระบุว่าแอสเซมเบลอร์ควรปล่อย eBPF ระดับบิ๊กเอนด์
ตัวเลือกนี้ระบุว่าแอสเซมเบลอร์ควรปล่อย eBPF ที่จบน้อย
โปรดทราบว่าหากไม่มีการระบุอ็อพชัน endianness ในบรรทัดคำสั่ง ระบบจะใช้ endianness ของโฮสต์ ดูหน้าข้อมูลสำหรับเอกสารประกอบของตัวเลือกเฉพาะ CRIS
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับตระกูลโปรเซสเซอร์ C-SKY
รวบรวมสถาปัตยกรรม archname ตัวเลือก --help แสดงค่าที่ถูกต้องสำหรับ archname
ประกอบสถาปัตยกรรม cpuname ตัวเลือก --help แสดงค่าที่ถูกต้องสำหรับ cpuname
สร้างเอาต์พุตแบบ little-endian
สร้างผลผลิตระดับบิ๊กเอนด์
สร้างรหัสที่ไม่ขึ้นกับตำแหน่ง
เปิด/ปิดการแปลงคำสั่งสาขาแบบสั้น jbf, jbt และ jbr เป็น jmpi ตัวเลือกนี้ใช้สำหรับโปรเซสเซอร์ V2 เท่านั้น มันถูกละเว้นบนเป้าหมาย CK801 และ CK802 ซึ่งไม่สนับสนุนคำสั่ง jmpi และเปิดใช้งานตามค่าเริ่มต้นสำหรับโปรเซสเซอร์อื่น
ส่งผ่านการย้ายตำแหน่ง R_CKCORE_PCREL_IMM26BY2 สำหรับคำสั่ง bsr ไปยังตัวเชื่อมโยง ตัวเลือกนี้ใช้ได้เฉพาะกับเป้าหมาย C-SKY V2 ELF แบบ Bare-Metal ซึ่งเปิดใช้งานโดยค่าเริ่มต้น ไม่สามารถใช้ในรหัสที่จะเชื่อมโยงแบบไดนามิกกับไลบรารีที่ใช้ร่วมกัน
เปิด/ปิดการแปลงคำสั่ง jbsr เป็น bsr ตัวเลือกนี้เปิดใช้งานอยู่เสมอ (และ -mno-force2bsr จะถูกละเว้น) สำหรับเป้าหมาย CK801/CK802 นอกจากนี้ยังเปิดใช้งานเสมอเมื่อ -mbranch-stub มีผลบังคับใช้
เปิด/ปิดการแปลงคำสั่ง jsri เป็น bsr ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้น
เปิด/ปิดการแปลงคำสั่ง lrw เป็นคู่ movih/ori
เปิด/ปิดคำสั่ง lrw แบบขยาย ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้นสำหรับโปรเซสเซอร์ CK800-series
เปิด/ปิดการวางตำแหน่งของสระตามตัวอักษรหลังจากแต่ละฟังก์ชัน
เปิด/ปิดการวางตำแหน่งของกลุ่มตัวอักษรหลังจากสาขาที่ไม่มีเงื่อนไข ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้น
เปิด/ปิดคำแนะนำการขัดจังหวะสแตก ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้นบนโปรเซสเซอร์ CK801, CK802 และ CK802
ตัวเลือกต่อไปนี้เปิดใช้คำแนะนำเพิ่มเติมบางอย่างอย่างชัดเจน คุณลักษณะเหล่านี้เปิดใช้งานโดยปริยายโดยใช้ -mcpu= เพื่อระบุโปรเซสเซอร์ที่สนับสนุน
เปิดใช้คำสั่งฮาร์ดโฟลต
เปิดใช้งานคำสั่งมัลติโปรเซสเซอร์
เปิดใช้งานคำสั่งตัวประมวลผลร่วม
เปิดใช้งานคำสั่งดึงแคชล่วงหน้า
เปิดใช้งานคำแนะนำด้านความปลอดภัย C-SKY
เปิดใช้งานคำแนะนำความน่าเชื่อถือ C-SKY
เปิดใช้งานคำแนะนำ DSP
เปิดใช้งานคำแนะนำ DSP ที่ปรับปรุงแล้ว
เปิดใช้งานคำสั่งเวกเตอร์ DSP
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Epiphany
ระบุว่าอนุญาตให้ใช้ทั้งคำสั่ง 32 และ 16 บิต นี่คือลักษณะการทำงานเริ่มต้น
จำกัดคำสั่งที่อนุญาตไว้ที่ชุด 16 บิตเท่านั้น
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ H8/300 @chapter คุณลักษณะขึ้นอยู่กับ H8/300
as เวอร์ชัน Renesas H8/300 มีตัวเลือกที่ขึ้นกับเครื่องหนึ่งตัวเลือก:
รองรับค่าคงที่ฐานสิบหกสไตล์ H'00 นอกเหนือจากสไตล์ 0x00
ตั้งค่าตัวแปรเครื่อง H8300 ชื่อเครื่องต่อไปนี้เป็นที่รู้จัก: h8300h, h8300hn, h8300s, h8300sn, h8300sx และ h8300sxn
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ i386
เลือกขนาดของคำ 32 บิตหรือ 64 บิต --32 หมายถึงสถาปัตยกรรม Intel i386 ในขณะที่ --x32 และ --64 หมายถึงสถาปัตยกรรม AMD x86-64 แบบ 32 บิตหรือ 64- ขนาดคำบิตตามลำดับ ตัวเลือกเหล่านี้ใช้ได้เฉพาะกับรูปแบบไฟล์วัตถุ ELF และจำเป็นต้องมีการสนับสนุน BFD ที่จำเป็น (บนแพลตฟอร์ม 32 บิต คุณต้องเพิ่ม --enable-64-bit-bfd เพื่อกำหนดค่าเปิดใช้งานการใช้งาน 64 บิต และ ใช้ x86-64 เป็นแพลตฟอร์มเป้าหมาย)
ตามค่าเริ่มต้น x86 GAS จะแทนที่คำสั่ง nop หลายคำสั่งที่ใช้สำหรับการจัดตำแหน่งภายในส่วนของโค้ดด้วยคำสั่ง nop แบบหลายไบต์ เช่น leal 0(%esi,1),%esi สวิตช์นี้จะปิดใช้งานการปรับให้เหมาะสมหากมีการระบุไบต์เดียว nop (0x90) อย่างชัดเจนเป็นไบต์เติมสำหรับการจัดตำแหน่ง
บนแพลตฟอร์มที่ได้รับ SVR4 อักขระ / จะถือว่าเป็นอักขระความคิดเห็น ซึ่งหมายความว่าไม่สามารถใช้ในนิพจน์ได้ ตัวเลือก --divide เปลี่ยน / เป็นอักขระปกติ การดำเนินการนี้ไม่ได้ปิดใช้งาน / ที่จุดเริ่มต้นของบรรทัดที่เริ่มแสดงความคิดเห็น หรือส่งผลต่อการใช้ # เพื่อเริ่มแสดงความคิดเห็น
ตัวเลือกนี้ระบุตัวประมวลผลเป้าหมาย แอสเซมเบลอร์จะแสดงข้อความแสดงข้อผิดพลาดหากมีการพยายามรวบรวมคำสั่งที่จะไม่ดำเนินการกับโปรเซสเซอร์เป้าหมาย ชื่อโปรเซสเซอร์ต่อไปนี้เป็นที่รู้จัก: 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, btver1, btver2, generic32 และ generic64 นอกจากชุดคำสั่งพื้นฐานแล้ว แอสเซมเบลอร์ยังสามารถบอกให้ยอมรับการช่วยจำส่วนขยายต่างๆ ตัวอย่างเช่น -march=i686+sse4+vmx ขยาย i686 ด้วย sse4 และ vmx
ปัจจุบันส่วนขยายต่อไปนี้ได้รับการสนับสนุน: 8087, 287, 387, 687, cmov, fxsr, mmx, sse, sse2, sse3, sse4a, ssse3, sse4.1, sse4.2, sse4, avx , avx2, 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, amx_int8, amx_bf16, amx_fp16, 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, svme and padlock
โปรดทราบว่าการช่วยจำส่วนขยายเหล่านี้สามารถนำหน้าด้วย no เพื่อยกเลิกฟังก์ชันที่เกี่ยวข้อง (และที่ขึ้นต่อกันใดๆ) เมื่อใช้คำสั่ง .arch ร่วมกับ -march คำสั่ง .arch จะมีความสำคัญ
ตัวเลือกนี้ระบุโปรเซสเซอร์ที่จะปรับให้เหมาะสม เมื่อใช้ร่วมกับตัวเลือก -march ระบบจะสร้างเฉพาะคำสั่งของโปรเซสเซอร์ที่ระบุโดยตัวเลือก -march ค่า CPU ที่ถูกต้องจะเหมือนกับรายการโปรเซสเซอร์ของ -march=CPU
ตัวเลือกนี้ระบุว่าแอสเซมเบลอร์ควรเข้ารหัสคำสั่ง SSE ด้วยคำนำหน้า VEX
ตัวเลือกนี้ระบุว่าแอสเซมเบลอร์ควรเข้ารหัสการย้ายเวกเตอร์ที่จัดตำแหน่งเป็นการย้ายเวกเตอร์ที่ไม่ได้จัดตำแหน่ง
ตัวเลือกเหล่านี้จะควบคุมว่าแอสเซมเบลอร์ควรตรวจสอบคำสั่ง SSE หรือไม่ -msse-check=none จะทำให้แอสเซมเบลอร์ไม่ตรวจสอบคำสั่ง SSE ซึ่งเป็นค่าเริ่มต้น -msse-check=warning จะทำให้แอสเซมเบลอร์ออกคำเตือนสำหรับคำสั่ง SSE ใดๆ -msse-check=error จะทำให้แอสเซมเบลอร์แสดงข้อผิดพลาดสำหรับคำสั่ง SSE ใดๆ
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัสคำสั่ง AVX แบบสเกลาร์ -mavxscalar=128 จะเข้ารหัสคำสั่ง AVX แบบสเกลาร์ด้วยความยาวเวกเตอร์ 128 บิต ซึ่งเป็นค่าเริ่มต้น -mavxscalar=256 จะเข้ารหัสคำสั่ง AVX แบบสเกลาร์ด้วยความยาวเวกเตอร์ 256 บิต คำเตือน: อย่าใช้รหัสนี้สำหรับรหัสการผลิต - เนื่องจากข้อผิดพลาดของ CPU รหัสผลลัพธ์อาจไม่ทำงานในบางรุ่น
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัสคำสั่ง VEX.W-ignored (WIG) VEX -mvexwig=0 จะเข้ารหัสคำสั่ง WIG VEX ด้วย vex.w=0 ซึ่งเป็นค่าเริ่มต้น -mvexwig=1 จะเข้ารหัสคำสั่ง WIG EVEX ด้วย vex.w=1 คำเตือน: อย่าใช้รหัสนี้สำหรับรหัสการผลิต - เนื่องจากความผิดพลาดของ CPU โค้ดผลลัพธ์อาจไม่ ทำงานในบางรุ่น
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัสคำสั่ง EVEX ที่ละเว้นความยาว (LIG) -mevexlig=128 จะเข้ารหัสคำสั่ง LIG EVEX ด้วยความยาวเวกเตอร์ 128 บิต ซึ่งเป็นค่าเริ่มต้น -mevexlig=256 และ -mevexlig=512 จะเข้ารหัสคำสั่ง LIG EVEX ที่มีความยาวเวกเตอร์ 256 บิตและ 512 บิต ตามลำดับ .
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัสคำสั่ง w-ignored (WIG) EVEX -mevexwig=0 จะเข้ารหัสคำสั่ง WIG EVEX ด้วย evex.w=0 ซึ่งเป็นค่าเริ่มต้น -mevexwig=1 จะเข้ารหัสคำสั่ง WIG EVEX ด้วย evex.w=1
ตัวเลือกนี้ระบุคำสั่งช่วยจำสำหรับคำสั่งที่ตรงกัน คำสั่ง .att_mnemonic และ .intel_mnemonic จะใช้แบบอย่าง
ตัวเลือกนี้ระบุไวยากรณ์ของคำสั่งเมื่อประมวลผลคำสั่ง คำสั่ง .att_syntax และ .intel_syntax จะใช้แบบอย่าง
ตัวเลือกนี้ระบุว่าการลงทะเบียนไม่ต้องการคำนำหน้า % คำสั่ง .att_syntax และ .intel_syntax จะใช้แบบอย่าง
ตัวเลือกนี้บังคับให้แอสเซมเบลอร์เพิ่มคำนำหน้า BND ให้กับทุกสาขา แม้ว่าคำนำหน้าดังกล่าวจะไม่ได้ระบุอย่างชัดเจนในซอร์สโค้ดก็ตาม
สำหรับเป้าหมาย ELF แอสเซมเบลอร์จะปรับการย้ายตำแหน่งที่ไม่ใช่ PLT ให้เหมาะสมเทียบกับเป้าหมายสาขาทั่วโลกที่ไม่อ่อนแอที่กำหนดไว้ด้วยการมองเห็นเริ่มต้น ตัวเลือก -mshared บอกให้แอสเซมเบลอร์สร้างรหัสซึ่งอาจเข้าสู่ไลบรารีที่ใช้ร่วมกัน ซึ่งเป้าหมายสาขาทั่วโลกที่ไม่อ่อนแอทั้งหมดพร้อมการเปิดเผยเริ่มต้นสามารถยึดครองได้ รหัสผลลัพธ์จะใหญ่กว่าเล็กน้อย ตัวเลือกนี้มีผลกับการจัดการคำแนะนำของสาขาเท่านั้น
บนเป้าหมาย PE/COFF ตัวเลือกนี้บังคับให้ใช้รูปแบบไฟล์วัตถุขนาดใหญ่ ซึ่งอนุญาตมากกว่า 32768 ส่วน
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัสคำนำหน้าการล็อก ตัวเลือกนี้มีไว้เพื่อเป็นวิธีแก้ปัญหาสำหรับโปรเซสเซอร์ที่ล้มเหลวในคำนำหน้าการล็อก ตัวเลือกนี้สามารถใช้ได้อย่างปลอดภัยกับคอมพิวเตอร์แบบ single-core, single-thread เท่านั้น -momit-lock-prefix=yes จะละเว้นคำนำหน้าการล็อกทั้งหมด -momit-lock-prefix=no จะเข้ารหัสคำนำหน้าการล็อกตามปกติ ซึ่งเป็นค่าเริ่มต้น
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัส lfence, mfence และ sfence -mfence-as-lock-add=yes จะเข้ารหัส lfence, mfence และ sfence เป็น lock addl $0x0, (%rsp ) ในโหมด 64 บิต และ ล็อค addl $0x0, (%esp) ในโหมด 32 บิต -mfence-as-lock-add=no จะเข้ารหัส lfence, mfence และ sfence ตามปกติ ซึ่งเป็นค่าเริ่มต้น
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ควรสร้างการย้ายตำแหน่งแบบผ่อนคลาย R_386_GOT32X ในโหมด 32 บิต หรือ R_X86_64_GOTPCRELX และ R_X86_64_REX_GOTPCRELX ในโหมด 64 บิต -mrelax-relocations=yes จะสร้างการย้ายตำแหน่งแบบผ่อน -mrelax-relocations=no จะไม่สร้างการย้ายตำแหน่งแบบผ่อน ค่าเริ่มต้นสามารถควบคุมได้ด้วยตัวเลือกการกำหนดค่า --enable-x86-relax-relocations
ตัวเลือกนี้ควบคุมวิธีที่แอสเซมเบลอร์ควรจัดแนวสาขาด้วยคำนำหน้ากลุ่มหรือ NOP NUM ต้องยกกำลัง 2 ซึ่งควรเป็น 0 หรือไม่น้อยกว่า 16 สาขาจะจัดแนวภายในขอบเขตไบต์ NUM -malign-branch-boundary=0 ซึ่งเป็นค่าเริ่มต้น จะไม่จัดแนวสาขา
ตัวเลือกนี้ระบุประเภทของสาขาที่จะจัดแนว TYPE คือการรวมกันของ jcc ซึ่งจัดแนวการข้ามแบบมีเงื่อนไข fused ซึ่งจัดแนวการกระโดดแบบมีเงื่อนไขแบบผสม jmp ซึ่ง จัดแนวการข้ามที่ไม่มีเงื่อนไข การโทร ซึ่งจัดแนวการโทร ret ซึ่งจัดแนว rets ทางอ้อม ซึ่งจัดแนวการกระโดดและการโทรโดยอ้อม ค่าเริ่มต้นคือ -malign-branch=jcc+fused+jmp
ตัวเลือกนี้ระบุจำนวนคำนำหน้าสูงสุดในคำแนะนำเพื่อจัดแนวสาขา NUM ควรอยู่ระหว่าง 0 ถึง 5 ค่าเริ่มต้น NUM คือ 5
ตัวเลือกนี้จัดแนวการข้ามแบบมีเงื่อนไข การข้ามแบบมีเงื่อนไขแบบผสม และการกระโดดแบบไม่มีเงื่อนไขภายในขอบเขต 32 ไบต์โดยมีคำนำหน้ากลุ่มสูงสุด 5 รายการในคำสั่ง ซึ่งเทียบเท่ากับ -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5<. ค่าเริ่มต้นไม่จัดแนวสาขา
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ควรสร้าง lfence หลังจากโหลดคำสั่งหรือไม่ -mlfence-after-load=yes จะสร้าง lfence -mlfence-after-load=no จะไม่สร้าง lfence ซึ่งเป็นค่าเริ่มต้น
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ควรสร้าง lfence ก่อนคำแนะนำทางอ้อมใกล้สาขาหรือไม่ -mlfence-before-indirect-branch=all จะสร้าง lfence ก่อนทางอ้อมใกล้สาขาผ่านการลงทะเบียนและออกคำเตือนก่อนสาขาใกล้ทางอ้อมผ่านหน่วยความจำ นอกจากนี้ยังตั้งค่า -mlfence-before-ret=shl โดยปริยายเมื่อไม่มี -mlfence-before-ret= ที่ชัดเจน -mlfence-before-indirect-branch=register จะสร้าง lfence ก่อนทางอ้อมใกล้สาขาผ่านการลงทะเบียน -mlfence-before-indirect-branch=memory จะออกคำเตือนก่อนทางอ้อมใกล้สาขาผ่านหน่วยความจำ -mlfence-before-indirect-branch=none จะไม่สร้าง lfence หรือการเตือนปัญหา ซึ่งเป็นค่าเริ่มต้น โปรดทราบว่า lfence จะไม่ถูกสร้างขึ้นก่อนอ้อมใกล้สาขาผ่านการลงทะเบียนด้วย -mlfence-after-load=yes เนื่องจาก lfence จะถูกสร้างขึ้นหลังจากโหลดการลงทะเบียนเป้าหมายของสาขา
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ควรสร้าง lfence ก่อน ret หรือไม่ -mlfence-before-ret=or จะสร้าง Generate หรือ Instruction ด้วย lfence -mlfence-before-ret=shl/yes จะสร้างคำสั่ง shl ด้วย lfence -mlfence-before-ret=not จะไม่สร้างคำสั่งด้วย lfence -mlfence-before-ret=none จะไม่สร้าง lfence ซึ่งเป็นค่าเริ่มต้น
ตัวเลือกเหล่านี้ควบคุมว่าแอสเซมเบลอร์ควรสร้างบันทึกคุณสมบัติ GNU_PROPERTY_X86_ISA_1_USED และ GNU_PROPERTY_X86_FEATURE_2_USED GNU หรือไม่ ค่าเริ่มต้นสามารถควบคุมได้โดยตัวเลือกกำหนดค่า --enable-x86-used-note
ตัวเลือกเหล่านี้ควบคุมวิธีที่แอสเซมเบลอร์ควรเข้ารหัสคำสั่ง SAE-only EVEX -mevexrcig=rne จะเข้ารหัสบิต RC ของคำสั่ง EVEX ด้วย 00 ซึ่งเป็นค่าเริ่มต้น -mevexrcig=rd, -mevexrcig=ru และ -mevexrcig=rz จะเข้ารหัสคำสั่ง EVEX เฉพาะ SAE ด้วยบิต RC 01, 10 และ 11 ตามลำดับ
ตัวเลือกนี้ระบุว่าแอสเซมเบลอร์ควรยอมรับเฉพาะ AMD64 หรือ Intel64 ISA ในโหมด 64 บิต ค่าเริ่มต้นคือยอมรับทั่วไป, Intel64 เท่านั้นและ AMD64 ISAs
เพิ่มประสิทธิภาพการเข้ารหัสคำสั่งด้วยขนาดคำสั่งที่เล็กลง -O และ -O1 เข้ารหัสคำแนะนำการโหลดรีจิสเตอร์ 64 บิตด้วย 64 บิตทันทีที่คำสั่งโหลดรีจิสเตอร์ 32 บิตพร้อม 31 บิตหรือ 32 บิตทันที เข้ารหัส 64 - บิต คำแนะนำในการล้างรีจิสเตอร์พร้อมคำแนะนำการล้างรีจิสเตอร์ 32 บิต เข้ารหัสคำแนะนำการล้างรีจิสเตอร์เวกเตอร์ VEX/EVEX 256 บิต/512 บิต พร้อมคำแนะนำการล้างรีจิสเตอร์เวกเตอร์ VEX 128 บิต เข้ารหัสโหลดรีจิสเตอร์เวกเตอร์ EVEX 128 บิต/256 บิต /จัดเก็บคำสั่งด้วย VEX vector register โหลด/เก็บคำแนะนำ และเข้ารหัส EVEX แบบ 128 บิต/256 บิต บรรจุคำสั่งตรรกะจำนวนเต็มด้วยตรรกะจำนวนเต็มบรรจุ VEX 128 บิต/256 บิต -O2 มีการเพิ่มประสิทธิภาพ -O1 พร้อมเข้ารหัสคำแนะนำการล้างรีจิสเตอร์เวกเตอร์ EVEX 256 บิต/512 บิต พร้อมคำแนะนำการล้างรีจิสเตอร์เวกเตอร์ EVEX 128 บิต ในโหมด 64 บิต คำแนะนำที่เข้ารหัส VEX ด้วยตัวดำเนินการต้นทางที่มีการสลับที่ จะมีการสับเปลี่ยนตัวถูกดำเนินการต้นทาง หากอนุญาตให้ใช้รูปแบบคำนำหน้า VEX แบบ 2 ไบต์แทนแบบ 3 ไบต์ รูปแบบบางอย่างของ AND และ OR ที่มีตัวดำเนินการ (register) เดียวกันที่ระบุสองครั้งจะถูกเปลี่ยนเป็น TEST -Os มีการเพิ่มประสิทธิภาพ -O2 พร้อมเข้ารหัสการทดสอบการลงทะเบียนแบบ 16 บิต 32 บิต และ 64 บิต พร้อมการทดสอบการลงทะเบียนแบบ 8 บิตในทันที -O0 ปิดการเพิ่มประสิทธิภาพนี้
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับ Ubicom IP2K ซีรีส์
ระบุว่าอนุญาตให้ใช้คำสั่ง IP2022 เพิ่มเติม
คืนค่าพฤติกรรมเริ่มต้น ซึ่งจำกัดคำสั่งที่อนุญาตไว้เฉพาะคำสั่ง IP2022 พื้นฐาน
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Renesas M32C และ M16C
ประกอบคำสั่ง M32C
ประกอบคำแนะนำ M16C (ค่าเริ่มต้น)
เปิดใช้การรองรับการผ่อนคลายเวลาลิงก์
รองรับค่าคงที่ฐานสิบหกสไตล์ H'00 นอกเหนือจากสไตล์ 0x00
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับซีรีส์ Renesas M32R (เดิมคือ Mitsubishi M32R)
ระบุว่าโปรเซสเซอร์ใดในตระกูล M32R เป็นเป้าหมาย ค่าเริ่มต้นคือ M32R แต่ตัวเลือกนี้เปลี่ยนเป็น M32RX
สร้างข้อความเตือนเมื่อพบโครงสร้างคู่ขนานที่น่าสงสัย
อย่าสร้างข้อความเตือนเมื่อพบโครงสร้างแบบขนานที่น่าสงสัย
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับ Motorola 68000 series
ย่อการอ้างอิงถึงสัญลักษณ์ที่ไม่ได้กำหนด ให้เหลือเพียงคำเดียวแทนที่จะเป็นสองคำ
ระบุว่าโปรเซสเซอร์ใดในตระกูล 68000 คือเป้าหมาย โดยปกติค่าเริ่มต้นคือ 68020 แต่สามารถเปลี่ยนแปลงได้ในขณะกำหนดค่า
เครื่องเป้าหมายมี (หรือไม่มี) มีตัวประมวลผลร่วมแบบทศนิยม ค่าดีฟอลต์คือใช้ตัวประมวลผลร่วมสำหรับ 68020, 68030 และ cpu32 แม้ว่า 68000 พื้นฐานเข้ากันไม่ได้กับ 68881 แต่สามารถระบุทั้งสองอย่างรวมกันได้ เนื่องจากเป็นไปได้ที่จะทำการจำลองคำสั่งตัวประมวลผลร่วมกับตัวประมวลผลหลัก
เครื่องเป้าหมายมี (หรือไม่มี) ตัวประมวลผลร่วมของหน่วยจัดการหน่วยความจำ ค่าเริ่มต้นคือการถือว่า MMU สำหรับ 68020 ขึ้นไป
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Altera Nios II
แทนที่สาขาที่อยู่นอกช่วงที่ระบุด้วยลำดับ jmp ที่สัมพันธ์กับพีซีเมื่อเป็นไปได้ ลำดับรหัสที่สร้างขึ้นเหมาะสำหรับใช้ในรหัสที่ไม่ขึ้นกับตำแหน่ง แต่มีข้อจำกัดในทางปฏิบัติสำหรับช่วงสาขาที่ขยายเนื่องจากความยาวของลำดับ ตัวเลือกนี้เป็นค่าเริ่มต้น
แทนที่คำสั่งสาขาที่ไม่สามารถระบุได้ว่าอยู่ในช่วงและคำสั่งการโทรทั้งหมดด้วยลำดับ jmp และ callr (ตามลำดับ) ตัวเลือกนี้สร้างการย้ายตำแหน่งแบบสัมบูรณ์กับสัญลักษณ์เป้าหมาย และไม่เหมาะสำหรับรหัสที่ไม่ขึ้นกับตำแหน่ง
อย่าแทนที่สาขาหรือการโทรใดๆ
สร้างผลผลิตระดับบิ๊กเอนด์
สร้างเอาต์พุตแบบ little-endian นี่คือค่าเริ่มต้น
ตัวเลือกนี้ระบุสถาปัตยกรรมเป้าหมาย แอสเซมเบลอร์แสดงข้อความแสดงข้อผิดพลาดหากมีการพยายามรวบรวมคำสั่งซึ่งจะไม่ดำเนินการบนสถาปัตยกรรมเป้าหมาย ชื่อสถาปัตยกรรมต่อไปนี้เป็นที่รู้จัก: r1, r2 ค่าเริ่มต้นคือ r1
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ PRU
สมมติว่า LD จะเพิ่มประสิทธิภาพคำสั่ง LDI32 โดยการตรวจสอบ 16 บิตบนของ นิพจน์ หากเป็นศูนย์ทั้งหมด LD จะย่อคำสั่ง LDI32 ให้เป็น LDI เดียว ในกรณีเช่นนี้ as จะส่งออกการย้ายตำแหน่ง DIFF สำหรับนิพจน์ที่แตกต่างกัน
สมมติว่า LD จะไม่ปรับคำสั่ง LDI32 ให้เหมาะสม ด้วยเหตุนี้ การย้ายตำแหน่ง DIFF จะไม่ถูกปล่อยออกมา
ไม่ต้องเตือนหากชื่อฉลากตรงกับชื่อทะเบียน โดยปกติโปรแกรมเมอร์แอสเซมเบลอร์จะต้องการให้มีการเตือนนี้ คอมไพเลอร์ C อาจต้องการปิดการทำงานนี้
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ MIPS
ตัวเลือกนี้กำหนดขนาดที่ใหญ่ที่สุดของวัตถุที่สามารถอ้างอิงโดยปริยายด้วยรีจิสเตอร์ gp ยอมรับเฉพาะสำหรับเป้าหมายที่ใช้รูปแบบ ECOFF เช่น DECstation ที่ใช้งาน Ultrix ค่าเริ่มต้นคือ 8
สร้างเอาต์พุตรูปแบบ endian ขนาดใหญ่
สร้างเอาต์พุตรูปแบบ endian เล็กน้อย
สร้างรหัสสำหรับระดับสถาปัตยกรรมชุดคำสั่ง MIPS เฉพาะ -mips1 เป็นนามแฝงของ -march=r3000 -mips2 เป็นนามแฝงของ -march=r6000 -mips3 เป็นชื่อแทนของ -march=r4000 และ -mips4 เป็นชื่อแทนของ -march=r8000 -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5, และ -mips64r6 สอดคล้องกับ 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 รีลีส 6 โปรเซสเซอร์ ISA ตามลำดับ
สร้างรหัสสำหรับ MIPS CPU เฉพาะ
กำหนดเวลาและปรับแต่งสำหรับ MIPS CPU โดยเฉพาะ
ทำให้ nops ถูกแทรกหากการอ่านรีจิสเตอร์ปลายทางของคำสั่ง mfhi หรือ mflo เกิดขึ้นในสองคำสั่งต่อไปนี้
ทำให้ nops ถูกแทรกหากคำสั่ง dmult หรือ dmultu ตามด้วยคำสั่งโหลด
อย่าพยายามจัดตารางเวลาคำสั่งก่อนหน้าลงในช่องหน่วงเวลาของคำสั่งสาขาซึ่งวางไว้ที่ส่วนท้ายของลูปสั้นๆ ที่มีหกคำสั่งหรือน้อยกว่า และกำหนดเวลาคำสั่ง nop ที่นั่นแทนเสมอ ข้อบกพร่องของลูปสั้นภายใต้เงื่อนไขบางประการทำให้ลูปทำงานเพียงครั้งเดียวหรือสองครั้ง เนื่องจากข้อบกพร่องของฮาร์ดแวร์ในชิป R5900
ทำให้เอาต์พุตการดีบักแบบแทงไปที่ส่วน .mdebug สไตล์ ECOFF แทนส่วน .stabs ของ ELF มาตรฐาน
ควบคุมการสร้างส่วน .pdr
โดยปกติขนาดรีจิสเตอร์จะอนุมานจาก ISA และ ABI แต่แฟล็กเหล่านี้บังคับให้รีจิสเตอร์บางกลุ่มมีความกว้าง 32 บิตตลอดเวลา -mgp32 ควบคุมขนาดของการลงทะเบียนวัตถุประสงค์ทั่วไป และ -mfp32 ควบคุมขนาดของการลงทะเบียนทศนิยม
โดยปกติขนาดรีจิสเตอร์จะอนุมานจาก ISA และ ABI แต่แฟล็กเหล่านี้บังคับให้รีจิสเตอร์บางกลุ่มมีความกว้าง 64 บิตตลอดเวลา -mgp64 ควบคุมขนาดของการลงทะเบียนวัตถุประสงค์ทั่วไป และ -mfp64 ควบคุมขนาดของการลงทะเบียนทศนิยม
โดยปกติขนาดรีจิสเตอร์จะอนุมานจาก ISA และ ABI แต่การใช้แฟล็กนี้ร่วมกับ -mabi=32 จะเปิดใช้ตัวแปร ABI ซึ่งจะทำงานได้อย่างถูกต้องกับรีจิสเตอร์แบบทศนิยมที่มีความกว้าง 32 หรือ 64 บิต .
เปิดใช้งานการใช้การดำเนินการทศนิยมบนรีจิสเตอร์ความแม่นยำเดียวที่มีเลขคี่ เมื่อรองรับโดย ISA -mfpxx หมายถึง -mno-odd-spreg มิฉะนั้นค่าเริ่มต้นคือ -modd-spreg
สร้างรหัสสำหรับโปรเซสเซอร์ MIPS 16 ซึ่งเทียบเท่ากับการวาง .module mips16 ที่จุดเริ่มต้นของไฟล์แอสเซมบลี -no-mips16 ปิดตัวเลือกนี้
เปิดใช้งานคำสั่ง MIPS16e2 ในโหมด MIPS16 ซึ่งเทียบเท่ากับการวาง .module mips16e2 ที่จุดเริ่มต้นของไฟล์แอสเซมบลี -mno-mips16e2 ปิดตัวเลือกนี้
สร้างรหัสสำหรับโปรเซสเซอร์ microMIPS ซึ่งเทียบเท่ากับการวาง .module micromips ที่จุดเริ่มต้นของไฟล์แอสเซมบลี -mno-micromips ปิดตัวเลือกนี้ ซึ่งเทียบเท่ากับการวาง .module nomicromips ที่จุดเริ่มต้นของไฟล์แอสเซมบลี
เปิดใช้งานส่วนขยาย SmartMIPS ไปยังชุดคำสั่ง MIPS32 ซึ่งเทียบเท่ากับการวาง .module smartmips ที่จุดเริ่มต้นของไฟล์แอสเซมบลี -mno-smartmips ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยายเฉพาะแอปพลิเคชัน MIPS-3D สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง MIPS-3D -no-mips3d ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยายเฉพาะแอปพลิเคชัน MDMX สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง MDMX -no-mdmx ปิดตัวเลือกนี้
สร้างโค้ดสำหรับส่วนขยายเฉพาะแอปพลิเคชัน DSP Release 1 สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง DSP Release 1 -mno-dsp ปิดตัวเลือกนี้
สร้างโค้ดสำหรับส่วนขยายเฉพาะแอปพลิเคชัน DSP Release 2 ตัวเลือกนี้หมายถึง -mdsp สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง DSP Release 2 -mno-dspr2 ปิดตัวเลือกนี้
สร้างโค้ดสำหรับส่วนขยายเฉพาะแอปพลิเคชัน DSP Release 3 ตัวเลือกนี้หมายถึง -mdsp และ -mdspr2 สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง DSP Release 3 -mno-dspr3 ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยายสถาปัตยกรรม MIPS SIMD สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง MSA -mno-msa ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยาย MIPS eXtended Physical Address (XPA) สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง XPA -mno-xpa ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยายเฉพาะแอปพลิเคชัน MT สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง MT -mno-mt ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยายเฉพาะแอปพลิเคชัน MCU สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง MCU -mno-mcu ปิดตัวเลือกนี้
สร้างรหัสสำหรับ MIPS cyclic redundancy check (CRC) Application Specific Extension สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง CRC -mno-crc ปิดตัวเลือกนี้
สร้างรหัสสำหรับส่วนขยายเฉพาะแอปพลิเคชัน Global INValidate (GINV) สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง GINV -mno-ginv ปิดตัวเลือกนี้
สร้างโค้ดสำหรับส่วนขยาย Loongson MultiMedia Extensions Instructions (MMI) Application Specific Extension สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง MMI -mno-loongson-mmi ปิดตัวเลือกนี้
สร้างรหัสสำหรับคำสั่ง Loongson Content Address Memory (CAM) สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง Loongson CAM -mno-loongson-cam ปิดตัวเลือกนี้
สร้างโค้ดสำหรับคำสั่ง Loongson EXTensions (EXT) สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง Loongson EXT -mno-loongson-ext ปิดตัวเลือกนี้
สร้างโค้ดสำหรับคำสั่ง Loongson EXTensions R2 (EXT2) ตัวเลือกนี้หมายถึง -mloongson-ext สิ่งนี้บอกให้แอสเซมเบลอร์ยอมรับคำสั่ง Loongson EXT2 -mno-loongson-ext2 ปิดตัวเลือกนี้
ใช้เฉพาะการเข้ารหัสคำสั่ง 32 บิตเมื่อสร้างรหัสสำหรับโปรเซสเซอร์ microMIPS ตัวเลือกนี้ยับยั้งการใช้คำสั่ง 16 บิตใดๆ ซึ่งเทียบเท่ากับการวาง .set insn32 ที่จุดเริ่มต้นของไฟล์แอสเซมบลี -mno-insn32 ปิดตัวเลือกนี้ ซึ่งเทียบเท่ากับการวาง .set noinsn32 ที่จุดเริ่มต้นของไฟล์แอสเซมบลี โดยค่าเริ่มต้น -mno-insn32 จะถูกเลือกไว้ ทำให้สามารถใช้คำสั่งทั้งหมดได้
ตัวเลือก --no-construct-floats จะปิดใช้งานการสร้างค่าคงที่ทศนิยมความกว้างสองเท่าโดยการโหลดค่าทั้งสองครึ่งลงในการลงทะเบียนทศนิยมความกว้างเดียวสองรายการที่ประกอบกันเป็นการลงทะเบียนความกว้างสองเท่า โดยค่าเริ่มต้น --construct-floats จะถูกเลือกไว้ ทำให้สามารถสร้างค่าคงที่ทศนิยมเหล่านี้ได้
ตัวเลือก --relax-branch เปิดใช้งานการผ่อนคลายของ branch นอกระยะ โดยค่าเริ่มต้น --no-relax-branch จะถูกเลือกไว้ ทำให้กิ่งที่อยู่นอกช่วงเกิดข้อผิดพลาด
ละเว้นการตรวจสอบสาขาสำหรับการเปลี่ยนระหว่างโหมด ISA ที่ไม่ถูกต้อง ความหมายของสาขาไม่มีให้สำหรับสวิตช์โหมด ISA ดังนั้นในกรณีส่วนใหญ่ โหมด ISA ที่สาขาได้รับการเข้ารหัสจะต้องเหมือนกับโหมด ISA ของฉลากเป้าหมายของสาขา ดังนั้น GAS จึงมีการตรวจสอบที่ใช้เพื่อตรวจสอบในชุดประกอบสาขาว่าโหมด ISA สองโหมดตรงกัน -mignore-branch-isa ปิดใช้งานการตรวจสอบเหล่านี้ โดยค่าเริ่มต้น -mno-ignore-branch-isa จะถูกเลือกไว้ ทำให้สาขาที่ไม่ถูกต้องต้องมีการเปลี่ยนระหว่างโหมด ISA ทำให้เกิดข้อผิดพลาด
เลือกระหว่างรูปแบบการเข้ารหัส NaN ของ IEEE 754-2008 (-mnan=2008) หรือแบบดั้งเดิม (-mnan=legacy) หลังเป็นค่าเริ่มต้น
เดิมตัวเลือกนี้ใช้เพื่อสลับระหว่างเอาต์พุต ELF และ ECOFF บนเป้าหมายเช่น IRIX 5 ที่รองรับทั้งสองอย่าง การสนับสนุน MIPS ECOFF ถูกลบออกใน GAS 2.24 ดังนั้นตัวเลือกนี้จึงมีจุดประสงค์เพียงเล็กน้อยเท่านั้น มันถูกเก็บไว้สำหรับความเข้ากันได้ย้อนหลัง ชื่อการกำหนดค่าที่มีอยู่คือ: mipself, mipslelf และ mipsbelf ตอนนี้การเลือก mipself ไม่มีผลใดๆ เนื่องจากเอาต์พุตจะเป็น ELF เสมอ mipslelf และ mipsbelf เลือกเอาต์พุต little- และ big-endian ตามลำดับ แต่ -EL และ -EB เป็น ตัวเลือกที่ต้องการแทน
เป็น ละเว้นตัวเลือกนี้ เป็นที่ยอมรับสำหรับความเข้ากันได้กับเครื่องมือพื้นเมือง
ควบคุมวิธีการจัดการกับการคูณล้นและการหารด้วยศูนย์ --trap หรือ --no-break (ซึ่งเป็นคำพ้องความหมาย) ใช้ข้อยกเว้นของ Trap (และใช้ได้กับ Instruction Set Architecture ระดับ 2 และสูงกว่าเท่านั้น) --break หรือ --no-trap (รวมถึงคำพ้องความหมายและค่าเริ่มต้นด้วย) ใช้ข้อยกเว้นการพัก
เมื่อใช้ตัวเลือกนี้ เป็น จะออกคำเตือนทุกครั้งที่สร้างคำสั่ง nop จากมาโคร
ตัวเลือกต่อไปนี้จะใช้งานได้เมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ LoongArch
สร้างรหัสที่ไม่ขึ้นกับตำแหน่ง
อย่าสร้างรหัสที่ไม่ขึ้นกับตำแหน่ง (ค่าเริ่มต้น)
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับตัวประมวลผล Meta
สร้างรหัสสำหรับ Meta 1.1
สร้างรหัสสำหรับ Meta 1.2
สร้างรหัสสำหรับ Meta 2.1
อนุญาตให้รหัสใช้ฮาร์ดแวร์ FPU ของ Meta 2.1
ดูหน้าข้อมูลสำหรับเอกสารประกอบของตัวเลือกเฉพาะของ MMIX
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ NDS32
เพิ่มประสิทธิภาพ
เพิ่มประสิทธิภาพสำหรับพื้นที่
สร้างเอาต์พุตข้อมูล endian เล็กน้อย
สร้างเอาต์พุตข้อมูล endian เล็กน้อย
สร้าง PIC
ระงับการผ่อนคลาย fp-as-gp สำหรับไฟล์นี้
การเพิ่มประสิทธิภาพสาขาแบบต่อเนื่อง
ระงับการผ่อนคลายทั้งหมดสำหรับไฟล์นี้
ประกอบสถาปัตยกรรม
ประกอบเป็นเส้นฐาน <เส้นฐาน> ซึ่งอาจเป็น v2, v3, v3m
ระบุการกำหนดค่า FPU
ระบุเวอร์ชัน abi
เปิด/ปิด รองรับคำสั่งคูณ
เปิด/ปิดการสนับสนุนคำแนะนำในการแบ่ง
เปิด/ปิดส่วนขยาย 16 บิต
เปิด/ปิดการลงทะเบียน d0/d1
เปิด/ปิดส่วนขยายประสิทธิภาพ
เปิด/ปิดส่วนขยายประสิทธิภาพ 2
เปิด/ปิดส่วนขยายสตริง
เปิด/ปิดตัวเลือกการกำหนดค่ารีจิสเตอร์แบบย่อ (GPR16)
เปิด/ปิดใช้งานส่วนขยาย AUDIO ISA
เปิด/ปิดส่วนขยาย FPU SP
เปิด/ปิดส่วนขยาย FPU DP
เปิด/ปิด FPU ผสม-คูณ-เพิ่มคำแนะนำ
เปิดการสนับสนุนส่วนขยายและคำแนะนำทั้งหมด
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ PowerPC
สร้าง ELF32 หรือ XCOFF32
สร้าง ELF64 หรือ XCOFF64
ตั้งค่า EF_PPC_RELOCATABLE_LIB ในแฟล็ก ELF
สร้างรหัสสำหรับ POWER/2 (RIOS2)
สร้างรหัสสำหรับ POWER (RIOS1)
สร้างรหัสสำหรับ PowerPC 601
สร้างรหัสสำหรับ PowerPC 603/604
สร้างรหัสสำหรับ PowerPC 403/405
สร้างรหัสสำหรับ PowerPC 440 BookE และคำสั่ง 405 บางส่วน
สร้างรหัสสำหรับ PowerPC 464
สร้างรหัสสำหรับ PowerPC 476
สร้างรหัสสำหรับ PowerPC 7400/7410/7450/7455
สร้างรหัสสำหรับ PowerPC 750CL/Gekko/Broadway
สร้างรหัสสำหรับ PowerPC 821/850/860
สร้างรหัสสำหรับ PowerPC 620/625/630
สร้างรหัสสำหรับรุ่น e200, e200z2 พร้อม LSP, e200z4 พร้อม SPE
สร้างรหัสสำหรับตระกูล PowerPC e300
สร้างรหัสสำหรับ Motorola e500 core complex
สร้างโค้ดสำหรับ Freescale e500mc core complex
สร้างโค้ดสำหรับ Freescale e500mc64 core complex
สร้างโค้ดสำหรับ Freescale e5500 core complex
สร้างโค้ดสำหรับ Freescale e6500 core complex
เปิดใช้งานคำแนะนำ LSP (ปิดการใช้งาน SPE และ SPE2)
สร้างรหัสสำหรับคำแนะนำ Motorola SPE (ปิดการใช้งาน LSP.)
สร้างโค้ดสำหรับคำสั่ง Freescale SPE2 (ปิดการใช้งาน LSP.)
สร้างรหัสสำหรับคอมเพล็กซ์หลักของ AppliedMicro Titan
สร้างโค้ดสำหรับ PowerPC 64 รวมถึงบริดจ์อิน
สร้างรหัสสำหรับ BookE 32 บิต
สร้างรหัสสำหรับสถาปัตยกรรม A2
สร้างรหัสสำหรับโปรเซสเซอร์ด้วยคำแนะนำของ AltiVec
สร้างโค้ดสำหรับคำสั่ง Freescale PowerPC VLE
สร้างโค้ดสำหรับโปรเซสเซอร์ด้วยคำสั่ง Vector-Scalar (VSX)
สร้างรหัสสำหรับโปรเซสเซอร์ด้วยคำสั่ง Hardware Transactional Memory
สร้างรหัสสำหรับสถาปัตยกรรม Power4
สร้างรหัสสำหรับสถาปัตยกรรม Power5
สร้างรหัสสำหรับสถาปัตยกรรม Power6
สร้างรหัสสำหรับสถาปัตยกรรม Power7
สร้างรหัสสำหรับสถาปัตยกรรม Power8
สร้างรหัสสำหรับสถาปัตยกรรม Power9
สร้างรหัสสำหรับสถาปัตยกรรม Power10
สร้างรหัสสำหรับสถาปัตยกรรม 'อนาคต'
สร้างโค้ดสำหรับสถาปัตยกรรม Cell Broadband Engine
สร้างรหัสคำแนะนำทั่วไปของ Power/PowerPC
สร้างรหัสสำหรับสถาปัตยกรรมใด ๆ (PWR/PWRX/PPC)
อนุญาตให้ใช้ชื่อสัญลักษณ์สำหรับการลงทะเบียน
ไม่อนุญาตให้ใช้ชื่อสัญลักษณ์สำหรับการลงทะเบียน
รองรับตัวเลือก -mrelocatable ของ GCC
รองรับตัวเลือก -mrelocatable-lib ของ GCC
ตั้งค่าบิต PPC_EMB ในแฟล็ก ELF
สร้างรหัสสำหรับเครื่องเอนเดียนตัวน้อย
สร้างรหัสสำหรับเครื่อง endian ขนาดใหญ่
สร้างรหัสสำหรับ Solaris
อย่าสร้างรหัสสำหรับ Solaris
หากคำสั่งการจัดตำแหน่งแทรก nops มากกว่า จำนวน ให้ใส่สาขาที่จุดเริ่มต้นเพื่อข้ามการดำเนินการของ nops
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ RISC-V
สร้างรหัสที่ไม่ขึ้นกับตำแหน่ง
อย่าสร้างรหัสที่ไม่ขึ้นกับตำแหน่ง (ค่าเริ่มต้น)
เลือกฐาน isa ตามที่ระบุโดย ISA ตัวอย่างเช่น -march=rv32ima หากไม่ได้ตั้งค่าตัวเลือกนี้และแอตทริบิวต์ของสถาปัตยกรรม แอสเซมเบลอร์จะตรวจสอบการตั้งค่าเริ่มต้น --with-arch=ISA
เลือกรุ่นข้อมูลจำเพาะ isa เริ่มต้น หากเวอร์ชันของ ISA ไม่ได้ตั้งค่าตาม -march แอสเซมเบลอร์จะช่วยตั้งค่าเวอร์ชันตามข้อมูลจำเพาะที่เลือกโดยค่าเริ่มต้น หากไม่ได้ตั้งค่าตัวเลือกนี้ แอสเซมเบลอร์จะตรวจสอบการตั้งค่ากำหนดเริ่มต้น --with-isa-spec=ISAspec
เลือกเวอร์ชันข้อมูลจำเพาะที่ได้รับสิทธิพิเศษ เราสามารถตัดสินใจได้ว่า CSR นั้นถูกต้องหรือไม่ตาม Spec ที่เลือก หากไม่ได้ตั้งค่าตัวเลือกนี้และแอตทริบิวต์สิทธิ์ แอสเซมเบลอร์จะตรวจสอบการตั้งค่าเริ่มต้น --with-priv-spec=PRIVspec
เลือก ABI ซึ่งเป็น ilp32 หรือ lp64 หรือเลือกตามด้วย f, d หรือ q เพื่อระบุหลักการเรียกแบบทศนิยมแบบความแม่นยำเดียว ความแม่นยำสองเท่า หรือสี่ความแม่นยำ หรือไม่มีเลยเพื่อระบุแบบแผนการเรียกแบบซอฟต์โฟลต . นอกจากนี้ ilp32 ยังสามารถเลือกที่จะตามด้วย e เพื่อระบุ RVE ABI ซึ่งเป็น soft-float เสมอ
ใช้ประโยชน์จากการผ่อนคลายตัวเชื่อมโยงเพื่อลดจำนวนคำสั่งที่จำเป็นในการทำให้ที่อยู่ของสัญลักษณ์เป็นจริง (ค่าเริ่มต้น)
อย่าผ่อนคลายลิงเกอร์
สร้างเนื้อหาเริ่มต้นสำหรับส่วนแอตทริบิวต์ riscv elf หากไม่ได้ตั้งค่าคำสั่ง .attribute ส่วนนี้ใช้เพื่อบันทึกข้อมูลที่ตัวเชื่อมโยงหรือตัวโหลดรันไทม์จำเป็นต้องตรวจสอบความเข้ากันได้ ข้อมูลนี้รวมถึงสตริง ISA ข้อกำหนดการจัดแนวสแต็ก การเข้าถึงหน่วยความจำที่ไม่ได้จัดแนว และข้อกำหนดสิทธิพิเศษรุ่นหลัก รอง และรุ่นแก้ไข
อย่าสร้างส่วนแอตทริบิวต์ riscv elf เริ่มต้น หากไม่ได้ตั้งค่าคำสั่ง .attribute
เปิดใช้งานการตรวจสอบ CSR สำหรับ CRS ที่ขึ้นกับ ISA และ CSR แบบอ่านอย่างเดียว CSR ที่ขึ้นกับ ISA จะใช้ได้เฉพาะเมื่อมีการตั้งค่า ISA เฉพาะเท่านั้น CSR แบบอ่านอย่างเดียวไม่สามารถเขียนโดยคำสั่ง CSR
อย่าตรวจสอบ CSR
สร้างรหัสสำหรับเครื่องเอนเดียนตัวน้อย
สร้างรหัสสำหรับเครื่อง endian ขนาดใหญ่
ดูหน้าข้อมูลสำหรับเอกสารประกอบของตัวเลือกเฉพาะของ RX
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับตระกูลโปรเซสเซอร์ s390
เลือกขนาดของคำ 31/32 บิตหรือ 64 บิต
เลือกโหมดสถาปัตยกรรม ไม่ว่าจะเป็น Enterprise System Architecture (esa) หรือโหมด z/Architecture (zarch)
ระบุตัวแปรโปรเซสเซอร์ 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 ).
อนุญาตหรือไม่อนุญาตชื่อสัญลักษณ์สำหรับการลงทะเบียน
เตือนเมื่อใดก็ตามที่ระบุตัวดำเนินการสำหรับการลงทะเบียนฐานหรือดัชนี แต่ประเมินเป็นศูนย์
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อกำหนดค่าสำหรับโปรเซสเซอร์ TMS320C6000
เปิดใช้งาน (เท่านั้น) คำแนะนำจากสถาปัตยกรรม ส่วนโค้ง ตามค่าเริ่มต้น คำแนะนำทั้งหมดจะได้รับอนุญาต ยอมรับค่าต่อไปนี้ของ arch: c62x, c64x, c64x+, c67x , c67x+, c674x
ตัวเลือก -mdsbt ทำให้แอสเซมเบลอร์สร้างแอตทริบิวต์ Tag_ABI_DSBT ที่มีค่าเป็น 1 ซึ่งบ่งชี้ว่าโค้ดกำลังใช้การระบุที่อยู่ DSBT ตัวเลือก -mno-dsbt เป็นค่าเริ่มต้น ทำให้แท็กมีค่าเป็น 0 ซึ่งบ่งชี้ว่าโค้ดไม่ได้ใช้การระบุที่อยู่ DSBT ตัวเชื่อมโยงจะส่งคำเตือนหากมีการเชื่อมโยงวัตถุประเภทต่างๆ (DSBT และไม่ใช่ DSBT) เข้าด้วยกัน
ตัวเลือก -mpid= ทำให้แอสเซมเบลอร์สร้างแอตทริบิวต์ Tag_ABI_PID พร้อมค่าที่ระบุรูปแบบของข้อมูลที่ใช้โดยโค้ด -mpid=no ค่าเริ่มต้น ระบุที่อยู่ข้อมูลตามตำแหน่ง -mpid=near ระบุที่อยู่แบบไม่ขึ้นกับตำแหน่งด้วยการเข้าถึง GOT โดยใช้ใกล้ DP addressing และ -mpid=far ระบุที่อยู่ที่ไม่ขึ้นกับตำแหน่งด้วยการเข้าถึง GOT โดยใช้ที่อยู่ DP แบบไกล ตัวเชื่อมโยงจะส่งคำเตือนหากวัตถุที่สร้างขึ้นด้วยการตั้งค่าที่แตกต่างกันของตัวเลือกนี้เชื่อมโยงเข้าด้วยกัน
ตัวเลือก -mpic ทำให้แอสเซมเบลอร์สร้างแอตทริบิวต์ Tag_ABI_PIC ที่มีค่าเป็น 1 ซึ่งบ่งชี้ว่าโค้ดกำลังใช้การระบุรหัสที่ไม่ขึ้นกับตำแหน่ง ซึ่งก็คือ -mno -pic อ็อพชันเริ่มต้น ทำให้แท็กมีค่าเป็น 0 ซึ่งระบุที่อยู่โค้ดที่ขึ้นกับตำแหน่ง ตัวเชื่อมโยงจะส่งคำเตือนหากวัตถุประเภทต่างๆ (ขึ้นอยู่กับตำแหน่งและไม่ขึ้นกับตำแหน่ง) ถูกเชื่อมโยงเข้าด้วยกัน
สร้างรหัสสำหรับ endianness ที่ระบุ ค่าเริ่มต้นคือ little-endian
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ TILE-Gx
เลือกขนาดของคำ 32 บิตหรือ 64 บิต
เลือก endianness ไม่ว่าจะเป็น big-endian (-EB) หรือ little-endian (-EL)
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Visium
ตัวเลือกนี้ระบุสถาปัตยกรรมเป้าหมาย หากมีความพยายามที่จะรวบรวมคำสั่งที่จะไม่ดำเนินการบนสถาปัตยกรรมเป้าหมาย แอสเซมเบลอร์จะแสดงข้อความแสดงข้อผิดพลาด ชื่อต่อไปนี้เป็นที่รู้จัก: mcm24 mcm gr5 gr6
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Xtensa
ควบคุมการบำบัดสระอักษร. ค่าเริ่มต้นคือ --no-text-section-literals ซึ่งจะวางตัวอักษรในส่วนที่แยกจากกันในไฟล์เอาต์พุต สิ่งนี้ทำให้สามารถวางพูลตัวอักษรใน RAM/ROM ข้อมูลได้ ด้วย --text-section-literals ตัวอักษรจะถูกกระจายในส่วนข้อความเพื่อให้ใกล้เคียงกับการอ้างอิงมากที่สุด นี่อาจจำเป็นสำหรับไฟล์แอสเซมบลีขนาดใหญ่ โดยที่ตัวอักษรอาจไม่อยู่ในช่วงของคำสั่ง L32R ในส่วนข้อความ ตัวอักษรถูกจัดกลุ่มเป็นกลุ่มตามคำสั่ง .literal_position หรือก่อนหน้าคำสั่ง ENTRY ตัวเลือกเหล่านี้มีผลกับตัวอักษรที่อ้างอิงผ่านคำสั่ง L32R ที่สัมพันธ์กับพีซีเท่านั้น ตัวอักษรสำหรับคำสั่งโหมดสัมบูรณ์ L32R จะได้รับการจัดการแยกกัน
ควบคุมการบำบัดสระอักษร. ค่าเริ่มต้นคือ --no-auto-litpools ซึ่งหากไม่มี --text-section-literals จะวางตัวอักษรในส่วนที่แยกจากกันในไฟล์เอาต์พุต สิ่งนี้ทำให้สามารถวางพูลตัวอักษรใน RAM/ROM ข้อมูลได้ ด้วย --auto-litpools ตัวอักษรจะถูกกระจายในส่วนข้อความเพื่อให้ใกล้เคียงกับการอ้างอิงมากที่สุด ไม่จำเป็นต้องใช้คำสั่ง .literal_position ที่ชัดเจน นี่อาจจำเป็นสำหรับฟังก์ชันที่มีขนาดใหญ่มาก โดยที่คำสั่ง L32R ที่ท้ายฟังก์ชันอาจไม่สามารถเข้าถึงได้โดยคำสั่ง L32R ตัวเลือกเหล่านี้มีผลกับตัวอักษรที่อ้างอิงผ่านคำสั่ง L32R ที่สัมพันธ์กับพีซีเท่านั้น ตัวอักษรสำหรับคำสั่งโหมดสัมบูรณ์ L32R จะได้รับการจัดการแยกกัน เมื่อใช้ร่วมกับ --text-section-literals --auto-litpools จะมีความสำคัญมากกว่า
ระบุกับแอสเซมเบลอร์ว่าคำสั่ง L32R ใช้การกำหนดแอดเดรสแบบสัมบูรณ์หรือแบบสัมพันธ์กับพีซี หากโปรเซสเซอร์มีตัวเลือกการกำหนดแอดเดรสแบบสัมบูรณ์ ค่าเริ่มต้นคือใช้การเปลี่ยนตำแหน่งแบบสัมบูรณ์ L32R มิฉะนั้น จะใช้เฉพาะการย้ายตำแหน่ง L32R ที่สัมพันธ์กับพีซีเท่านั้น
เปิดหรือปิดการจัดตำแหน่งอัตโนมัติเพื่อลดค่าปรับสาขาโดยมีค่าใช้จ่ายบางอย่างในขนาดโค้ด การเพิ่มประสิทธิภาพนี้เปิดใช้งานตามค่าเริ่มต้น โปรดทราบว่าแอสเซมเบลอร์จะจัดตำแหน่งคำแนะนำเช่น LOOP ที่มีข้อกำหนดการจัดตำแหน่งคงที่เสมอ
เปิดหรือปิดการแปลงคำแนะนำการโทรเพื่ออนุญาตการโทรผ่านที่อยู่ต่างๆ ได้มากขึ้น ควรใช้ตัวเลือกนี้เมื่อเป้าหมายการโทรอาจอยู่นอกระยะ อาจทำให้ทั้งขนาดรหัสและประสิทธิภาพลดลง แต่โดยทั่วไปแล้วตัวเชื่อมโยงสามารถเพิ่มประสิทธิภาพการกำจัดค่าใช้จ่ายที่ไม่จำเป็นเมื่อการโทรสิ้นสุดภายในช่วง ค่าเริ่มต้นคือ --ไม่ต้องโทรนาน
เปิดใช้งานหรือปิดใช้งานการแปลงแอสเซมเบลอร์ทั้งหมดของคำสั่ง Xtensa รวมทั้งการผ่อนคลายและการเพิ่มประสิทธิภาพ ค่าเริ่มต้นคือ --transform; --no-transform ควรใช้ในกรณีที่หายากเท่านั้น เมื่อคำสั่งต้องตรงตามที่ระบุในแหล่งแอสเซมบลี การใช้ --no-transform ทำให้ตัวดำเนินการคำสั่งอยู่นอกช่วงเกิดข้อผิดพลาด
เปลี่ยนชื่อส่วน oldname เป็น newname ตัวเลือกนี้สามารถใช้ได้หลายครั้งเพื่อเปลี่ยนชื่อหลายส่วน
เปิดหรือปิดการแปลงคำสั่งข้ามเพื่ออนุญาตให้ข้ามช่วงที่อยู่มากขึ้น ควรใช้ตัวเลือกนี้เมื่อเป้าหมายกระโดดอาจอยู่นอกระยะ ในกรณีที่ไม่มีการกระโดดดังกล่าว ตัวเลือกนี้จะไม่ส่งผลต่อขนาดหรือประสิทธิภาพของโค้ด ค่าเริ่มต้นคือ -- แทรมโพลีน
เลือกแท็ก ABI ที่เขียนลงในส่วน .xtensa.info แท็ก ABI ระบุ ABI ของรหัสแอสเซมบลี ตัวเชื่อมโยงออกคำเตือนเมื่อพยายามเชื่อมโยงไฟล์วัตถุกับแท็ก ABI ที่ไม่สอดคล้องกัน ABI เริ่มต้นถูกเลือกโดยการกำหนดค่าหลักของ Xtensa
ตัวเลือกต่อไปนี้จะพร้อมใช้งานเมื่อมีการกำหนดค่าสำหรับโปรเซสเซอร์ Z80
@chapter Z80 ขึ้นอยู่กับคุณลักษณะ
ตัวเลือกนี้ระบุตัวประมวลผลเป้าหมาย แอสเซมเบลอร์จะแสดงข้อความแสดงข้อผิดพลาดหากมีการพยายามรวบรวมคำสั่งที่จะไม่ดำเนินการกับโปรเซสเซอร์เป้าหมาย ชื่อโปรเซสเซอร์ต่อไปนี้เป็นที่รู้จัก: 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
ทำเครื่องหมายป้ายกำกับทั้งหมดด้วยคำนำหน้าที่ระบุเป็นท้องถิ่น แต่ป้ายกำกับดังกล่าวสามารถทำเครื่องหมายทั่วโลกอย่างชัดเจนในรหัส ตัวเลือกนี้จะไม่เปลี่ยนคำนำหน้าฉลากท้องถิ่นที่เป็นค่าเริ่มต้น .L แต่เป็นเพียงการเพิ่มคำนำหน้าใหม่เท่านั้น
ยอมรับป้ายกำกับที่ไม่มีเครื่องหมายทวิภาค สัญลักษณ์ทั้งหมดที่บรรทัดเริ่มต้นถือเป็นป้ายกำกับ
ยอมรับรหัสแอสเซมเบลอร์ที่ผลิตโดย SDCC
รูปแบบตัวเลขจุดลอยตัวที่มีความแม่นยำเดียว ค่าเริ่มต้น: ieee754 (32 บิต)
รูปแบบตัวเลขทศนิยมที่มีความแม่นยำสองเท่า ค่าเริ่มต้น: ieee754 (64 บิต)
gcc (1), ld (1), and the Info entries for binutils and ld.
ลิขสิทธิ์ (c) 1991-2023 Free Software Foundation, Inc.
อนุญาตให้คัดลอก แจกจ่าย และ/หรือแก้ไขเอกสารนี้ภายใต้เงื่อนไขของสัญญาอนุญาตเอกสารเสรี GNU รุ่น 1.3 หรือรุ่นที่ใหม่กว่าที่เผยแพร่โดยมูลนิธิซอฟต์แวร์เสรี ไม่มีส่วนที่ไม่แปรเปลี่ยน ไม่มีข้อความปกหน้า และไม่มีข้อความปกหลัง สำเนาของใบอนุญาตจะรวมอยู่ในส่วนที่ให้สิทธิ์อนุญาตเอกสาร GNU ฟรี