as AS - trình biên dịch GNU di động.
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 ...]
Tùy chọn AArch64 mục tiêu:
[-EB|-EL] [-mabi=ABI]
Tùy chọn Alpha mục tiêu:
[-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]
Tùy chọn ARC mục tiêu:
[-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]
Tùy chọn ARM mục tiêu:
[-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]
Các tùy chọn Blackfin mục tiêu:
[-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]
Tùy chọn BPF mục tiêu:
[-EL] [-EB]
Các tùy chọn CRIS mục tiêu:
[--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
Tùy chọn C-SKY mục tiêu:
[-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]
Tùy chọn D10V mục tiêu:
[-O]
Tùy chọn D30V mục tiêu:
[-O|-n|-N]
Nhắm mục tiêu tùy chọn EPIPHANY:
[-mepiphany|-mepiphany16]
Tùy chọn mục tiêu H8/300:
[-h-tick-hex]
Tùy chọn i386 mục tiêu:
[--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]
Tùy chọn IA-64 mục tiêu:
[-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]
Tùy chọn IP2K mục tiêu:
[-mip2022|-mip2022ext]
Tùy chọn M32C mục tiêu:
[-m32c|-m16c] [-relax] [-h-tick-hex]
Tùy chọn mục tiêu M32R:
[--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]
Các tùy chọn M680X0 mục tiêu:
[-l] [-m68000|-m68010|-m68020|...]
Tùy chọn mục tiêu 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]
Tùy chọn MCORE mục tiêu:
[-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]
Tùy chọn Meta mục tiêu:
[-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu]
Nhắm mục tiêu các tùy chọn MICROBLAZE:
Tùy chọn MIPS mục tiêu:
[-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]
Tùy chọn MMIX mục tiêu:
[--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]
Tùy chọn Nios II mục tiêu:
[-relax-all] [-relax-section] [-no-relax] [-EB] [-EL]
Tùy chọn NDS32 mục tiêu:
[-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]
Tùy chọn PDP11 mục tiêu:
[-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]
Các tùy chọn picoJava mục tiêu:
[-mb|-me]
Tùy chọn PowerPC mục tiêu:
[-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]
Các tùy chọn PRU mục tiêu:
[-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
Các tùy chọn RISC-V mục tiêu:
[-fpic|-fPIC|-fno-pic] [-march=ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]
Tùy chọn RL78 mục tiêu:
[-mg10] [-m32bit-doubles|-m64bit-doubles]
Tùy chọn RX mục tiêu:
[-mlittle-endian|-mbig-endian] [-m32bit-doubles|-m64bit-doubles] [-muse-conventional-section-names] [-msmall-data-limit] [-mpid] [-mrelax] [-mint-register=number] [-mgcc-abi|-mrx-abi]
Tùy chọn mục tiêu s390:
[-m31|-m64] [-mesa|-mzarch] [-march=CPU] [-mregnames|-mno-regnames] [-mwarn-areg-zero]
Tùy chọn ĐIỂM SỐ mục tiêu:
[-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]
Tùy chọn SPARC mục tiêu:
[-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]
Các tùy chọn TIC54X mục tiêu:
[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] [-merrors-to-file <filename>|-me <filename>]
Các tùy chọn TIC6X mục tiêu:
[-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]
Tùy chọn TILE-Gx mục tiêu:
[-m32|-m64][-EB][-EL]
Tùy chọn Visium mục tiêu:
[-mtune=arch]
Các tùy chọn Xtensa mục tiêu:
[--[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]
Các tùy chọn Z80 mục tiêu:
[-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]
GNU as thực sự là một họ các trình biên dịch chương trình. Nếu bạn sử dụng (hoặc đã sử dụng) trình biên dịch chương trình GNU trên một kiến trúc, bạn sẽ tìm thấy một môi trường tương đối giống khi bạn sử dụng nó trên một kiến trúc khác. Mỗi phiên bản có nhiều điểm chung với các phiên bản khác, bao gồm các định dạng tệp đối tượng, hầu hết các chỉ thị của trình biên dịch chương trình (thường được gọi là ops giả) và cú pháp của trình biên dịch.
as chủ yếu nhằm lắp ráp đầu ra của trình biên dịch GNU C gcc để trình liên kết ld sử dụng. Tuy nhiên, chúng tôi đã cố gắng làm cho as lắp ráp chính xác mọi thứ mà các bộ lắp ráp khác cho cùng một máy sẽ lắp ráp. Bất kỳ trường hợp ngoại lệ được ghi lại rõ ràng. Điều này không có nghĩa là as luôn sử dụng cùng một cú pháp như một trình hợp dịch mã khác cho cùng một kiến trúc; ví dụ: chúng tôi biết một số phiên bản không tương thích của cú pháp hợp ngữ 680x0.
Mỗi khi bạn chạy as, nó sẽ lắp ráp chính xác một chương trình nguồn. Chương trình nguồn được tạo thành từ một hoặc nhiều tệp. (Đầu vào tiêu chuẩn cũng là một tệp.)
Bạn cung cấp as một dòng lệnh không có hoặc nhiều tên tệp đầu vào. Các tệp đầu vào được đọc (từ tên tệp bên trái sang phải). Đối số dòng lệnh (ở bất kỳ vị trí nào) không có ý nghĩa đặc biệt nào được coi là tên tệp đầu vào.
Nếu bạn không đặt tên tệp as thì nó sẽ cố đọc một tệp đầu vào từ đầu vào tiêu chuẩn as, thường là thiết bị đầu cuối của bạn. Bạn có thể phải nhập ctl-D để báo cho là không còn chương trình nào để lắp ráp.
Sử dụng -- nếu bạn cần đặt tên rõ ràng cho tệp đầu vào tiêu chuẩn trong dòng lệnh của mình.
Nếu nguồn trống, as sẽ tạo một tệp đối tượng trống, nhỏ.
as có thể ghi cảnh báo và thông báo lỗi vào tệp lỗi tiêu chuẩn (thường là thiết bị đầu cuối của bạn). Điều này sẽ không xảy ra khi trình biên dịch chạy as tự động. Các cảnh báo báo cáo một giả định được đưa ra để as có thể tiếp tục lắp ráp một chương trình không hoàn thiện; lỗi báo cáo một vấn đề nghiêm trọng khiến quá trình lắp ráp dừng lại.
Nếu bạn đang gọi as thông qua trình biên dịch GNU C, bạn có thể sử dụng tùy chọn -Wa để chuyển đối số qua trình hợp dịch mã. Các đối số của trình biên dịch mã chương trình phải được phân tách với nhau (và -Wa) bằng dấu phẩy. Ví dụ:
gcc -c -g -O -Wa,-alh,-L file.c
Thao tác này chuyển hai tùy chọn cho trình biên dịch chương trình: -alh (phát ra danh sách thành đầu ra tiêu chuẩn với nguồn hợp ngữ và cấp cao) và -L (giữ lại các ký hiệu cục bộ trong bảng ký hiệu).
Thông thường, bạn không cần sử dụng cơ chế -Wa này, vì nhiều tùy chọn dòng lệnh của trình biên dịch được trình biên dịch tự động chuyển đến trình hợp dịch mã. (Bạn có thể gọi trình điều khiển trình biên dịch GNU bằng tùy chọn -v để xem chính xác những tùy chọn mà nó chuyển cho mỗi lần biên dịch, bao gồm cả trình hợp dịch mã.)
Đọc các tùy chọn dòng lệnh từ tệp. Các tùy chọn đã đọc được chèn vào vị trí của tùy chọn @tệp ban đầu. Nếu tệp không tồn tại hoặc không thể đọc được thì tùy chọn sẽ được xử lý theo nghĩa đen và không bị xóa. Các tùy chọn trong tệp được phân tách bằng khoảng trắng. Một ký tự khoảng trắng có thể được bao gồm trong một tùy chọn bằng cách bao quanh toàn bộ tùy chọn trong dấu ngoặc đơn hoặc dấu ngoặc kép. Bất kỳ ký tự nào (kể cả dấu gạch chéo ngược) đều có thể được bao gồm bằng cách thêm tiền tố vào ký tự được bao gồm bằng dấu gạch chéo ngược. Bản thân tệp có thể chứa các tùy chọn @tệp bổ sung; bất kỳ tùy chọn nào như vậy sẽ được xử lý đệ quy.
Bật danh sách, theo bất kỳ cách nào:
bỏ qua điều kiện sai
bỏ qua các chỉ thị gỡ lỗi
bao gồm thông tin chung, chẳng hạn như phiên bản và các tùy chọn được thông qua
bao gồm nguồn cấp cao
bao gồm lắp ráp
bao gồm mở rộng vĩ mô
bỏ qua xử lý biểu mẫu
bao gồm các biểu tượng
đặt tên của tệp danh sách
Bạn có thể kết hợp các tùy chọn này; ví dụ: sử dụng -aln cho danh sách lắp ráp mà không cần xử lý biểu mẫu. Tùy chọn =file, nếu được sử dụng, phải là tùy chọn cuối cùng. Bản thân -a mặc định là -ahls.
Bắt đầu ở chế độ macro thay thế.
Nén các phần gỡ lỗi DWARF bằng cách sử dụng zlib với SHF_COMPRESSED từ ELF ABI. Tệp đối tượng kết quả có thể không tương thích với các trình liên kết và tiện ích tệp đối tượng cũ hơn. Lưu ý nếu quá trình nén sẽ làm cho một phần nhất định lớn hơn thì phần đó không được nén.
Các tùy chọn này kiểm soát cách nén các phần gỡ lỗi DWARF. --compress-debug-sections=none tương đương với --nocompress-debug-sections. --compress-debug-sections=zlib và --compress-debug-sections=zlib-gabi tương đương với --compress-debug-sections. --compress-debug-sections=zlib-gnu nén các phần gỡ lỗi DWARF bằng định dạng zlib-gnu đã lỗi thời. Các phần gỡ lỗi được đổi tên để bắt đầu bằng .zdebug. --compress-debug-sections=zstd nén các phần gỡ lỗi DWARF bằng zstd. Lưu ý - nếu quá trình nén thực sự làm cho một phần lớn hơn, thì phần đó không được nén cũng như không được đổi tên.
Không nén các phần gỡ lỗi DWARF. Đây thường là mặc định cho tất cả các mục tiêu ngoại trừ x86/x86_64, nhưng tùy chọn thời gian định cấu hình có thể được sử dụng để ghi đè lên điều này.
Cho phép từ chối trong các chương trình phụ trợ cụ thể của mục tiêu, nếu được hỗ trợ. Nếu không thì bỏ qua. Ngay cả khi bị bỏ qua, tùy chọn này vẫn được chấp nhận để tương thích với tập lệnh với các lệnh gọi tới các trình biên dịch chương trình hợp ngữ khác.
Khi tập hợp các tệp trong thư mục cũ, thay vào đó, hãy ghi lại thông tin gỡ lỗi mô tả chúng dưới dạng mới.
Xác định ký hiệu sym là giá trị trước khi tập hợp tệp đầu vào. giá trị phải là hằng số nguyên. Như trong C, 0x ở đầu biểu thị giá trị thập lục phân và 0 ở đầu biểu thị giá trị bát phân. Giá trị của ký hiệu có thể được ghi đè bên trong tệp nguồn thông qua việc sử dụng giả hành .set.
Hiển thị cách trình biên dịch chương trình được cấu hình và sau đó thoát.
Các tùy chọn này kiểm soát liệu trình biên dịch mã ELF có nên tạo các ký hiệu chung với loại STT_COMMON hay không. Giá trị mặc định có thể được kiểm soát bằng tùy chọn định cấu hình --enable-elf-stt-common.
Nếu trình hợp ngữ được cấu hình để hỗ trợ nhiều cấu hình đích khác nhau thì có thể sử dụng tùy chọn này để chọn biểu mẫu mong muốn.
nhanh---bỏ qua khoảng trắng và tiền xử lý nhận xét (giả sử nguồn là đầu ra của trình biên dịch).
Tạo thông tin gỡ lỗi cho từng dòng nguồn của trình biên dịch mã chương trình sử dụng bất kỳ định dạng gỡ lỗi nào được mục tiêu ưa thích. Điều này hiện có nghĩa là STABS, ECOFF hoặc DWARF2. Khi định dạng gỡ lỗi là DWARF thì phần .debug_info và .debug_line chỉ được phát ra khi tệp hợp ngữ không tự tạo.
Tạo thông tin gỡ lỗi cho mỗi dòng trình biên dịch chương trình. Điều này có thể giúp gỡ lỗi mã trình biên dịch chương trình, nếu trình gỡ lỗi có thể xử lý nó.
Tạo thông tin gỡ lỗi các cú đâm cho mỗi dòng trình biên dịch mã chương trình, với các phần mở rộng GNU mà có lẽ chỉ gdb mới có thể xử lý và điều đó có thể khiến các trình gỡ lỗi khác gặp sự cố hoặc từ chối đọc chương trình của bạn. Điều này có thể giúp gỡ lỗi mã trình biên dịch chương trình. Hiện tại phần mở rộng GNU duy nhất là vị trí của thư mục làm việc hiện tại tại thời điểm lắp ráp.
Tạo thông tin gỡ lỗi DWARF2 cho từng dòng trình biên dịch chương trình. Điều này có thể giúp gỡ lỗi mã trình biên dịch chương trình, nếu trình gỡ lỗi có thể xử lý nó. Lưu ý---tùy chọn này chỉ được hỗ trợ bởi một số mục tiêu, không phải tất cả chúng.
Tùy chọn này giống như tùy chọn --gdwarf-2, ngoại trừ việc nó cho phép khả năng tạo thông tin gỡ lỗi bổ sung theo phiên bản 3 của đặc tả DWARF. Lưu ý - bật tùy chọn này không đảm bảo tạo ra bất kỳ thông tin bổ sung nào, lựa chọn làm như vậy là trên cơ sở từng mục tiêu.
Tùy chọn này giống như tùy chọn --gdwarf-2, ngoại trừ việc nó cho phép khả năng tạo thông tin gỡ lỗi bổ sung theo phiên bản 4 của đặc tả DWARF. Lưu ý - bật tùy chọn này không đảm bảo tạo ra bất kỳ thông tin bổ sung nào, lựa chọn làm như vậy là trên cơ sở từng mục tiêu.
Tùy chọn này giống như tùy chọn --gdwarf-2, ngoại trừ việc nó cho phép khả năng tạo thông tin gỡ lỗi bổ sung theo phiên bản 5 của đặc tả DWARF. Lưu ý - bật tùy chọn này không đảm bảo tạo ra bất kỳ thông tin bổ sung nào, lựa chọn làm như vậy là trên cơ sở từng mục tiêu.
Thay vì tạo phần .debug_line, hãy tạo một loạt các phần .debug_line.foo trong đó foo là tên của phần mã tương ứng. Ví dụ: phần mã có tên .text.func sẽ có thông tin về số dòng lùn được đặt trong phần có tên .debug_line.text.func. Nếu phần mã chỉ được gọi là .text thì phần dòng gỡ lỗi sẽ vẫn được gọi là .debug_line mà không có bất kỳ hậu tố nào.
Kiểm soát phiên bản Mục nhập thông tin chung DWARF (CIE) nào được tạo. Khi cờ này không được chỉ định, mặc định là phiên bản 1, mặc dù một số mục tiêu có thể sửa đổi mặc định này. Các giá trị khác có thể có cho phiên bản là 3 hoặc 4.
Các tùy chọn này kiểm soát liệu trình biên dịch mã ELF có nên tạo ghi chú thuộc tính Bản dựng GNU hay không nếu không có ghi chú nào trong nguồn đầu vào. Mặc định có thể được kiểm soát bởi tùy chọn cấu hình --enable-generate-build-notes.
Tạo phần .sframe từ chỉ thị CFI.
Làm ngơ. Được hỗ trợ để tương thích dòng lệnh với các trình biên dịch chương trình hợp ngữ khác.
In bản tóm tắt các tùy chọn dòng lệnh và thoát.
In một bản tóm tắt của tất cả các tùy chọn mục tiêu cụ thể và thoát.
Thêm thư mục dir vào danh sách tìm kiếm các chỉ thị .include.
Đừng cảnh báo về tràn đã ký.
Đưa ra cảnh báo khi các bảng chênh lệch bị thay đổi đối với các chuyển vị dài.
Giữ (trong bảng ký hiệu) các ký hiệu cục bộ. Các ký hiệu này bắt đầu bằng các tiền tố nhãn cục bộ dành riêng cho hệ thống, thường là .L cho các hệ thống ELF hoặc L cho các hệ thống a.out truyền thống.
Đặt chiều rộng tối đa, bằng chữ, của cột dữ liệu đầu ra cho danh sách trình biên dịch mã chương trình thành số.
Đặt chiều rộng tối đa, bằng chữ, của cột dữ liệu đầu ra cho các dòng tiếp theo trong danh sách trình biên dịch mã chương trình thành số.
Đặt chiều rộng tối đa của dòng nguồn đầu vào, như được hiển thị trong danh sách, thành số byte.
Đặt số dòng tối đa được in trong danh sách cho một dòng đầu vào thành số + 1.
Kiểm soát cách trình biên dịch chương trình xử lý các ký tự nhiều byte trong đầu vào. Giá trị mặc định (có thể được khôi phục bằng cách sử dụng đối số allow) là cho phép các ký tự như vậy mà không có khiếu nại. Việc sử dụng đối số warn sẽ làm cho trình hợp dịch mã tạo ra một thông báo cảnh báo bất cứ khi nào gặp phải bất kỳ ký tự nhiều byte nào. Việc sử dụng đối số warn-sym-only sẽ chỉ tạo ra cảnh báo khi một biểu tượng được xác định bằng tên có chứa các ký tự nhiều byte. (Tham chiếu đến các ký hiệu không xác định sẽ không tạo ra cảnh báo).
Dừng trình biên dịch chương trình để đệm các phần cuối của phần đầu ra để căn chỉnh phần đó. Mặc định là đệm các phần, nhưng điều này có thể lãng phí không gian có thể cần thiết cho các mục tiêu có giới hạn bộ nhớ chặt chẽ.
Đặt tên cho đầu ra tệp đối tượng từ as objfile.
Gấp phần dữ liệu vào phần văn bản.
Làm ngơ. Được hỗ trợ để tương thích với các công cụ áp dụng cùng một tùy chọn cho cả trình biên dịch mã và trình liên kết.
Trình tự thay thế danh dự trong tên phần.
Đưa ra lỗi hoặc cảnh báo cho lệnh ELF .size không hợp lệ.
In dung lượng tối đa (tính bằng byte) và tổng thời gian (tính bằng giây) được sử dụng bởi hợp ngữ.
Xóa các ký hiệu tuyệt đối cục bộ khỏi bảng ký hiệu gửi đi.
In phiên bản dưới dạng.
In phiên bản dưới dạng và thoát.
Ngăn chặn các thông báo cảnh báo.
Coi các cảnh báo là lỗi.
Đừng chặn thông báo cảnh báo hoặc coi chúng là lỗi.
Làm ngơ.
Làm ngơ.
Tạo tệp đối tượng ngay cả khi có lỗi.
Tệp đầu vào tiêu chuẩn hoặc tệp nguồn để lắp ráp.
Các tùy chọn sau khả dụng khi as được định cấu hình cho chế độ 64-bit của Kiến trúc ARM (AArch64).
Tùy chọn này chỉ định rằng đầu ra do trình hợp dịch mã tạo ra phải được đánh dấu là được mã hóa cho bộ xử lý big-endian.
Tùy chọn này chỉ định rằng đầu ra do trình hợp dịch mã tạo ra phải được đánh dấu là được mã hóa cho bộ xử lý endian nhỏ.
Chỉ định ABI mà mã nguồn sử dụng. Các đối số được công nhận là: ilp32 và lp64, quyết định tệp đối tượng được tạo ở định dạng ELF32 và ELF64 tương ứng. Giá trị mặc định là lp64.
Tùy chọn này chỉ định bộ xử lý mục tiêu. Trình hợp dịch sẽ đưa ra một thông báo lỗi nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên bộ xử lý đích. Các tên bộ xử lý sau đây được nhận dạng: 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, vul có thể, xgene1 xgene2, cortex-r82, cortex-x1 và cortex-x2.
Tên đặc biệt all có thể được sử dụng để cho phép trình hợp dịch mã chấp nhận các hướng dẫn hợp lệ cho bất kỳ bộ xử lý được hỗ trợ nào, bao gồm tất cả các phần mở rộng tùy chọn. Ngoài tập lệnh cơ bản, trình biên dịch chương trình hợp ngữ có thể được yêu cầu chấp nhận hoặc hạn chế, các cách ghi nhớ mở rộng khác nhau giúp mở rộng bộ xử lý. Nếu một số triển khai của một bộ xử lý cụ thể có thể có tiện ích mở rộng, thì những tiện ích mở rộng đó sẽ tự động được bật. Do đó, thông thường bạn sẽ không phải chỉ định bất kỳ phần mở rộng bổ sung nào.
Tùy chọn này chỉ định kiến trúc đích. Trình hợp dịch sẽ đưa ra một thông báo lỗi nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên kiến trúc đích. Các tên kiến trúc sau được nhận dạng: 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-a, armv9.2-a và armv9.3-a. Nếu cả -mcpu và -march đều được chỉ định, thì trình hợp dịch sẽ sử dụng cài đặt cho -mcpu. Nếu không được chỉ định, trình biên dịch chương trình sẽ mặc định là -mcpu=all. Tùy chọn kiến trúc có thể được mở rộng bằng các tùy chọn tiện ích mở rộng tập lệnh tương tự như tùy chọn -mcpu. Không giống như -mcpu, tiện ích mở rộng không phải lúc nào cũng được bật theo mặc định,
Tùy chọn này cho phép thông báo lỗi chi tiết cho khí AArch64. Tùy chọn này được kích hoạt theo mặc định.
Tùy chọn này vô hiệu hóa các thông báo lỗi dài dòng trong khí AArch64.
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý Alpha.
Tùy chọn này chỉ định bộ xử lý mục tiêu. Nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên bộ xử lý đích, thì trình hợp dịch mã có thể mở rộng lệnh dưới dạng macro hoặc đưa ra thông báo lỗi. Tùy chọn này tương đương với chỉ thị .arch. Các tên bộ xử lý sau được nhận dạng: 21064, 21064a, 21066, 21068, 21164, 21164a, 21164pc, 21264, 21264a, 21264b, ev4, ev5, lca45, ev5, ev56, pca56, ev6, ev67, ev68. Tên đặc biệt all có thể được sử dụng để cho phép trình hợp dịch mã chấp nhận các hướng dẫn hợp lệ cho bất kỳ bộ xử lý Alpha nào. Để hỗ trợ thực tiễn hiện có trong OSF/1 đối với .arch và thực tiễn hiện có trong MILO (bộ tải khởi động ARC của Linux), tên bộ xử lý được đánh số (ví dụ: 21064) cho phép hướng dẫn PALcode dành riêng cho bộ xử lý, trong khi tên điện tử (ví dụ: ev4) thì không.
Bật hoặc tắt tính năng tạo .mdebug đóng gói cho các lệnh đâm và bộ mô tả thủ tục. Mặc định là tự động kích hoạt .mdebug khi lệnh đâm đầu tiên được nhìn thấy.
Tùy chọn này buộc tất cả các lần di chuyển phải được đưa vào tệp đối tượng, thay vì tiết kiệm dung lượng và giải quyết một số lần di chuyển tại thời điểm lắp ráp. Lưu ý rằng tùy chọn này không truyền tất cả số học ký hiệu vào tệp đối tượng, bởi vì không phải tất cả số học ký hiệu đều có thể được biểu diễn. Tuy nhiên, tùy chọn vẫn có thể hữu ích trong các ứng dụng cụ thể.
Cho phép hoặc vô hiệu hóa việc tối ưu hóa các lệnh gọi thủ tục, cả ở thời điểm tập hợp và liên kết. Các tùy chọn này chỉ khả dụng cho các mục tiêu VMS và -replace là tùy chọn mặc định. Xem phần 1.4.1 của Sổ tay Tiện ích Trình liên kết OpenVMS.
Tùy chọn này được sử dụng khi trình biên dịch tạo thông tin gỡ lỗi. Khi gcc đang sử dụng mips-tfile để tạo thông tin gỡ lỗi cho ECOFF, các nhãn cục bộ phải được chuyển qua tệp đối tượng. Nếu không thì tùy chọn này không có tác dụng.
Một ký hiệu chung cục bộ lớn hơn size được đặt trong .bss, trong khi các ký hiệu nhỏ hơn được đặt trong .sbss.
Các tùy chọn này được bỏ qua để tương thích ngược.
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý ARC.
Tùy chọn này chọn biến thể bộ xử lý lõi.
Chọn đầu ra big-endian (-EB) hoặc little-endian (-EL).
Bật hướng dẫn mở rộng Mật độ mã.
Các tùy chọn sau khả dụng khi như được cấu hình cho dòng bộ xử lý ARM.
Chỉ định biến thể bộ xử lý ARM nào là mục tiêu.
Chỉ định biến thể kiến trúc ARM nào được mục tiêu sử dụng.
Chọn kiến trúc Dấu phẩy động nào là mục tiêu.
Chọn ABI dấu chấm động nào đang được sử dụng.
Bật giải mã chỉ lệnh bằng ngón tay cái.
Chọn quy ước gọi thủ tục nào đang được sử dụng.
Chọn đầu ra big-endian (-EB) hoặc little-endian (-EL).
Chỉ định rằng mã đã được tạo có tính đến khả năng tương tác giữa mã Thumb và mã ARM.
Bật chế độ tương thích cú pháp lắp ráp CodeComposer Studio.
Chỉ định rằng mã PIC đã được tạo.
Các tùy chọn sau khả dụng khi được cấu hình cho dòng bộ xử lý Blackfin.
Tùy chọn này chỉ định bộ xử lý mục tiêu. sirevision tùy chọn không được sử dụng trong trình biên dịch mã chương trình. Nó ở đây để GCC có thể dễ dàng chuyển xuống tùy chọn -mcpu= của nó. Trình hợp dịch sẽ đưa ra một thông báo lỗi nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên bộ xử lý đích. Các tên bộ xử lý sau đây được nhận dạng: bf504, bf506, bf512, bf514, bf516, bf518, bf522, bf523, bf524, bf52 5, bf526, bf527, bf531, bf532, bf533, bf534, bf535 (chưa triển khai), bf536, bf537, bf5 38, bf539, bf542, bf542m, bf544, bf544m, bf547, bf547m, bf548, bf548m, bf 549, bf549m, bf561 và bf592.
Lắp ráp cho FDPIC ABI.
Vô hiệu hóa -mfdpic.
Các tùy chọn sau khả dụng khi as được cấu hình cho dòng bộ xử lý BPF nhân Linux.
@chapter Tính năng phụ thuộc BPF
Tùy chọn này chỉ định rằng trình biên dịch mã sẽ phát ra eBPF big-endian.
Tùy chọn này chỉ định rằng trình biên dịch mã sẽ phát ra eBPF little-endian.
Lưu ý rằng nếu không có tùy chọn tuổi thọ nào được chỉ định trong dòng lệnh, thì tuổi thọ máy chủ sẽ được sử dụng. Xem các trang thông tin để biết tài liệu về các tùy chọn dành riêng cho CRIS.
Các tùy chọn sau khả dụng khi được cấu hình cho dòng bộ xử lý C-SKY.
Lắp ráp cho kiến trúc archname. Tùy chọn --help liệt kê các giá trị hợp lệ cho archname.
Lắp ráp cho kiến trúc cpuname. Tùy chọn --help liệt kê các giá trị hợp lệ cho cpuname.
Tạo đầu ra endian nhỏ.
Tạo đầu ra big-endian.
Tạo mã độc lập với vị trí.
Bật/tắt chuyển đổi các lệnh rẽ nhánh ngắn jbf, jbt và jbr thành jmpi. Tùy chọn này chỉ dành cho bộ xử lý V2. Nó bị bỏ qua trên các đích CK801 và CK802, không hỗ trợ lệnh jmpi và được bật theo mặc định cho các bộ xử lý khác.
Chuyển các vị trí R_CKCORE_PCREL_IMM26BY2 cho các hướng dẫn bsr cho trình liên kết. Tùy chọn này chỉ khả dụng cho các mục tiêu C-SKY V2 ELF kim loại trần, nơi nó được bật theo mặc định. Nó không thể được sử dụng trong mã sẽ được liên kết động với các thư viện được chia sẻ.
Bật/tắt chuyển đổi hướng dẫn jbsr sang bsr. Tùy chọn này luôn được bật (và -mno-force2bsr bị bỏ qua) cho các mục tiêu CK801/CK802. Nó cũng luôn được bật khi -mbranch-stub có hiệu lực.
Bật/tắt chuyển đổi hướng dẫn jsri sang bsr. Tùy chọn này được kích hoạt theo mặc định.
Bật/tắt chuyển đổi hướng dẫn lrw thành cặp movih/ori.
Bật/tắt hướng dẫn lrw mở rộng. Tùy chọn này được bật theo mặc định cho bộ xử lý sê-ri CK800.
Bật/tắt vị trí của nhóm chữ sau mỗi chức năng.
Bật/tắt vị trí của nhóm chữ sau các nhánh vô điều kiện. Tùy chọn này được kích hoạt theo mặc định.
Bật/tắt hướng dẫn ngăn xếp ngắt. Tùy chọn này được bật theo mặc định trên bộ xử lý CK801, CK802 và CK802.
Các tùy chọn sau kích hoạt rõ ràng các hướng dẫn tùy chọn nhất định. Các tính năng này cũng được bật hoàn toàn bằng cách sử dụng -mcpu= để chỉ định bộ xử lý hỗ trợ nó.
Kích hoạt hướng dẫn nổi cứng.
Kích hoạt hướng dẫn đa bộ xử lý.
Kích hoạt hướng dẫn đồng xử lý.
Bật hướng dẫn tìm nạp trước bộ đệm.
Bật hướng dẫn bảo mật C-SKY.
Bật hướng dẫn tin cậy C-SKY.
Kích hoạt hướng dẫn DSP.
Kích hoạt hướng dẫn DSP nâng cao.
Kích hoạt hướng dẫn DSP véc tơ.
Các tùy chọn sau khả dụng khi as được định cấu hình cho bộ xử lý Epiphany.
Chỉ định rằng cả lệnh 32 và 16 bit đều được phép. Đây là hành vi mặc định.
Hạn chế các hướng dẫn được phép chỉ với bộ 16 bit.
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý H8/300. @chapter Tính năng phụ thuộc H8/300
Phiên bản Renesas H8/300 của as có một tùy chọn phụ thuộc vào máy:
Hỗ trợ các hằng số hex kiểu H'00 ngoài kiểu 0x00.
Đặt biến thể máy H8300. Các tên máy sau đây được nhận dạng: h8300h, h8300hn, h8300s, h8300sn, h8300sx và h8300sxn.
Các tùy chọn sau khả dụng khi as được định cấu hình cho bộ xử lý i386.
Chọn kích thước từ, 32 bit hoặc 64 bit. --32 ngụ ý kiến trúc Intel i386, trong khi --x32 và --64 ngụ ý kiến trúc AMD x86-64 với kích thước từ 32 bit hoặc 64 bit tương ứng. Các tùy chọn này chỉ khả dụng với định dạng tệp đối tượng ELF và yêu cầu phải bao gồm hỗ trợ BFD cần thiết (trên nền tảng 32 bit, bạn phải thêm --enable-64-bit-bfd để định cấu hình cho phép sử dụng 64 bit và sử dụng x86-64 làm nền tảng đích).
Theo mặc định, x86 GAS thay thế nhiều lệnh nop được sử dụng để căn chỉnh trong các phần mã bằng lệnh nop nhiều byte chẳng hạn như leal 0(%esi,1),%esi. Khóa chuyển này sẽ vô hiệu hóa tính năng tối ưu hóa nếu một byte đơn nop (0x90) được chỉ định rõ ràng là byte điền để căn chỉnh.
Trên các nền tảng có nguồn gốc từ SVR4, ký tự / được coi là ký tự nhận xét, nghĩa là không thể sử dụng ký tự này trong các biểu thức. Tùy chọn --chia biến / thành một ký tự bình thường. Thao tác này không tắt / ở đầu dòng bắt đầu nhận xét hoặc ảnh hưởng đến việc sử dụng # để bắt đầu nhận xét.
Tùy chọn này chỉ định bộ xử lý mục tiêu. Trình hợp dịch sẽ đưa ra một thông báo lỗi nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên bộ xử lý đích. Tên bộ xử lý sau đây được nhận dạng: i8086, i186, i286, i386, i486, i586, i686, pentium, pentiumpro, pentiumii, pentiumiii, pentium4, prescott, nocona, core, core2, corei7, iamcu, k6, k6_2, athlon, opteron, k8, amdfam 10, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, znver4, btver1, btver2, generic32 và generic64. Ngoài tập lệnh cơ bản, trình biên dịch hợp ngữ có thể được yêu cầu chấp nhận các cách ghi nhớ mở rộng khác nhau. Ví dụ: -march=i686+sse4+vmx mở rộng i686 bằng sse4 và vmx.
Các tiện ích mở rộng sau hiện được hỗ trợ: 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, ser ialize, tsxldtrk, kl, widekl, hreset, avx512f, avx512cd, avx512er, avx512pf, avx512vl, avx51 2bw, avx512dq, avx512ifma, avx512vbmi, avx512_4fmaps, avx512_4vnniw, avx512_vpopcntdq, avx512_vbmi2, av x512_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, f1 6c, 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 và padlock.
Lưu ý rằng các từ gợi nhớ tiện ích mở rộng này có thể được đặt trước bằng no để thu hồi chức năng tương ứng (và bất kỳ chức năng phụ thuộc nào). Khi lệnh .arch được sử dụng với -march, thì lệnh .arch sẽ được ưu tiên.
Tùy chọn này chỉ định một bộ xử lý để tối ưu hóa. Khi được sử dụng cùng với tùy chọn -march, chỉ các lệnh của bộ xử lý được chỉ định bởi tùy chọn -march mới được tạo. Các giá trị CPU hợp lệ giống với danh sách bộ xử lý của -march=CPU.
Tùy chọn này chỉ định rằng trình biên dịch mã hóa các lệnh SSE bằng tiền tố VEX.
Tùy chọn này xác định rằng trình biên dịch mã hóa dịch chuyển véc-tơ được căn chỉnh thành dịch chuyển véc-tơ không được căn chỉnh.
Các tùy chọn này kiểm soát xem trình biên dịch chương trình có nên kiểm tra hướng dẫn SSE hay không. -msse-check=none sẽ khiến trình hợp dịch mã không kiểm tra các hướng dẫn SSE, đây là mặc định. -msse-check=cảnh báo sẽ khiến trình hợp dịch đưa ra cảnh báo cho bất kỳ lệnh SSE nào. -msse-check=lỗi sẽ làm cho trình hợp dịch mã đưa ra lỗi cho bất kỳ lệnh SSE nào.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa các lệnh AVX vô hướng. -mavxscalar=128 sẽ mã hóa các lệnh AVX vô hướng với độ dài vectơ 128 bit, là mặc định. -mavxscalar=256 sẽ mã hóa các lệnh AVX vô hướng với độ dài vectơ 256 bit. CẢNH BÁO: Không sử dụng mã này cho mã sản xuất - do lỗi CPU, mã kết quả có thể không hoạt động trên một số mẫu nhất định.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa các lệnh VEX.W-ignored (WIG) VEX. -mvexwig=0 sẽ mã hóa các hướng dẫn WIG VEX bằng vex.w=0, đây là giá trị mặc định. -mvexwig=1 sẽ mã hóa các lệnh WIG EVEX bằng vex.w=1. CẢNH BÁO: Không sử dụng mã này cho mã sản xuất - do lỗi CPU, mã kết quả có thể không hoạt động trên một số kiểu máy nhất định.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa các lệnh EVEX bị bỏ qua độ dài (LIG). -mevexlig=128 sẽ mã hóa các lệnh LIG EVEX với độ dài vectơ 128 bit, là mặc định. -mevexlig=256 và -mevexlig=512 sẽ mã hóa các lệnh LIG EVEX với độ dài vectơ 256 bit và 512 bit tương ứng.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa các lệnh EVEX bị bỏ qua w (WIG). -mevexwig=0 sẽ mã hóa các lệnh WIG EVEX bằng evex.w=0, đây là giá trị mặc định. -mevexwig=1 sẽ mã hóa các lệnh WIG EVEX bằng evex.w=1.
Tùy chọn này chỉ định ghi nhớ hướng dẫn cho các hướng dẫn phù hợp. Các lệnh .att_mnemonic và .intel_mnemonic sẽ được ưu tiên.
Tùy chọn này chỉ định cú pháp hướng dẫn khi xử lý hướng dẫn. Các lệnh .att_syntax và .intel_syntax sẽ được ưu tiên.
Tùy chọn này chỉ định rằng các thanh ghi không yêu cầu tiền tố %. Các lệnh .att_syntax và .intel_syntax sẽ được ưu tiên.
Tùy chọn này buộc trình hợp dịch thêm tiền tố BND vào tất cả các nhánh, ngay cả khi tiền tố đó không được chỉ định rõ ràng trong mã nguồn.
Trên mục tiêu ELF, trình biên dịch chương trình thường tối ưu hóa các di chuyển không phải PLT đối với các mục tiêu nhánh toàn cầu không yếu được xác định với khả năng hiển thị mặc định. Tùy chọn -mshared yêu cầu trình biên dịch mã tạo mã có thể đi vào thư viện dùng chung nơi có thể ưu tiên tất cả các mục tiêu nhánh toàn cầu không yếu với khả năng hiển thị mặc định. Mã kết quả lớn hơn một chút. Tùy chọn này chỉ ảnh hưởng đến việc xử lý các lệnh rẽ nhánh.
Trên mục tiêu PE/COFF, tùy chọn này bắt buộc sử dụng định dạng tệp đối tượng lớn, cho phép nhiều hơn 32768 phần.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa tiền tố khóa. Tùy chọn này nhằm mục đích giải quyết cho các bộ xử lý không thành công trên tiền tố khóa. Tùy chọn này chỉ có thể được sử dụng một cách an toàn với các máy tính một lõi, một luồng -momit-lock-prefix=yes sẽ bỏ qua tất cả các tiền tố khóa. -momit-lock-prefix=no sẽ mã hóa tiền tố khóa như bình thường, đây là tiền tố mặc định.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa lfence, mfence và sfence. -mfence-as-lock-add=yes sẽ mã hóa lfence, mfence và sfence thành lock addl $0x0, (%rsp) ở chế độ 64 bit và lock addl $0x0, (%esp) ở chế độ 32 bit. -mfence-as-lock-add=no sẽ mã hóa lfence, mfence và sfence như bình thường, đây là giá trị mặc định.
Các tùy chọn này kiểm soát xem trình biên dịch chương trình có nên tạo các vị trí thư giãn, R_386_GOT32X, ở chế độ 32 bit hay R_X86_64_GOTPCRELX và R_X86_64_REX_GOTPCRELX, ở chế độ 64 bit. -mrelax-relocations=yes sẽ tạo ra các vị trí thư giãn. -mrelax-relocations=no sẽ không tạo thư giãn di chuyển. Giá trị mặc định có thể được kiểm soát bằng tùy chọn định cấu hình --enable-x86-relax-relocations.
Tùy chọn này kiểm soát cách trình biên dịch mã sắp xếp các nhánh với tiền tố phân đoạn hoặc NOP. NUM phải là lũy thừa của 2. Giá trị này phải bằng 0 hoặc không nhỏ hơn 16. Các nhánh sẽ được căn chỉnh trong ranh giới byte NUM. -malign-branch-boundary=0, là giá trị mặc định, không căn chỉnh các nhánh.
Tùy chọn này chỉ định các loại nhánh cần căn chỉnh. TYPE là sự kết hợp của jcc, sắp xếp các bước nhảy có điều kiện, fused, sắp xếp các bước nhảy có điều kiện hợp nhất, jmp, sắp xếp các bước nhảy vô điều kiện, gọi, sắp xếp các lệnh gọi, ret, sắp xếp các lần ngắt, gián tiếp, sắp xếp các bước nhảy và lệnh gọi gián tiếp. Giá trị mặc định là -malign-branch=jcc+fused+jmp.
Tùy chọn này chỉ định số tiền tố tối đa trên một lệnh để căn chỉnh các nhánh. NUM phải nằm trong khoảng từ 0 đến 5. NUM mặc định là 5.
Tùy chọn này căn chỉnh các bước nhảy có điều kiện, các bước nhảy có điều kiện hợp nhất và các bước nhảy không điều kiện trong ranh giới 32 byte với tối đa 5 tiền tố phân đoạn trên một lệnh. Nó tương đương với -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. Mặc định không căn chỉnh các nhánh.
Các tùy chọn này kiểm soát liệu trình hợp dịch có tạo ra lfence sau các lệnh tải hay không. -mlfence-after-load=yes sẽ tạo ra lfence. -mlfence-after-load=no sẽ không tạo lfence, đây là giá trị mặc định.
Các tùy chọn này kiểm soát liệu trình hợp dịch có nên tạo ra lfence trước các lệnh rẽ nhánh gián tiếp hay không. -mlfence-before-indirect-branch=all sẽ tạo ra lfence trước nhánh gần gián tiếp qua thanh ghi và đưa ra cảnh báo trước nhánh gần gián tiếp qua bộ nhớ. Nó cũng ngầm đặt -mlfence-before-ret=shl khi không có -mlfence-before-ret= rõ ràng. -mlfence-before-indirect-branch=register sẽ tạo ra lfence trước nhánh gián tiếp gần thông qua register. -mlfence-before-indirect-branch=memory sẽ đưa ra cảnh báo trước nhánh gián tiếp gần thông qua bộ nhớ. -mlfence-before-indirect-branch=none sẽ không tạo lfence cũng như không đưa ra cảnh báo, đây là mặc định. Lưu ý rằng lfence sẽ không được tạo trước nhánh gián tiếp gần thông qua thanh ghi -mlfence-after-load=yes vì lfence sẽ được tạo sau khi tải thanh ghi đích của nhánh.
Các tùy chọn này kiểm soát xem trình hợp dịch có tạo ra lfence trước khi ret hay không. -mlfence-before-ret=or sẽ tạo lệnh tạo hoặc hướng dẫn với lfence. -mlfence-before-ret=shl/yes sẽ tạo lệnh shl với lfence. -mlfence-before-ret=not sẽ tạo lệnh not với lfence. -mlfence-before-ret=none sẽ không tạo lfence, đây là giá trị mặc định.
Các tùy chọn này kiểm soát liệu trình biên dịch mã chương trình có tạo ra các ghi chú thuộc tính GNU_PROPERTY_X86_ISA_1_USED và GNU_PROPERTY_X86_FEATURE_2_USED hay không. Có thể kiểm soát mặc định bằng tùy chọn cấu hình --enable-x86-used-note.
Các tùy chọn này kiểm soát cách trình biên dịch mã hóa các lệnh EVEX chỉ dành cho SAE. -mevexrcig=rne sẽ mã hóa các bit RC của lệnh EVEX bằng 00, đây là giá trị mặc định. -mevexrcig=rd, -mevexrcig=ru và -mevexrcig=rz sẽ mã hóa các lệnh EVEX chỉ dành cho SAE với các bit RC lần lượt là 01, 10 và 11.
Tùy chọn này chỉ định rằng trình biên dịch mã sẽ chỉ chấp nhận AMD64 hoặc Intel64 ISA ở chế độ 64-bit. Mặc định là chấp nhận các ISA phổ biến, chỉ dành cho Intel64 và AMD64.
Tối ưu hóa mã hóa hướng dẫn với kích thước hướng dẫn nhỏ hơn. -O và -O1 mã hóa các lệnh tải thanh ghi 64 bit với 64 bit ngay lập tức thành các lệnh tải thanh ghi 32 bit với các lệnh ngay lập tức 31 bit hoặc 32 bit, mã hóa các lệnh xóa thanh ghi 64 bit bằng các lệnh xóa thanh ghi 32 bit, mã hóa các lệnh xóa thanh ghi vectơ 256 bit/512 bit VEX/EVEX với các lệnh xóa thanh ghi VEX 128 bit, mã hóa 128 bit/ Các lệnh tải/lưu trữ thanh ghi vectơ EVEX 256-bit với các lệnh tải/lưu trữ thanh ghi vectơ VEX và mã hóa các lệnh logic số nguyên đóng gói EVEX 128-bit/256-bit với logic số nguyên đóng gói VEX 128-bit/256-bit. -O2 bao gồm tối ưu hóa -O1 cộng với mã hóa hướng dẫn xóa thanh ghi vectơ EVEX 256 bit/512 bit với hướng dẫn xóa thanh ghi vectơ EVEX 128 bit. Ở chế độ 64 bit, các lệnh được mã hóa VEX với toán hạng nguồn giao hoán cũng sẽ hoán đổi toán hạng nguồn nếu điều này cho phép sử dụng dạng tiền tố VEX 2 byte thay vì dạng tiền tố 3 byte. Một số dạng AND cũng như OR với cùng một toán hạng (thanh ghi) được chỉ định hai lần cũng sẽ được đổi thành TEST. -Os bao gồm tối ưu hóa -O2 cộng với mã hóa kiểm tra thanh ghi 16-bit, 32-bit và 64-bit ngay lập tức như kiểm tra thanh ghi 8 bit với ngay lập tức. -O0 tắt tối ưu hóa này.
Các tùy chọn sau khả dụng khi được định cấu hình cho dòng Ubicom IP2K.
Chỉ định rằng các hướng dẫn IP2022 mở rộng được cho phép.
Khôi phục hành vi mặc định, hạn chế các hướng dẫn được phép chỉ đối với các hướng dẫn IP2022 cơ bản.
Các tùy chọn sau khả dụng khi được cấu hình cho bộ xử lý Renesas M32C và M16C.
Lắp ráp hướng dẫn M32C.
Hướng dẫn lắp ráp M16C (mặc định).
Kích hoạt hỗ trợ cho thư giãn thời gian liên kết.
Hỗ trợ các hằng số hex kiểu H'00 ngoài kiểu 0x00.
Các tùy chọn sau khả dụng khi được cấu hình cho sê-ri Renesas M32R (trước đây là Mitsubishi M32R).
Chỉ định bộ xử lý nào trong dòng M32R là mục tiêu. Mặc định thường là M32R, nhưng tùy chọn này thay đổi nó thành M32RX.
Tạo thông báo cảnh báo khi gặp phải các cấu trúc song song có vấn đề.
Không tạo thông báo cảnh báo khi gặp phải các cấu trúc song song có vấn đề.
Các tùy chọn sau khả dụng khi được cấu hình cho dòng Motorola 68000.
Rút ngắn các tham chiếu đến các ký hiệu không xác định thành một từ thay vì hai từ.
Chỉ định bộ xử lý nào trong họ 68000 là mục tiêu. Mặc định thường là 68020, nhưng điều này có thể được thay đổi tại thời điểm cấu hình.
Máy mục tiêu có (hoặc không) có bộ đồng xử lý dấu phẩy động. Mặc định là giả sử một bộ đồng xử lý cho 68020, 68030 và cpu32. Mặc dù 68000 cơ bản không tương thích với 68881, nhưng có thể chỉ định kết hợp cả hai vì có thể thực hiện mô phỏng các lệnh của bộ đồng xử lý với bộ xử lý chính.
Máy mục tiêu có (hoặc không) có bộ đồng xử lý đơn vị quản lý bộ nhớ. Mặc định là giả sử MMU cho 68020 trở lên.
Các tùy chọn sau khả dụng khi được cấu hình cho bộ xử lý Altera Nios II.
Thay thế các nhánh nằm ngoài phạm vi đã xác định bằng các chuỗi jmp tương đối với PC khi có thể. Các chuỗi mã được tạo phù hợp để sử dụng trong mã độc lập với vị trí, nhưng có một giới hạn thực tế đối với phạm vi nhánh mở rộng do độ dài của các chuỗi. Tùy chọn này là mặc định.
Thay thế các lệnh rẽ nhánh không thể xác định nằm trong phạm vi và tất cả các lệnh gọi bằng các chuỗi jmp và callr (tương ứng). Tùy chọn này tạo ra các vị trí tuyệt đối so với các ký hiệu đích và không phù hợp với mã độc lập với vị trí.
Không thay thế bất kỳ chi nhánh hoặc cuộc gọi.
Tạo đầu ra big-endian.
Tạo đầu ra endian nhỏ. Đây là mặc định.
Tùy chọn này chỉ định kiến trúc đích. Trình hợp dịch đưa ra một thông báo lỗi nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên kiến trúc đích. Các tên kiến trúc sau được công nhận: r1, r2. Giá trị mặc định là r1.
Các tùy chọn sau khả dụng khi được cấu hình cho bộ xử lý PRU.
Giả sử rằng LD sẽ tối ưu hóa các lệnh LDI32 bằng cách kiểm tra 16 bit trên của biểu thức. Nếu chúng đều là số 0, thì LD sẽ rút ngắn lệnh LDI32 thành một LDI duy nhất. Trong trường hợp này, as sẽ xuất các vị trí DIFF cho các biểu thức khác.
Giả sử rằng LD sẽ không tối ưu hóa các lệnh LDI32. Do đó, việc di chuyển DIFF sẽ không được phát ra.
Không cảnh báo nếu tên nhãn khớp với tên đăng ký. Thông thường các lập trình viên hợp ngữ sẽ muốn cảnh báo này được phát ra. Trình biên dịch C có thể muốn tắt tính năng này.
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý MIPS.
Tùy chọn này đặt kích thước lớn nhất của một đối tượng có thể được tham chiếu ngầm với thanh ghi gp. Nó chỉ được chấp nhận cho các mục tiêu sử dụng định dạng ECOFF, chẳng hạn như DECstation chạy Ultrix. Giá trị mặc định là 8.
Tạo đầu ra định dạng big endian.
Tạo đầu ra định dạng endian nhỏ.
Tạo mã cho một mức Kiến trúc Tập lệnh MIPS cụ thể. -mips1 là bí danh của -march=r3000, -mips2 là bí danh của -march=r6000, -mips3 là bí danh của -march=r4000 và -mips4 là bí danh của -march=r80 00. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5 và -mips64r6 tương ứng với các bộ xử lý ISA chung 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 và MIPS64 Release 6 ISA.
Tạo mã cho một CPU MIPS cụ thể.
Lên lịch và điều chỉnh cho một CPU MIPS cụ thể.
Nguyên nhân chèn nops nếu việc đọc thanh ghi đích của lệnh mfhi hoặc mflo xảy ra trong hai lệnh sau.
Nguyên nhân chèn nops nếu lệnh dmult hoặc dmultu được theo sau bởi lệnh tải.
Không cố lập lịch trình cho lệnh trước đó vào khe trễ của lệnh nhánh được đặt ở cuối vòng lặp ngắn gồm sáu lệnh hoặc ít hơn và thay vào đó, hãy luôn lập lịch trình cho lệnh nop ở đó. Lỗi vòng lặp ngắn trong một số điều kiện nhất định khiến các vòng lặp chỉ thực hiện một hoặc hai lần do lỗi phần cứng trong chip R5900.
Khiến đầu ra gỡ lỗi kiểu đâm vào phần .mdebug kiểu ECOFF thay vì phần .stab ELF tiêu chuẩn.
Kiểm soát việc tạo các phần .pdr.
Kích thước thanh ghi thường được suy ra từ ISA và ABI, nhưng những cờ này buộc một nhóm thanh ghi nhất định luôn được coi là có độ rộng 32 bit. -mgp32 kiểm soát kích thước của thanh ghi mục đích chung và -mfp32 kiểm soát kích thước của thanh ghi dấu phẩy động.
Kích thước thanh ghi thường được suy ra từ ISA và ABI, nhưng những cờ này buộc một nhóm thanh ghi nhất định luôn được coi là có độ rộng 64 bit. -mgp64 kiểm soát kích thước của thanh ghi mục đích chung và -mfp64 kiểm soát kích thước của thanh ghi dấu phẩy động.
Kích thước thanh ghi thường được suy ra từ ISA và ABI, nhưng việc sử dụng cờ này kết hợp với -mabi=32 sẽ cho phép một biến thể ABI sẽ hoạt động chính xác với các thanh ghi dấu phẩy động rộng 32 hoặc 64 bit.
Cho phép sử dụng các phép toán dấu phẩy động trên các thanh ghi có độ chính xác đơn được đánh số lẻ khi được ISA hỗ trợ. -mfpxx ngụ ý -mno-odd-spreg, nếu không thì giá trị mặc định là -modd-spreg.
Tạo mã cho bộ xử lý MIPS 16. Điều này tương đương với việc đặt .module mips16 ở đầu tập tin hợp ngữ. -no-mips16 tắt tùy chọn này.
Cho phép sử dụng các lệnh MIPS16e2 ở chế độ MIPS16. Điều này tương đương với việc đặt .module mips16e2 ở đầu tập tin hợp ngữ. -mno-mips16e2 tắt tùy chọn này.
Tạo mã cho bộ xử lý microMIPS. Điều này tương đương với việc đặt .module micromips ở đầu tệp hợp ngữ. -mno-micromips tắt tùy chọn này. Điều này tương đương với việc đặt .module nomicromips ở đầu tệp hợp ngữ.
Bật tiện ích mở rộng SmartMIPS cho tập lệnh MIPS32. Điều này tương đương với việc đặt .module smartmips ở đầu tệp hợp ngữ. -mno-smartmips tắt tùy chọn này.
Tạo mã cho Phần mở rộng dành riêng cho ứng dụng MIPS-3D. Điều này yêu cầu trình hợp dịch chấp nhận các hướng dẫn MIPS-3D. -no-mips3d tắt tùy chọn này.
Tạo mã cho Tiện ích mở rộng dành riêng cho ứng dụng MDMX. Điều này báo cho trình biên dịch chương trình chấp nhận các lệnh MDMX. -no-mdmx tắt tùy chọn này.
Tạo mã cho Phần mở rộng dành riêng cho ứng dụng DSP Phiên bản 1. Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn DSP Release 1. -mno-dsp tắt tùy chọn này.
Tạo mã cho Phần mở rộng dành riêng cho ứng dụng DSP Phiên bản 2. Tùy chọn này có nghĩa là -mdsp. Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn DSP Release 2. -mno-dspr2 tắt tùy chọn này.
Tạo mã cho Phần mở rộng dành riêng cho ứng dụng DSP Phiên bản 3. Tùy chọn này ngụ ý -mdsp và -mdspr2. Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn DSP Release 3. -mno-dspr3 tắt tùy chọn này.
Tạo mã cho Phần mở rộng Kiến trúc MIPS SIMD. Điều này báo cho trình biên dịch chương trình chấp nhận các hướng dẫn MSA. -mno-msa tắt tùy chọn này.
Tạo mã cho Phần mở rộng Địa chỉ vật lý eXtends MIPS (XPA). Điều này báo cho trình biên dịch chương trình chấp nhận các hướng dẫn XPA. -mno-xpa tắt tùy chọn này.
Tạo mã cho Tiện ích mở rộng dành riêng cho ứng dụng MT. Điều này báo cho trình biên dịch mã chấp nhận các lệnh MT. -mno-mt tắt tùy chọn này.
Tạo mã cho Tiện ích mở rộng dành riêng cho ứng dụng MCU. Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn của MCU. -mno-mcu tắt tùy chọn này.
Tạo mã cho phần mở rộng dành riêng cho ứng dụng kiểm tra dự phòng theo chu kỳ MIPS (CRC). Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn CRC. -mno-crc tắt tùy chọn này.
Tạo mã cho Tiện ích mở rộng dành riêng cho ứng dụng Global INValidate (GINV). Điều này báo cho trình biên dịch chương trình chấp nhận các hướng dẫn GINV. -mno-ginv tắt tùy chọn này.
Tạo mã cho Tiện ích mở rộng dành riêng cho ứng dụng Hướng dẫn đa phương tiện của Loongson (MMI). Điều này yêu cầu trình hợp dịch chấp nhận các hướng dẫn MMI. -mno-loongson-mmi tắt tùy chọn này.
Tạo mã cho hướng dẫn Bộ nhớ địa chỉ nội dung Loongson (CAM). Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn của Loongson CAM. -mno-loongson-cam tắt tùy chọn này.
Tạo mã cho hướng dẫn Loongson EXTensions (EXT). Điều này báo cho trình biên dịch mã chấp nhận các hướng dẫn Loongson EXT. -mno-loongson-ext tắt tùy chọn này.
Tạo mã cho hướng dẫn Loongson EXTensions R2 (EXT2). Tùy chọn này ngụ ý -mloongson-ext. Điều này báo cho trình hợp dịch chấp nhận các hướng dẫn Loongson EXT2. -mno-loongson-ext2 tắt tùy chọn này.
Chỉ sử dụng mã hóa lệnh 32 bit khi tạo mã cho bộ xử lý microMIPS. Tùy chọn này ngăn cản việc sử dụng bất kỳ hướng dẫn 16-bit nào. Điều này tương đương với việc đặt .set insn32 ở đầu tập tin hợp ngữ. -mno-insn32 tắt tùy chọn này. Điều này tương đương với việc đặt .set noinsn32 ở đầu tập tin hợp ngữ. Theo mặc định, -mno-insn32 được chọn, cho phép sử dụng tất cả các hướng dẫn.
Tùy chọn --no-construct-floats vô hiệu hóa việc xây dựng các hằng số dấu phẩy động có độ rộng gấp đôi bằng cách tải hai nửa giá trị vào hai thanh ghi dấu phẩy động có độ rộng đơn tạo nên thanh ghi có độ rộng gấp đôi. Theo mặc định, --construct-floats được chọn, cho phép xây dựng các hằng số dấu phẩy động này.
Tùy chọn --relax-branch cho phép nới lỏng các nhánh nằm ngoài phạm vi. Theo mặc định, --no-relax-branch được chọn, khiến mọi nhánh nằm ngoài phạm vi đều tạo ra lỗi.
Bỏ qua kiểm tra nhánh đối với các chuyển tiếp không hợp lệ giữa các chế độ ISA. Ngữ nghĩa của các nhánh không cung cấp cho một chuyển đổi chế độ ISA, do đó, trong hầu hết các trường hợp, chế độ ISA mà một nhánh đã được mã hóa phải giống với chế độ ISA của nhãn đích của nhánh. Do đó, GAS đã triển khai các kiểm tra để xác minh trong cụm chi nhánh rằng hai chế độ ISA khớp với nhau. -mignore-branch-isa vô hiệu hóa các kiểm tra này. Theo mặc định, -mno-ignore-branch-isa được chọn, khiến bất kỳ nhánh không hợp lệ nào yêu cầu chuyển đổi giữa các chế độ ISA sinh ra lỗi.
Chọn giữa định dạng mã hóa NaN IEEE 754-2008 (-mnan=2008) hoặc cũ (-mnan=legacy). Cái sau là mặc định.
Tùy chọn này trước đây được sử dụng để chuyển đổi giữa đầu ra ELF và ECOFF trên các mục tiêu như IRIX 5 hỗ trợ cả hai. Hỗ trợ MIPS ECOFF đã bị loại bỏ trong GAS 2.24, vì vậy tùy chọn này hiện phục vụ ít mục đích. Nó được giữ lại để tương thích ngược. Tên cấu hình khả dụng là: mipself, mipslelf và mipsbelf. Việc chọn mipself hiện không có hiệu lực vì đầu ra luôn là ELF. mipslelf và mipsbelf chọn đầu ra small-endian và big-endian tương ứng, nhưng -EL và -EB hiện là các tùy chọn ưu tiên.
as bỏ qua tùy chọn này. Nó được chấp nhận để tương thích với các công cụ bản địa.
Kiểm soát cách xử lý tràn phép nhân và phép chia cho số không. --trap hoặc --no-break (là các từ đồng nghĩa) thực hiện một ngoại lệ bẫy (và chỉ hoạt động đối với Kiến trúc Tập lệnh cấp 2 trở lên); --break hoặc --no-trap (cũng là từ đồng nghĩa và mặc định) lấy ngoại lệ ngắt.
Khi tùy chọn này được sử dụng, as sẽ đưa ra cảnh báo mỗi khi tạo lệnh nop từ macro.
Các tùy chọn sau khả dụng khi as được định cấu hình cho bộ xử lý LoongArch.
Tạo mã độc lập với vị trí
Không tạo mã độc lập với vị trí (mặc định)
Các tùy chọn sau khả dụng khi as được định cấu hình cho bộ xử lý Meta.
Tạo mã cho Meta 1.1.
Tạo mã cho Meta 1.2.
Tạo mã cho Meta 2.1.
Cho phép mã sử dụng phần cứng FPU của Meta 2.1.
Xem các trang thông tin để biết tài liệu về các tùy chọn dành riêng cho MMIX.
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý NDS32.
Tối ưu hóa cho hiệu suất.
Tối ưu hóa cho không gian.
Sản xuất đầu ra dữ liệu endian nhỏ.
Sản xuất đầu ra dữ liệu endian nhỏ.
Tạo PIC.
Loại bỏ thư giãn fp-as-gp cho tệp này.
Tối ưu hóa chi nhánh back-to-back.
Loại bỏ tất cả thư giãn cho tập tin này.
Tập hợp cho kiến trúc
Tập hợp cho đường cơ sở
Chỉ định cấu hình FPU.
Chỉ định phiên bản abi
Bật/Tắt hỗ trợ hướng dẫn nhân.
Bật/Tắt hỗ trợ hướng dẫn Chia.
Bật/Tắt tiện ích mở rộng 16 bit
Bật/Tắt các thanh ghi d0/d1
Bật/Tắt tiện ích mở rộng Hiệu suất
Bật/Tắt tiện ích hiệu suất 2
Bật/Tắt phần mở rộng chuỗi
Bật/Tắt tùy chọn cấu hình Đăng ký Giảm (GPR16)
Bật/Tắt tiện ích mở rộng AUDIO ISA
Bật/Tắt tiện ích mở rộng FPU SP
Bật/Tắt tiện ích mở rộng FPU DP
Hướng dẫn bật/tắt FPU hợp nhất-nhân-thêm
Bật tất cả tiện ích mở rộng và hướng dẫn hỗ trợ
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý PowerPC.
Tạo ELF32 hoặc XCOFF32.
Tạo ELF64 hoặc XCOFF64.
Đặt EF_PPC_RELOCATABLE_LIB trong cờ ELF.
Tạo mã cho POWER/2 (RIOS2).
Tạo mã cho POWER (RIOS1)
Tạo mã cho PowerPC 601.
Tạo mã cho PowerPC 603/604.
Tạo mã cho PowerPC 403/405.
Tạo mã cho PowerPC 440. BookE và một số hướng dẫn 405.
Tạo mã cho PowerPC 464.
Tạo mã cho PowerPC 476.
Tạo code cho PowerPC 7400/7410/7450/7455.
Tạo mã cho PowerPC 750CL/Gekko/Broadway.
Tạo code cho PowerPC 821/850/860.
Tạo code cho PowerPC 620/625/630.
Tạo mã cho các biến thể e200, e200z2 với LSP, e200z4 với SPE.
Tạo mã cho dòng PowerPC e300.
Tạo mã cho tổ hợp lõi Motorola e500.
Tạo mã cho phức hợp lõi Freescale e500mc.
Tạo mã cho phức hợp lõi Freescale e500mc64.
Tạo mã cho tổ hợp lõi Freescale e5500.
Tạo mã cho phức hợp lõi Freescale e6500.
Kích hoạt hướng dẫn LSP. (Vô hiệu hóa SPE và SPE2.)
Tạo mã cho hướng dẫn Motorola SPE. (Vô hiệu hóa LSP.)
Tạo mã cho hướng dẫn Freescale SPE2. (Vô hiệu hóa LSP.)
Tạo mã cho phức hợp lõi AppliedMicro Titan.
Tạo mã cho PowerPC 64, bao gồm cả cài đặt cầu nối.
Tạo mã cho BookE 32-bit.
Tạo mã cho kiến trúc A2.
Tạo mã cho bộ xử lý với hướng dẫn AltiVec.
Tạo mã cho hướng dẫn Freescale PowerPC VLE.
Tạo mã cho bộ xử lý với hướng dẫn Vector-Scalar (VSX).
Tạo mã cho bộ xử lý với hướng dẫn Bộ nhớ giao dịch phần cứng.
Tạo mã cho kiến trúc Power4.
Tạo mã cho kiến trúc Power5.
Tạo mã cho kiến trúc Power6.
Tạo mã cho kiến trúc Power7.
Tạo mã cho kiến trúc Power8.
Tạo mã cho kiến trúc Power9.
Tạo mã cho kiến trúc Power10.
Tạo mã cho kiến trúc 'tương lai'.
Tạo mã cho kiến trúc Cell Broadband Engine.
Tạo mã Power/PowerPC hướng dẫn phổ biến.
Tạo mã cho mọi kiến trúc (PWR/PWRX/PPC).
Cho phép đặt tên tượng trưng cho các thanh ghi.
Không cho phép đặt tên tượng trưng cho các thanh ghi.
Hỗ trợ tùy chọn -mrelocatable của GCC.
Hỗ trợ tùy chọn -mrelocatable-lib của GCC.
Đặt bit PPC_EMB trong cờ ELF.
Tạo mã cho một máy endian nhỏ.
Tạo mã cho máy big endian.
Tạo mã cho Solaris.
Không tạo mã cho Solaris.
Nếu một lệnh căn chỉnh chèn nhiều hơn số lượng nút, hãy đặt một nhánh ở đầu để bỏ qua việc thực hiện các nút.
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý RISC-V.
Tạo mã độc lập với vị trí
Không tạo mã độc lập với vị trí (mặc định)
Chọn isa cơ sở, như được chỉ định bởi ISA. Ví dụ -march=rv32ima. Nếu tùy chọn này và các thuộc tính kiến trúc không được đặt, thì trình biên dịch mã chương trình sẽ kiểm tra cài đặt cấu hình mặc định --with-arch=ISA.
Chọn phiên bản isa spec mặc định. Nếu phiên bản của ISA không được đặt bởi -march, thì trình biên dịch mã chương trình sẽ giúp đặt phiên bản theo thông số kỹ thuật đã chọn mặc định. Nếu tùy chọn này không được đặt, thì trình biên dịch chương trình sẽ kiểm tra cài đặt cấu hình mặc định --with-isa-spec=ISAspec.
Chọn phiên bản đặc quyền. Chúng tôi có thể quyết định xem CSR có hợp lệ hay không theo thông số kỹ thuật đã chọn. Nếu tùy chọn này và các thuộc tính đặc quyền không được đặt, thì trình biên dịch mã chương trình sẽ kiểm tra cài đặt cấu hình mặc định --with-priv-spec=PRIVspec.
Chọn ABI, là ilp32 hoặc lp64, tùy chọn theo sau là f, d hoặc q để biểu thị quy ước gọi dấu phẩy động có độ chính xác đơn, độ chính xác kép hoặc độ chính xác bốn hoặc không có gì để biểu thị quy ước gọi dấu phẩy động mềm. Ngoài ra, ilp32 có thể tùy chọn được theo sau bởi e để biểu thị RVE ABI, luôn ở trạng thái thả nổi mềm.
Tận dụng sự thư giãn của trình liên kết để giảm số lượng hướng dẫn cần thiết để hiện thực hóa các địa chỉ ký hiệu. (mặc định)
Đừng thư giãn liên kết.
Tạo nội dung mặc định cho phần thuộc tính riscv elf nếu chỉ thị .attribute không được đặt. Phần này được sử dụng để ghi lại thông tin mà trình liên kết hoặc trình tải thời gian chạy cần để kiểm tra tính tương thích. Thông tin này bao gồm chuỗi ISA, yêu cầu căn chỉnh ngăn xếp, truy cập bộ nhớ chưa được phân bổ và phiên bản chính, phụ và phiên bản sửa đổi của đặc tả đặc quyền.
Không tạo phần thuộc tính riscv elf mặc định nếu các lệnh .attribute không được đặt.
Bật kiểm tra CSR cho CRS phụ thuộc vào ISA và CSR chỉ đọc. CSR phụ thuộc vào ISA chỉ hợp lệ khi ISA cụ thể được đặt. CSR chỉ đọc không thể được viết bởi các hướng dẫn CSR.
Đừng kiểm tra CSR.
Tạo mã cho một máy endian nhỏ.
Tạo mã cho máy big endian.
Xem các trang thông tin để biết tài liệu về các tùy chọn dành riêng cho RX.
Các tùy chọn sau khả dụng khi được cấu hình cho dòng bộ xử lý s390.
Chọn kích thước từ, 31/32 bit hoặc 64 bit.
Chọn chế độ kiến trúc, Kiến trúc hệ thống doanh nghiệp (esa) hoặc chế độ z/Kiến trúc (zarch).
Chỉ định biến thể bộ xử lý s390 nào là mục tiêu, g5 (hoặc arch3), g6, z900 (hoặc arch5), z990 (hoặc arch6), z9-109, z9-ec (hoặc arch7), z 10 (hoặc arch8), z196 (hoặc arch9), zEC12 (hoặc arch10), z13 (hoặc arch11), z14 (hoặc arch12), z15 (hoặc arch13), hoặc z16 (hoặc arch14).
Cho phép hoặc không cho phép đặt tên tượng trưng cho các thanh ghi.
Cảnh báo bất cứ khi nào toán hạng cho thanh ghi cơ sở hoặc chỉ mục đã được chỉ định nhưng đánh giá bằng 0.
Các tùy chọn sau khả dụng khi như được cấu hình cho bộ xử lý TMS320C6000.
Bật (chỉ) hướng dẫn từ kiến trúc arch. Theo mặc định, tất cả các hướng dẫn đều được phép. Các giá trị sau của arch được chấp nhận: c62x, c64x, c64x+, c67x, c67x+, c674x.
Tùy chọn -mdsbt khiến trình hợp dịch mã tạo thuộc tính Tag_ABI_DSBT với giá trị là 1, cho biết rằng mã đang sử dụng địa chỉ DSBT. Tùy chọn -mno-dsbt, mặc định, làm cho thẻ có giá trị bằng 0, cho biết rằng mã không sử dụng địa chỉ DSBT. Trình liên kết sẽ phát ra cảnh báo nếu các đối tượng thuộc loại khác (DSBT và không phải DSBT) được liên kết với nhau.
Tùy chọn -mpid= làm cho trình biên dịch mã chương trình tạo thuộc tính Tag_ABI_PID với một giá trị cho biết dạng định địa chỉ dữ liệu được mã sử dụng. -mpid=no, mặc định, biểu thị việc định địa chỉ dữ liệu phụ thuộc vào vị trí, -mpid=near biểu thị việc định địa chỉ không phụ thuộc vào vị trí với các truy cập GOT sử dụng địa chỉ DP gần và -mpid=xa biểu thị việc định địa chỉ không phụ thuộc vào vị trí với các truy cập GOT sử dụng địa chỉ DP ở xa. Trình liên kết sẽ phát ra cảnh báo nếu các đối tượng được tạo với các cài đặt khác nhau của tùy chọn này được liên kết với nhau.
Tùy chọn -mpic làm cho trình biên dịch mã chương trình tạo thuộc tính Tag_ABI_PIC có giá trị là 1, cho biết mã đang sử dụng địa chỉ mã không phụ thuộc vào vị trí. Tùy chọn -mno-pic, theo mặc định, khiến thẻ có giá trị 0, cho biết địa chỉ mã phụ thuộc vào vị trí. Trình liên kết sẽ phát ra cảnh báo nếu các đối tượng thuộc loại khác (phụ thuộc vào vị trí và không phụ thuộc vào vị trí) được liên kết với nhau.
Tạo mã cho độ bền được chỉ định. Mặc định là little-endian.
Các tùy chọn sau khả dụng khi as được định cấu hình cho bộ xử lý TILE-Gx.
Chọn kích thước từ, 32 bit hoặc 64 bit.
Chọn độ cuối, big-endian (-EB) hoặc little-endian (-EL).
Tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý Visium.
Tùy chọn này chỉ định kiến trúc đích. Nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên kiến trúc đích, thì trình hợp dịch mã sẽ đưa ra một thông báo lỗi. Các tên sau được nhận dạng: mcm24 mcm gr5 gr6
Các tùy chọn sau khả dụng khi as được cấu hình cho bộ xử lý Xtensa.
Kiểm soát việc xử lý các hồ bơi theo nghĩa đen. Giá trị mặc định là --no-text-section-literals, đặt các chữ cái trong các phần riêng biệt trong tệp đầu ra. Điều này cho phép nhóm chữ được đặt trong RAM/ROM dữ liệu. Với --text-section-literals, các chữ được xen kẽ trong phần văn bản để giữ cho chúng càng gần với tham chiếu của chúng càng tốt. Điều này có thể cần thiết đối với các tệp lắp ráp lớn, nếu không thì các chữ sẽ nằm ngoài phạm vi của hướng dẫn L32R trong phần văn bản. Các chữ được nhóm thành các nhóm theo các chỉ thị .literal_position hoặc các chỉ dẫn ENTRY trước đó. Các tùy chọn này chỉ ảnh hưởng đến các chữ được tham chiếu thông qua các hướng dẫn L32R tương đối với PC; chữ cho các lệnh L32R chế độ tuyệt đối được xử lý riêng.
Kiểm soát việc xử lý các hồ bơi theo nghĩa đen. Giá trị mặc định là --no-auto-litpools, trong trường hợp không có --text-section-literals sẽ đặt các chữ trong các phần riêng biệt trong tệp đầu ra. Điều này cho phép nhóm chữ được đặt trong RAM/ROM dữ liệu. Với --auto-litpools, các chữ được xen kẽ trong phần văn bản để giữ cho chúng gần với tham chiếu của chúng nhất có thể, không cần phải có chỉ thị .literal_position rõ ràng. Điều này có thể cần thiết cho các chức năng rất lớn, trong đó nhóm chữ đơn ở đầu chức năng có thể không truy cập được bằng các lệnh L32R ở cuối. Các tùy chọn này chỉ ảnh hưởng đến các chữ được tham chiếu thông qua các hướng dẫn L32R tương đối với PC; chữ cho các lệnh L32R chế độ tuyệt đối được xử lý riêng. Khi được sử dụng cùng với --text-section-literals, --auto-litpools được ưu tiên.
Cho trình biên dịch mã biết các lệnh L32R sử dụng địa chỉ tương đối hay tuyệt đối với PC. Nếu bộ xử lý bao gồm tùy chọn địa chỉ tuyệt đối, thì mặc định là sử dụng định vị L32R tuyệt đối. Nếu không, chỉ có thể sử dụng các định vị L32R tương đối với PC.
Kích hoạt hoặc vô hiệu hóa căn chỉnh tự động để giảm bớt các hình phạt chi nhánh với một số chi phí trong kích thước mã. Tối ưu hóa này được bật theo mặc định. Lưu ý rằng trình biên dịch mã chương trình sẽ luôn căn chỉnh các hướng dẫn như LOOP có các yêu cầu căn chỉnh cố định.
Bật hoặc tắt chuyển đổi hướng dẫn cuộc gọi để cho phép cuộc gọi qua nhiều địa chỉ hơn. Tùy chọn này nên được sử dụng khi mục tiêu cuộc gọi có khả năng nằm ngoài phạm vi. Nó có thể làm giảm cả kích thước và hiệu suất của mã, nhưng trình liên kết nói chung có thể tối ưu hóa loại bỏ chi phí không cần thiết khi cuộc gọi kết thúc trong phạm vi. Giá trị mặc định là --no-longcalls.
Kích hoạt hoặc vô hiệu hóa tất cả các chuyển đổi trình biên dịch chương trình của các hướng dẫn Xtensa, bao gồm cả thư giãn và tối ưu hóa. Giá trị mặc định là --transform; --no-transform chỉ nên được sử dụng trong một số ít trường hợp khi hướng dẫn phải chính xác như được chỉ định trong nguồn lắp ráp. Việc sử dụng --no-transform khiến toán hạng lệnh nằm ngoài phạm vi bị lỗi.
Đổi tên phần tên cũ thành tên mới. Tùy chọn này có thể được sử dụng nhiều lần để đổi tên nhiều phần.
Bật hoặc tắt chuyển đổi lệnh nhảy để cho phép nhảy qua nhiều địa chỉ hơn. Tùy chọn này nên được sử dụng khi các mục tiêu nhảy có khả năng nằm ngoài phạm vi. Trong trường hợp không có các bước nhảy như vậy, tùy chọn này không ảnh hưởng đến kích thước mã hoặc hiệu suất. Mặc định là --trampolines.
Chọn thẻ ABI được ghi vào phần .xtensa.info. Thẻ ABI cho biết ABI của mã lắp ráp. Một cảnh báo được đưa ra bởi trình liên kết khi cố gắng liên kết các tệp đối tượng với các thẻ ABI không nhất quán. ABI mặc định được chọn bởi cấu hình lõi Xtensa.
Các tùy chọn sau khả dụng khi được cấu hình cho bộ xử lý Z80.
@chapter Các tính năng phụ thuộc của Z80
Tùy chọn này chỉ định bộ xử lý mục tiêu. Trình hợp dịch sẽ đưa ra một thông báo lỗi nếu một nỗ lực được thực hiện để lắp ráp một lệnh sẽ không thực thi trên bộ xử lý đích. Các tên bộ xử lý sau được nhận dạng: z80, z180, ez80, gbz80, z80n, r800. Ngoài tập lệnh cơ bản, trình biên dịch hợp ngữ có thể được yêu cầu chấp nhận một số cách ghi nhớ mở rộng. Ví dụ: -march=z180+sli+infc mở rộng z180 với các hướng dẫn SLI và IN F,(C) . Các phần mở rộng sau hiện được hỗ trợ: full (tất cả các hướng dẫn đã biết), adl (chế độ CPU ADL theo mặc định, chỉ dành cho eZ80), sli (hướng dẫn được gọi là SLI, SLL hoặc SL1), xyhl (các lệnh có một nửa thanh ghi chỉ mục: IXL , IXH, IYL, IYH), xdcb (các lệnh như RotOp (II +d),R và BitOp n,(II+d),R), infc (lệnh IN F,(C) hoặc IN (C)), outc0 (lệnh OUT (C),0). Lưu ý rằng thay vì mở rộng tập lệnh cơ bản, thuật nhớ mở rộng bắt đầu bằng - thu hồi chức năng tương ứng: -march=z80-full+xyhl trước tiên xóa tất cả các phần mở rộng mặc định và thêm chỉ hỗ trợ cho các thanh ghi chỉ mục một nửa. Nếu tùy chọn này không được chỉ định thì -march=z80+xyhl+infc được giả định.
Đánh dấu tất cả các nhãn có tiền tố được chỉ định là cục bộ. Nhưng nhãn như vậy có thể được đánh dấu toàn cầu một cách rõ ràng trong mã. Tùy chọn này không thay đổi tiền tố nhãn cục bộ mặc định .L, nó chỉ thêm tiền tố mới.
Chấp nhận nhãn không có dấu hai chấm. Tất cả các ký hiệu ở đầu dòng được coi là nhãn.
Chấp nhận mã trình biên dịch mã do SDCC sản xuất.
Định dạng số dấu phẩy động chính xác đơn. Mặc định: ieee754 (32 bit).
Định dạng số dấu phẩy động chính xác kép. Mặc định: ieee754 (64bit).
gcc (1), ld (1), and the Info entries for binutils and ld.
Bản quyền (c) 1991-2023 Tổ chức Phần mềm Tự do, Inc.
Quyền được cấp để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo các điều khoản của Giấy phép Tài liệu Tự do GNU, Phiên bản 1.3 hoặc bất kỳ phiên bản nào mới hơn do Tổ chức Phần mềm Tự do xuất bản; không có Phần Bất biến, không có Văn bản Bìa trước và không có Văn bản Bìa sau. Một bản sao của giấy phép được bao gồm trong phần có tiêu đề Giấy phép Tài liệu Miễn phí GNU.