Руководства по командной строке

Man » Онлайн-справочник по as - подробная онлайн-документация для страницы руководства as

🌍
AS - переносимый GNU-ассемблер.

СИНТАКСИС

as [-a[cdghilns][=file]]
[--alternate]
[--compress-debug-sections] [--nocompress-debug-sections]
[-D]
[--dump-config]
[--debug-prefix-map old=new]
[--defsym sym=val]
[--elf-stt-common=[no|yes]]
[--emulation=name]
[-f]
[-g] [--gstabs] [--gstabs+]
[--gdwarf-<N>] [--gdwarf-sections]
[--gdwarf-cie-version=VERSION]
[--generate-missing-build-notes=[no|yes]]
[--gsframe] [--gsframe=[no|yes]]
[--hash-size=N]
[--help] [--target-help]
[--info] [--no-info]
[-I dir]
[-J]
[-K]
[--keep-locals]
[-L]
[--listing-lhs-width=NUM]
[--listing-lhs-width2=NUM]
[--listing-rhs-width=NUM]
[--listing-cont-lines=NUM]
[--multibyte-handling=[allow|warn|warn-sym-only]]
[--no-pad-sections]
[-o objfile] [-R]
[--scfi=experimental]
[--sectname-subst]
[--size-check=[error|warning]]
[--statistics]
[-v] [--verbose]
[-version] [--version]
[-W] [--no-warn] [--warn] [--fatal-warnings]
[-w] [-x]
[-Z] [@FILE]
[target-options]
[--|files ...]

ЦЕЛЕВАЯ ПЛАТФОРМА

Опции для AArch64: [-EB|-EL] [-mabi=ABI]

Опции для Alpha: [-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]

Опции для ARC: [-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]

Опции для ARM: [-mcpu=processor[+extension...]] [-march=architecture[+extension...]] [-mfpu=floating-point-format] [-mfloat-abi=abi] [-meabi=ver] [-mthumb] [-EB|-EL] [-mapcs-32|-mapcs-26|-mapcs-float| -mapcs-reentrant] [-mthumb-interwork] [-k]

Опции для Blackfin: [-mcpu=processor[-sirevision]] [-mfdpic] [-mno-fdpic] [-mnopic]

Опции для BPF: [-EL] [-EB]

Опции для CRIS: [--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]

Опции для C-SKY: [-march=arch] [-mcpu=cpu] [-EL] [-mlittle-endian] [-EB] [-mbig-endian] [-fpic] [-pic] [-mljump] [-mno-ljump] [-force2bsr] [-mforce2bsr] [-no-force2bsr] [-mno-force2bsr] [-jsri2bsr] [-mjsri2bsr] [-no-jsri2bsr ] [-mno-jsri2bsr] [-mnolrw ] [-mno-lrw] [-melrw] [-mno-elrw] [-mlaf ] [-mliterals-after-func] [-mno-laf] [-mno-literals-after-func] [-mlabr] [-mliterals-after-br] [-mno-labr] [-mnoliterals-after-br] [-mistack] [-mno-istack] [-mhard-float] [-mmp] [-mcp] [-mcache] [-msecurity] [-mtrust] [-mdsp] [-medsp] [-mvdsp]

Опции для D10V: [-O]

Опции для D30V: [-O|-n|-N]

Опции для EPIPHANY: [-mepiphany|-mepiphany16]

Опции для H8/300: [-h-tick-hex]


Опции для целевой платформы i386: [--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]

Опции для целевой платформы IA-64: [-mconstant-gp|-mauto-pic] [-milp32|-milp64|-mlp64|-mp64] [-mle|mbe] [-mtune=itanium1|-mtune=itanium2] [-munwind-check=warning|-munwind-check=error] [-mhint.b=ok|-mhint.b=warning|-mhint.b=error] [-x|-xexplicit] [-xauto] [-xdebug]

Опции для целевой платформы IP2K: [-mip2022|-mip2022ext]

Опции для целевой платформы M32C: [-m32c|-m16c] [-relax] [-h-tick-hex]

Опции для целевой платформы M32R: [--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]

Опции для целевой платформы M680X0: [-l] [-m68000|-m68010|-m68020|...]

Опции для целевой платформы M68HC11: [-m68hc11|-m68hc12|-m68hcs12|-mm9s12x|-mm9s12xg] [-mshort|-mlong] [-mshort-double|-mlong-double] [--force-long-branches] [--short-branches] [--strict-direct-mode] [--print-insn-syntax] [--print-opcodes] [--generate-example]

Опции для целевой платформы MCORE: [-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]

Опции для целевой платформы Meta: [-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] Опции для целевой платформы MICROBLAZE: [-mlittle-endian] [-mbig-endian]

Опции для целевой платформы MIPS: [-nocpp] [-EL] [-EB] [-O[уровень оптимизации]] [-g[уровень отладки]] [-G число] [-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] [-mmicromips] [-mno-micromips] [-msmartmips] [-mno-smartmips] [-mips3d] [-no-mips3d] [-mdmx] [-no-mdmx] [-mdsp] [-mno-dsp] [-mdspr2] [-mno-dspr2] [-mdspr3] [-mno-dspr3] [-mmsa] [-mno-msa] [-mxpa] [-mno-xpa] [-mmt] [-mno-mt] [-mmcu] [-mno-mcu] [-mcrc] [-mno-crc] [-mginv] [-mno-ginv] [-mloongson-mmi] [-mno-loongson-mmi] [-mloongson-cam] [-mno-loongson-cam] [-mloongson-ext] [-mno-loongson-ext] [-mloongson-ext2] [-mno-loongson-ext2] [-minsn32] [-mno-insn32] [-mfix7000] [-mno-fix7000] [-mfix-rm7000] [-mno-fix-rm7000] [-mfix-vr4120] [-mno-fix-vr4120] [-mfix-vr4130] [-mno-fix-vr4130] [-mfix-r5900] [-mno-fix-r5900] [-mdebug] [-no-mdebug] [-mpdr] [-mno-pdr]

Опции для целевой платформы MMIX: [--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]

Опции для целевой платформы NDS32: [-EL] [-EB] [-O] [-Os] [-mcpu=cpu] [-misa=isa] [-mabi=abi] [-mall-ext] [-m[no-]16-bit] [-m[no-]perf-ext] [-m[no-]perf2-ext] [-m[no-]string-ext] [-m[no-]dsp-ext] [-m[no-]mac] [-m[no-]div] [-m[no-]audio-isa-ext] [-m[no-]fpu-sp-ext] [-m[no-]fpu-dp-ext] [-m[no-]fpu-fma] [-mfpu-freg=FREG] [-mreduced-regs] [-mfull-regs] [-m[no-]dx-regs] [-mpic] [-mno-relax] [-mb2bb]

Опции для целевой платформы PDP11: [-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]

Целевые параметры picoJava: [-mb|-me]

Целевые параметры PowerPC: [-a32|-a64] [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|-m403|-m405| -m440|-m464|-m476|-m7400|-m7410|-m7450|-m7455|-m750cl|-mgekko| -mbroadway|-mppc64|-m620|-me500|-e500x2|-me500mc|-me500mc64|-me5500| -me6500|-mppc64bridge|-mbooke|-mpower4|-mpwr4|-mpower5|-mpwr5|-mpwr5x| -mpower6|-mpwr6|-mpower7|-mpwr7|-mpower8|-mpwr8|-mpower9|-mpwr9-ma2| -mcell|-mspe|-mspe2|-mtitan|-me300|-mcom] [-many] [-maltivec|-mvsx|-mhtm|-mvle] [-mregnames|-mno-regnames] [-mrelocatable|-mrelocatable-lib|-K PIC] [-memb] [-mlittle|-mlittle-endian|-le|-mbig|-mbig-endian|-be] [-nops=count]

Целевые параметры PRU: [-link-relax] [-mnolink-relax] [-mno-warn-regname-label]

Целевые параметры RISC-V: [-fpic|-fPIC|-fno-pic] [-march=ISA|Profiles|Profiles_ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]

Целевые параметры RL78: [-mg10] [-m32bit-doubles|-m64bit-doubles]

Целевые параметры RX: [-mlittle-endian|-mbig-endian] [-m32bit-doubles|-m64bit-doubles] [-muse-conventional-section-names] [-msmall-data-limit] [-mpid] [-mrelax] [-mint-register=number] [-mgcc-abi|-mrx-abi]

Целевые параметры s390: [-m31|-m64] [-mesa|-mzarch] [-march=CPU] [-mregnames|-mno-regnames] [-mwarn-areg-zero] [-mwarn-regtype-mismatch=strict -mwarn-regtype-mismatch=relaxed -mwarn-regtype-mismatch=no -mno-warn-regtype-mismatch]

Целевые параметры SCORE: [-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]

Целевые параметры SPARC: [-Av6|-Av7|-Av8|-Aleon|-Asparclet|-Asparclite -Av8plus|-Av8plusa|-Av8plusb|-Av8plusc|-Av8plusd -Av8plusv|-Av8plusm|-Av9|-Av9a|-Av9b|-Av9c -Av9d|-Av9e|-Av9v|-Av9m|-Asparc|-Asparcvis -Asparcvis2|-Asparcfmaf|-Asparcima|-Asparcvis3 -Asparcvisr|-Asparc5] [-xarch=v8plus|-xarch=v8plusa]|-xarch=v8plusb|-xarch=v8plusc -xarch=v8plusd|-xarch=v8plusv|-xarch=v8plusm|-xarch=v9 -xarch=v9a|-xarch=v9b|-xarch=v9c|-xarch=v9d|-xarch=v9e -xarch=v9v|-xarch=v9m|-xarch=sparc|-xarch=sparcvis -xarch=sparcvis2|-xarch=sparcfmaf|-xarch=sparcima -xarch=sparcvis3|-xarch=sparcvisr|-xarch=sparc5 -bump] [-32|-64] [--enforce-aligned-data][--dcti-couples-detect]

Целевые параметры TIC54X: [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] [-merrors-to-file |-me ]

Целевые параметры 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 as — это, по сути, семейство ассемблеров. Если вы использовали (или использовали в прошлом) GNU-ассемблер для какой-либо архитектуры, вы должны обнаружить довольно схожую среду при его использовании для другой архитектуры. Каждая версия имеет много общего с другими, включая форматы объектных файлов, большинство директив ассемблера (часто называемых псевдо-операциями) и синтаксис ассемблера.

as предназначен в первую очередь для ассемблирования выходных данных компилятора GNU C «gcc» для использования связующим редактором «ld». Тем не менее, мы старались, чтобы as правильно ассемблировал все, что ассемблируют другие ассемблеры для той же машины. Любые исключения явно документированы. Это не означает, что as всегда использует тот же синтаксис, что и другой ассемблер для одной и той же архитектуры; например, нам известно несколько несовместимых версий синтаксиса ассемблера 680x0.

При каждом запуске as ассемблирует ровно одну исходную программу. Исходная программа состоит из одного или нескольких файлов. (Стандартный ввод также является файлом.)

Вы передаете as командную строку, содержащую ноль или более имен входных файлов. Входные файлы считываются слева направо. Аргумент командной строки (в любой позиции), который не имеет специального значения, интерпретируется как имя входного файла.

Если вы не указываете as никаких имен файлов, он пытается прочитать один входной файл из стандартного ввода, который обычно представляет собой ваш терминал. Возможно, вам придется нажать Ctrl+D, чтобы сообщить as, что больше нет программы для ассемблирования.

Используйте --, если вам нужно явно указать имя файла стандартного ввода в вашей командной строке.

Если исходный код пуст, as создает небольшой пустой объектный файл.

as может записывать предупреждения и сообщения об ошибках в стандартный файл ошибок (обычно в ваш терминал). Это не должно происходить, когда компилятор автоматически запускает as. Предупреждения сообщают об предположении, сделанном для того, чтобы as мог продолжить ассемблирование ошибочной программы; ошибки сообщают о серьезной проблеме, которая останавливает ассемблирование.

Если вы вызываете as через GNU C-компилятор, вы можете использовать опцию -Wa, чтобы передать аргументы ассемблеру. Аргументы ассемблера должны быть разделены запятыми. Например:

gcc -c -g -O -Wa,-alh,-L file.c

Это передает две опции ассемблеру: -alh (выводит листинг в стандартный вывод с высокоуровневым и ассемблерным исходным кодом) и -L (сохраняет локальные символы в таблице символов).

Обычно вам не нужно использовать этот механизм -Wa, поскольку многие параметры командной строки компилятора автоматически передаются ассемблеру компилятором. (Вы можете вызвать драйвер GNU-компилятора с опцией -v, чтобы точно увидеть, какие параметры он передает каждому этапу компиляции, включая ассемблер.)

ОПЦИИ

@file

Считывает параметры командной строки из файла. Считанные параметры вставляются на место исходного параметра @file. Если файл не существует или не может быть прочитан, параметр будет интерпретироваться буквально и не удаляться.

Параметры в файле разделены пробелами. Символ пробела можно включить в параметр, заключив весь параметр в одинарные или двойные кавычки. Любой символ (включая обратную косую черту) можно включить, добавив перед ним обратную косую черту. Файл сам может содержать дополнительные параметры @file; любые такие параметры будут обрабатываться рекурсивно.


-a[cdghilmns]

Включить вывод различных видов списков:

-ac опустить условные переходы, возвращающие ложные значения

-ad опустить директивы отладки

-ag включить общую информацию, такую как версия и переданные опции

-ah включить высокоуровневый исходный код

-al включить ассемблерный код

-ali
включить ассемблерный код с GINSN

-am включить макрорасширения

-an опустить обработку форм

-as включить символы

=file
указать имя файла списка

Вы можете комбинировать эти опции; например, используйте -aln для создания списка ассемблера без обработки форм. Опция =file, если используется, должна быть последней. Сама по себе, -a по умолчанию эквивалентна -ahls.

--alternate

Начать работу в альтернальном режиме макросов.

--compress-debug-sections

Сжать разделы отладки DWARF, используя zlib с SHF_COMPRESSED из ABI ELF. Полученный объектный файл может быть несовместим со старыми компоновщиками и утилитами объектных файлов. Обратите внимание, что если сжатие приведет к увеличению размера данного раздела, то он не будет сжат.

--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd

Эти опции управляют тем, как сжимаются разделы отладки DWARF. --compress-debug-sections=none эквивалентна --nocompress-debug-sections. --compress-debug-sections=zlib и --compress-debug-sections=zlib-gabi эквивалентны --compress-debug-sections. --compress-debug-sections=zlib-gnu сжимает разделы отладки DWARF, используя устаревший формат zlib-gnu. Разделы отладки переименовываются, чтобы начинаться с .zdebug. --compress-debug-sections=zstd сжимает разделы отладки DWARF, используя zstd. Обратите внимание, что если сжатие фактически приведет к увеличению размера раздела, то он не будет сжат и переименован.

--nocompress-debug-sections

Не сжимать разделы отладки DWARF. Обычно это значение по умолчанию для всех целей, кроме x86/x86_64, но опцию времени настройки можно использовать для ее изменения.

-D Включить отладку в целевых бэкендах, если это поддерживается. В противном случае игнорируется. Даже если она игнорируется, эта опция принимается для обеспечения совместимости сценариев с вызовами других ассемблеров.

--debug-prefix-map old=new

При сборке файлов в каталоге old, записывать информацию об отладке, как если бы они находились в каталоге new.

--defsym sym=value

Определить символ sym как значение перед сборкой входного файла. Значение должно быть целочисленной константой. Как и в C, начальный 0x указывает на шестнадцатеричное значение, а начальный 0 указывает на восьмеричное значение. Значение символа может быть переопределено внутри исходного файла с помощью псевдоператора ".set".

--dump-config

Отображает, как настроен ассемблер, и затем завершает работу.

--elf-stt-common=no
--elf-stt-common=yes

Эти опции управляют тем, должен ли ассемблер ELF генерировать общие символы с типом "STT_COMMON". Значение по умолчанию можно контролировать с помощью опции времени настройки --enable-elf-stt-common.


--emit-local-absolute
Выводить даже предопределенные (локальные) абсолютные символы в исходящую таблицу символов. Обратите внимание, что это не совсем противоположность опции --strip-local-absolute.

--emulation=name
Если ассемблер настроен для поддержки нескольких различных целевых конфигураций, то эту опцию можно использовать для выбора нужной конфигурации.

-f "fast" --- пропускать предварительную обработку пробелов и комментариев (предполагается, что исходный код является результатом компиляции).

-g
--gen-debug
Генерировать отладочную информацию для каждой строки исходного кода ассемблера, используя предпочтительный формат отладки для целевой платформы. В настоящее время это означает либо STABS, либо ECOFF, либо DWARF2. Когда формат отладки является DWARF, разделы ".debug_info" и ".debug_line" создаются только в том случае, если файл ассемблии не создает их самостоятельно.

--gstabs
Генерировать отладочную информацию STABS для каждой строки ассемблера. Это может помочь в отладке кода ассемблера, если отладчик может ее обрабатывать.

--gstabs+
Генерировать отладочную информацию STABS для каждой строки ассемблера с расширениями GNU, которые, вероятно, может обрабатывать только gdb, и которые могут привести к сбою других отладчиков или к отказу в чтении программы. Это может помочь в отладке кода ассемблера. В настоящее время единственным расширением GNU является расположение текущего рабочего каталога во время сборки.

--gdwarf-2
Генерировать отладочную информацию DWARF2 для каждой строки ассемблера. Это может помочь в отладке кода ассемблера, если отладчик может ее обрабатывать. Обратите внимание, что эта опция поддерживается не всеми целевыми платформами.

--gdwarf-3
Эта опция аналогична опции --gdwarf-2, за исключением того, что она позволяет генерировать дополнительную отладочную информацию в соответствии с версией 3 спецификации DWARF. Обратите внимание, что включение этой опции не гарантирует генерацию какой-либо дополнительной информации, и выбор ее генерации остается за целевой платформой.

--gdwarf-4
Эта опция аналогична опции --gdwarf-2, за исключением того, что она позволяет генерировать дополнительную отладочную информацию в соответствии с версией 4 спецификации DWARF. Обратите внимание, что включение этой опции не гарантирует генерацию какой-либо дополнительной информации, и выбор ее генерации остается за целевой платформой.

--gdwarf-5
Эта опция аналогична опции --gdwarf-2, за исключением того, что она позволяет генерировать дополнительную отладочную информацию в соответствии с версией 5 спецификации DWARF. Обратите внимание, что включение этой опции не гарантирует генерацию какой-либо дополнительной информации, и выбор ее генерации остается за целевой платформой.

--gdwarf-sections
Вместо создания раздела .debug_line создается серия разделов .debug_line.foo, где foo — имя соответствующего кодового раздела. Например, для кодового раздела с именем .text.func отладочная информация о номерах строк будет помещена в раздел с именем .debug_line.text.func. Если кодовый раздел называется просто .text, то раздел отладочной информации по-прежнему будет называться .debug_line, без каких-либо суффиксов.

--gdwarf-cie-version=version

Управляет версией DWARF Common Information Entries (CIE), которые будут создаваться. Если этот флаг не указан, по умолчанию используется версия 1, хотя для некоторых целевых платформ это значение по умолчанию может быть изменено. Другие возможные значения для версии: 3 или 4.

--generate-missing-build-notes=yes
--generate-missing-build-notes=no

Эти параметры управляют тем, должен ли ассемблер ELF генерировать атрибуты GNU Build, если они отсутствуют во входных исходных файлах. По умолчанию это поведение можно контролировать с помощью опции --enable-generate-build-notes во время настройки.

--gsframe
--gsframe
--gsframe=no
--gsframe=yes

Создает раздел .sframe из директив CFI. Явный параметр --gsframe=yes ведет себя так же, как --gsframe. Генерацию можно отключить с помощью --gsframe=no. По умолчанию это поведение можно контролировать с помощью опции --enable-default-sframe во время настройки.

--hash-size N

Игнорируется. Поддерживается для совместимости командной строки с другими ассемблерами.

--help

Выводит сводку параметров командной строки и завершает работу.

--target-help

Выводит сводку всех специфичных для целевой платформы параметров и завершает работу.

--info

Не подавлять информационные сообщения.

--no-info

Подавлять информационные сообщения.

-I dir

Добавляет каталог dir в список поиска для директив ".include".

-J Не выдавать предупреждения о переполнении знаковых чисел.

-K Выдавать предупреждения при изменении таблиц разностей для длинных смещений.

-L
--keep-locals

Сохраняет локальные символы в таблице символов. Эти символы начинаются с префиксов локальных меток, специфичных для системы, обычно .L для систем ELF или L для традиционных систем a.out.

--listing-lhs-width=number

Задает максимальную ширину в словах выходного столбца данных для листинга ассемблера равной number.

--listing-lhs-width2=number

Задает максимальную ширину в словах выходного столбца данных для строк продолжения в листинге ассемблера равной number.

--listing-rhs-width=number

Задает максимальную ширину строки входного исходного кода, отображаемой в листинге, равной number байтам.

--listing-cont-lines=number

Задает максимальное количество строк, выводимых в листинге для одной строки входных данных, равным number +

--multibyte-handling=allow
--multibyte-handling=warn
--multibyte-handling=warn-sym-only
--multibyte-handling=warn_sym_only

Управляет тем, как ассемблер обрабатывает многобайтовые символы во входных данных. По умолчанию (которое можно восстановить, используя аргумент allow) ассемблер разрешает использование таких символов без каких-либо сообщений. Использование аргумента warn приведет к тому, что ассемблер будет генерировать предупреждающее сообщение каждый раз, когда встречается какой-либо многобайтовый символ. Использование аргумента warn-sym-only приведет к тому, что предупреждающее сообщение будет генерироваться только в том случае, если символ определен с именем, содержащим многобайтовые символы. (Ссылки на неопределенные символы не будут генерировать предупреждение).


--no-pad-sections

Запрещает ассемблеру выполнять выравнивание (padding) в конце выходных секций до размера выравнивания этой секции. По умолчанию секции выравниваются, но это может приводить к неэффективному использованию памяти, что может быть важно для целевых платформ с ограниченными ресурсами памяти.

-o objfile

Указывает имя выходного объектного файла как objfile.

-R  Объединяет секцию данных с секцией кода.

--reduce-memory-overheads

Игнорируется. Поддерживается для обеспечения совместимости с инструментами, которые передают один и тот же параметр как ассемблеру, так и компоновщику.

--scfi=experimental

Этот параметр определяет, должен ли ассемблер синтезировать CFI (Control Flow Information) для кода, написанного вручную. Если входные данные уже содержат некоторые синтезируемые директивы CFI, ассемблер игнорирует их и выдает предупреждение. Обратите внимание, что "--scfi=experimental" не предназначен для использования с кодом, сгенерированным компилятором, включая встроенную (inline) ассемблерную вставку. Эта экспериментальная поддержка находится в разработке. Поддерживается только ABI System V AMD64.

Каждая функция в ассемблерном коде должна начинаться с директивы ".type" и, желательно, завершаться директивой ".size". При использовании SCFI каждая директива ".type" инициирует создание нового FDE (Function Descriptor Entry). Это означает, что с каждой директивой ".type" предыдущий блок инструкций, если он есть, завершается как отдельный FDE.

--sectname-subst

Учитывает последовательности подстановки в именах секций.

--size-check=error
--size-check=warning

Выдает ошибку или предупреждение для неверной директивы ELF .size.

--statistics

Выводит максимальный объем памяти (в байтах) и общее время (в секундах), затраченное на сборку.

--strip-local-absolute

Удаляет локальные абсолютные символы из выходной таблицы символов.

-v
--verbose

Выводит версию ассемблера.

--version
-version

Выводит версию ассемблера и завершает работу.

-W
--no-warn

Подавляет сообщения о предупреждениях.

--warn

Не подавляет сообщения о предупреждениях и не рассматривает их как ошибки.

--fatal-warnings

Рассматривает предупреждения как ошибки.

-w  Игнорируется.

-x  Игнорируется.

-Z  Генерирует объектный файл даже после возникновения ошибок.

-- | files ...

Стандартный ввод или исходные файлы для сборки.

Следующие параметры доступны, когда ассемблер настроен для 64-битного режима архитектуры ARM (AArch64).

-EB  Этот параметр указывает, что выходные данные, генерируемые ассемблером, должны быть помечены как закодированные для процессора с прямой (big-endian) организацией байтов.

-EL  Этот параметр указывает, что выходные данные, генерируемые ассемблером, должны быть помечены как закодированные для процессора с обратной (little-endian) организацией байтов.

-mabi=abi

Указывает ABI, используемое в исходном коде. Распознаются следующие аргументы: "ilp32" и "lp64", которые определяют формат выходного ELF-файла (ELF32 или ELF64 соответственно). По умолчанию используется "lp64".

-mcpu=processor[+extension...]

Этот параметр указывает целевой процессор. Ассемблер выдаст сообщение об ошибке, если будет предпринята попытка собрать инструкцию, которая не будет выполняться на целевом процессоре. Поддерживаются следующие имена процессоров: "cortex-a34", "cortex-a35", "cortex-a53", "cortex-a55", "cortex-a57", "cortex-a65", "cortex-a65ae", "cortex-a72", "cortex-a73", "cortex-a75", "cortex-a76", "cortex-a76ae", "cortex-a77", "cortex-a78", "cortex-a78ae", "cortex-a78c", "cortex-a510", "cortex-a520", "cortex-a710", "cortex-a720", "ares", "exynos-m1", "falkor", "neoverse-n1", "neoverse-n2", "neoverse-e1", "neoverse-v1", "qdf24xx", "saphira", "thunderx", "vulcan", "xgene1" "xgene2", "cortex-r82", "cortex-x1", "cortex-x2", "cortex-x3", и "cortex-x4". Специальное имя "all" может использоваться для того, чтобы ассемблер принимал инструкции, допустимые для любого поддерживаемого процессора, включая все необязательные расширения.

В дополнение к основному набору инструкций, ассемблер может быть настроен на прием или ограничение различных расширенных мнемонических обозначений, расширяющих возможности процессора.

Если некоторые реализации конкретного процессора поддерживают расширения, то эти расширения автоматически включаются. Следовательно, обычно нет необходимости указывать какие-либо дополнительные расширения.

-march=архитектура[+расширение...] Эта опция указывает целевую архитектуру. Ассемблер выдаст сообщение об ошибке, если будет предпринята попытка ассемблировать инструкцию, которая не будет выполняться на целевой архитектуре. Следующие имена архитектур распознаются: "armv8-a", "armv8.1-a", "armv8.2-a", "armv8.3-a", "armv8.4-a", "armv8.5-a", "armv8.6-a", "armv8.7-a", "armv8.8-a", "armv8.9-a", "armv8-r", "armv9-a", "armv9.1-a", "armv9.2-a", "armv9.3-a", "armv9.4-a" и "armv9.5-a".

Если указаны обе опции -mcpu и -march, ассемблер будет использовать настройку для -mcpu. Если ни одна из них не указана, ассемблер по умолчанию будет использовать -mcpu=all.

Опцию архитектуры можно расширить теми же опциями расширения набора инструкций, что и опция -mcpu. В отличие от -mcpu, расширения не всегда включаются по умолчанию.

-mverbose-error

Эта опция включает подробные сообщения об ошибках для AArch64 gas. Эта опция включена по умолчанию.

-mno-verbose-error

Эта опция отключает подробные сообщения об ошибках в AArch64 gas.

-menable-sysreg-checking

Эта опция включает сообщения об ошибках, которые выдаются, если предпринята попытка ассемблировать доступ к системному регистру, который не будет выполняться на целевой архитектуре.

Следующие опции доступны, когда as настроен для процессора Alpha.

-mcpu

Эта опция указывает целевой процессор. Если предпринята попытка ассемблировать инструкцию, которая не будет выполняться на целевом процессоре, ассемблер может либо развернуть инструкцию как макрос, либо выдать сообщение об ошибке. Эта опция эквивалентна директиве ".arch".

Следующие имена процессоров распознаются: 21064, "21064a", 21066, 21068, 21164, "21164a", "21164pc", 21264, "21264a", "21264b", "ev4", "ev5", "lca45", "ev5", "ev56", "pca56", "ev6", "ev67", "ev68". Специальное имя "all" может использоваться для того, чтобы ассемблер принимал инструкции, допустимые для любого процессора Alpha.


Для поддержки существующей практики в OSF/1 в отношении ".arch" и существующей практики внутри MILO (загрузчика Linux ARC), числовые имена процессоров (например, 21064) обеспечивают доступ к процессор-специфическим инструкциям PALcode, в то время как "электро-власические" имена (например, "ev4") этого не делают.

-mdebug
-no-mdebug

Включает или отключает генерацию ".mdebug" для директив stabs и дескрипторов процедур. По умолчанию ".mdebug" включается автоматически при обнаружении первой директивы stabs.

-relax

Эта опция заставляет все релокации помещать в объектный файл, вместо того чтобы экономить место и разрешать некоторые релокации во время сборки. Обратите внимание, что эта опция не распространяет всю арифметику символов в объектный файл, поскольку не всю арифметику символов можно представить. Однако эта опция все равно может быть полезна в определенных приложениях.

-replace
-noreplace

Включает или отключает оптимизацию вызовов процедур как на этапе сборки, так и на этапе линковки. Эти опции доступны только для VMS-целей, и по умолчанию используется "-replace". См. раздел 4.1 Руководства пользователя OpenVMS Linker Utility.

-g Эта опция используется, когда компилятор генерирует отладочную информацию. Когда gcc использует mipstfile для генерации отладочной информации для ECOFF, локальные метки должны передаваться в объектный файл. В противном случае эта опция не имеет эффекта.

-Gsize

Локальный общий символ, размер которого превышает указанное значение, помещается в ".bss", в то время как символы меньшего размера помещаются в ".sbss".

-F
-32addr

Эти опции игнорируются для обеспечения обратной совместимости.

Следующие опции доступны, когда as настроен для процессора ARC.

-mcpu=cpu

Эта опция выбирает основный вариант процессора.

-EB | -EL

Выберите выходной файл в прямом (-EB) или обратном (-EL) порядке байтов.

-mcode-density

Включите инструкции расширения Code Density.

Следующие опции доступны, когда as настроен для семейства процессоров ARM.

-mcpu=processor[+extension...]

Укажите, какой вариант процессора ARM является целевым.

-march=architecture[+extension...]

Укажите, какой вариант архитектуры ARM используется в целевом устройстве.

-mfpu=floating-point-format

Выберите целевую архитектуру с плавающей точкой.

-mfloat-abi=abi

Выберите используемый ABI с плавающей точкой.

-mthumb

Включите только декодирование инструкций Thumb.

-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant

Выберите используемую конвенцию вызова процедур.

-EB | -EL

Выберите выходной файл в прямом (-EB) или обратном (-EL) порядке байтов.

-mthumb-interwork

Укажите, что код был сгенерирован с учетом взаимодействия между кодом Thumb и ARM.

-mccs

Включает режим совместимости с синтаксисом ассемблера CodeComposer Studio.

-k Укажите, что был сгенерирован PIC-код.

Следующие опции доступны, когда as настроен для семейства процессоров Blackfin.

-mcpu=processor[-sirevision]

Эта опция указывает целевой процессор. Дополнительная опция sirevision не используется в ассемблере. Она здесь для того, чтобы GCC мог легко передавать свою опцию "-mcpu=". Ассемблер выдаст сообщение об ошибке, если будет предпринята попытка собрать инструкцию, которая не будет выполняться на целевом процессоре. Поддерживаются следующие имена процессоров: "bf504", "bf506", "bf512", "bf514", "bf516", "bf518", "bf522", "bf523", "bf524", "bf525", "bf526", "bf527", "bf531", "bf532", "bf533", "bf534", "bf535" (еще не реализовано), "bf536", "bf537", "bf538", "bf539", "bf542", "bf542m", "bf544", "bf544m", "bf547", "bf547m", "bf548", "bf548m", "bf549", "bf549m", "bf561" и "bf592".


-mfdpic

Скомпилировать для ABI FDPIC.

-mno-fdpic
-mnopic

Отключить -mfdpic.

Следующие опции доступны, когда as настроен для семейства процессоров Linux kernel BPF.

@chapter Функции, зависящие от BPF

Опции BPF

-EB Эта опция указывает, что ассемблер должен генерировать big-endian eBPF.

-EL Эта опция указывает, что ассемблер должен генерировать little-endian eBPF.

-mdialect=dialect

Эта опция указывает диалект языка ассемблера, который следует использовать при сборке. Ассемблер поддерживает режимы normal и pseudoc.

-misa-spec=spec

Эта опция указывает версию набора инструкций BPF, которую следует использовать при сборке. Поддерживаемые версии BPF ISA: v1, v2, v3 и v4.

В качестве значения можно указать xbpf, чтобы распознавать дополнительные инструкции, которые используются GCC для целей тестирования. Но имейте в виду, что это не является допустимым BPF.

-mno-relax

Эта опция указывает ассемблеру не выполнять релаксацию инструкций.

Обратите внимание, что если в командной строке не указана опция порядка байтов, используется порядок байтов хост-системы. См. страницы info для документации по опциям, специфичным для CRIS.

Следующие опции доступны, когда as настроен для семейства процессоров C-SKY.

-march=archname

Скомпилировать для архитектуры archname. Список допустимых значений для archname можно получить с помощью опции --help.

-mcpu=cpuname

Скомпилировать для архитектуры cpuname. Список допустимых значений для cpuname можно получить с помощью опции --help.

-EL
-mlittle-endian

Генерировать выходной код в формате little-endian.

-EB
-mbig-endian

Генерировать выходной код в формате big-endian.

-fpic
-pic

Генерировать код, независимый от позиции.

-mljump
-mno-ljump

Включить/отключить преобразование коротких инструкций ветвления "jbf", "jbt" и "jbr" в "jmpi". Эта опция предназначена только для процессоров V2. Она игнорируется для целевых платформ CK801 и CK802, которые не поддерживают инструкцию "jmpi", и включена по умолчанию для других процессоров.

-mbranch-stub
-mno-branch-stub
Передавать релокации "R_CKCORE_PCREL_IMM26BY2" для инструкций "bsr" компоновщику.

Эта опция доступна только для bare-metal C-SKY V2 ELF, где она включена по умолчанию. Ее нельзя использовать в коде, который будет динамически связан с общими библиотеками.

-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr

Включить/отключить преобразование инструкций "jbsr" в "bsr". Эта опция всегда включена (и -mno-force2bsr игнорируется) для целевых платформ CK801/CK802. Она также всегда включена, когда действует -mbranch-stub.


-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr

Включает/отключает преобразование инструкций "jsri" в "bsr". Эта опция включена по умолчанию.

-mnolrw
-mno-lrw

Включает/отключает преобразование инструкций "lrw" в пару "movih"/"ori".

-melrw
-mno-elrw

Включает/отключает расширенные инструкции "lrw". Эта опция включена по умолчанию для процессоров серии CK800.

-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func

Включает/отключает размещение таблиц литералов после каждой функции.

-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br

Включает/отключает размещение таблиц литералов после безусловных переходов. Эта опция включена по умолчанию.

-mistack
-mno-istack

Включает/отключает инструкции для прерываний. Эта опция включена по умолчанию для процессоров CK801, CK802 и CK802.

Следующие опции явно включают определенные необязательные инструкции. Эти функции также включаются неявно при использовании "-mcpu=", чтобы указать процессор, который их поддерживает.

-mhard-float

Включает инструкции для вычислений с плавающей точкой с аппаратной поддержкой.

-mmp

Включает инструкции для многопроцессорных систем.

-mcp

Включает инструкции сопроцессора.

-mcache

Включает инструкцию предварительной выборки кэша.

-msecurity

Включает инструкции безопасности C-SKY.

-mtrust

Включает инструкции доверенной среды C-SKY.

-mdsp

Включает инструкции DSP.

-medsp

Включает расширенные инструкции DSP.

-mvdsp

Включает векторные инструкции DSP.

Следующие опции доступны, когда as настроен для процессора Epiphany.

-mepiphany

Указывает, что разрешены как 32-битные, так и 16-битные инструкции. Это поведение по умолчанию.

-mepiphany16

Ограничивает разрешенные инструкции только 16-битным набором.

Следующие опции доступны, когда as настроен для процессора H8/300. @chapter Функции, специфичные для H8/300

Опции

Renesas H8/300 версия "as" имеет одну машино-зависимую опцию:

-h-tick-hex

Поддерживает шестнадцатеричные константы в стиле H'00 в дополнение к стилю 0x00.

-mach=name

Устанавливает вариант машины H8300. Поддерживаются следующие имена машин: "h8300h", "h8300hn", "h8300s", "h8300sn", "h8300sx" и "h8300sxn".

Следующие опции доступны, когда as настроен для процессора i386.

--32 | --x32 | --64

Выбирает размер слова, либо 32 бита, либо 64 бита. --32 подразумевает архитектуру Intel i386, в то время как --x32 и --64 подразумевают архитектуру AMD x86-64 с 32-битным или 64-битным размером слова соответственно.

Эти опции доступны только с форматом объектного файла ELF и требуют, чтобы была включена необходимая поддержка BFD (на 32-битной платформе необходимо добавить --enable-64-bit-bfd в configure, чтобы включить 64-битное использование и использовать x86-64 в качестве целевой платформы).

-n По умолчанию, x86 GAS заменяет несколько инструкций nop, используемых для выравнивания в кодовых секциях, на многобайтовые инструкции nop, такие как leal 0(%esi,1),%esi. Этот переключатель отключает оптимизацию, если явно указана однобайтовая nop (0x90) в качестве байта заполнения для выравнивания.

--divide

На платформах, основанных на SVR4, символ / рассматривается как символ комментария, что означает, что его нельзя использовать в выражениях. Опция --divide преобразует / в обычный символ. Это не отключает / в начале строки, начинающей комментарий, и не влияет на использование # для начала комментария.

-march=CPU[+EXTENSION...]

Эта опция указывает целевой процессор. Ассемблер выдаст сообщение об ошибке, если будет предпринята попытка собрать инструкцию, которая не будет выполняться на целевом процессоре. Следующие имена процессоров распознаются: "i8086", "i186", "i286", "i386", "i486", "i586", "i686", "pentium", "pentiumpro", "pentiumii", "pentiumiii", "pentium4", "prescott", "nocona", "core", "core2", "corei7", "iamcu", "k6", "k6_2", "athlon", "opteron", "k8", "amdfam10", "bdver1", "bdver2", "bdver3", "bdver4", "znver1", "znver2", "znver3", "znver4", "znver5", "znver6", "btver1", "btver2", "generic32" и "generic64".

В дополнение к основному набору инструкций, ассемблер может быть настроен на принятие различных расширенных мнемонических кодов. Например, "-march=i686+sse4+vmx" расширяет i686 с помощью sse4 и vmx. Следующие расширения в настоящее время поддерживаются: 8087, 287, 387, 687, "cmov", "fxsr", "mmx", "sse", "sse2", "sse3", "sse4a", "ssse3", "sse4.1", "sse4.2", "sse4", "avx", "avx2", "lahf_sahf", "monitor", "adx", "rdseed", "prfchw", "smap", "mpx", "sha", "rdpid", "ptwrite", "cet", "gfni", "vaes", "vpclmulqdq", "prefetchwt1", "clflushopt", "se1", "clwb", "movdiri", "movdir64b", "enqcmd", "serialize", "tsxldtrk", "kl", "widekl", "hreset", "avx512f", "avx512cd", "avx512er", "avx512pf", "avx512vl", "avx512bw", "avx512dq", "avx512ifma", "avx512vbmi", "avx512_4fmaps", "avx512_4vnniw", "avx512_vpopcntdq", "avx512_vbmi2", "avx512_vnni", "avx512_bitalg", "avx512_vp2intersect", "tdx", "avx512_bf16", "avx_vnni", "avx512_fp16", "avx512_bmm", "prefetchi", "avx_ifma", "avx_vnni_int8", "cmpccxadd", "wrmsrns", "msrlist", "avx_ne_convert", "rao_int", "fred", "lkgs", "avx_vnni_int16", "sha512", "sm3", "sm4", "pbndkb", "avx10.1", "avx10.1/512", "avx10.1/256", "avx10.1/128", "user_msr", "msr_imm", "apx_f", "apx_nci", "apx_ndd", "apx_nf", "apx_nci_ndd_nf", "avx10.2", "avx10.2/512", "avx10.2/256", "avx10.2/128", "movrs", "amx_int8", "amx_bf16", "amx_fp16", "amx_complex", "amx_transpose", "amx_tf32", "amx_fp8", "amx_movrs", "amx_avx512", "amx_tile", "vmx", "vmfunc", "smx", "xsave", "xsaveopt", "xsavec", "xsaves", "aes", "pclmul", "fsgsbase", "rdrnd", "f16c", "bmi2", "fma", "movbe", "ept", "lzcnt", "popcnt", "hle", "rtm", "tsx", "invpcid", "clflush", "mwaitx", "clzero", "wbnoinvd", "pconfig", "waitpkg", "uintr", "cldemote", "rdpru", "mcommit", "sev_es", "lwp", "fma4", "xop", "cx16", "syscall", "rdtscp", "3dnow", "3dnowa", "sse4a", "sse5", "snp", "invlpgb", "tlbsync", "rmpquery", "rmpread", "svme", "gmism2", "gmiccs", "padlockrng2", "padlockphe2", "padlockxmodx" и "padlock". Обратите внимание, что эти мнемонические коды расширений можно снабжать префиксом "no", чтобы отменить соответствующую (и любую зависимую) функциональность. Кроме того, обратите внимание, что суффиксы, разрешенные для "-march=avx10.", накладывают ограничение на длину вектора, т. е., несмотря на то, что это в противном случае являются опциями "включения", использование этих суффиксов отключит все инструкции с более широкими векторными или регистрами масок.


При использовании директивы ".arch" с флагом -march, директива ".arch" будет иметь приоритет.

-mtune=CPU

Эта опция указывает процессор, для которого следует выполнить оптимизацию. При использовании совместно с опцией -march, будут генерироваться только инструкции, соответствующие процессору, указанному в опции -march.

Допустимые значения CPU совпадают со списком процессоров для -march=CPU.

-moperand-check=none
-moperand-check=warning
-moperand-check=error

Эти опции управляют тем, должна ли программа ассемблирования проверять определенные операнды инструкций или комбинации операндов. Примером является инструкция, в которой размер операнда не может быть определен из его операндов и также не был указан с помощью суффикса инструкции. -moperand-check=none приведет к тому, что программа ассемблирования не будет выполнять эти проверки. -moperand-check=warning приведет к тому, что программа ассемблирования будет выдавать предупреждение, если соответствующие проверки не пройдены, что является значением по умолчанию. -moperand-check=error приведет к тому, что программа ассемблирования будет выдавать ошибку, если соответствующие проверки не пройдены.

-msse2avx

Эта опция указывает, что программа ассемблирования должна кодировать инструкции SSE с использованием префикса VEX, что требует наличия AVX. Инструкции SSE, использующие расширенные общие регистры, будут закодированы с использованием префикса EVEX, что требует наличия AVX512 или AVX10.

-muse-unaligned-vector-move

Эта опция указывает, что программа ассемблирования должна кодировать выравнивание векторных перемещений как невыравнивание векторных перемещений.

-msse-check=none
-msse-check=warning
-msse-check=error

Эти опции управляют тем, должна ли программа ассемблирования проверять инструкции SSE. -msse-check=none приведет к тому, что программа ассемблирования не будет проверять инструкции SSE, что является значением по умолчанию. -msse-check=warning приведет к тому, что программа ассемблирования будет выдавать предупреждение для любой инструкции SSE. -msse-check=error приведет к тому, что программа ассемблирования будет выдавать ошибку для любой инструкции SSE.

-mavxscalar=128
-mavxscalar=256

Эти опции управляют тем, как программа ассемблирования должна кодировать скалярные инструкции AVX. -mavxscalar=128 закодирует скалярные инструкции AVX с длиной вектора 128 бит, что является значением по умолчанию. -mavxscalar=256 закодирует скалярные инструкции AVX с длиной вектора 256 бит.

ВНИМАНИЕ: Не используйте это для производственного кода, так как из-за ошибок процессора результирующий код может не работать на определенных моделях.

-mvexwig=0
-mvexwig=1

Эти опции управляют тем, как программа ассемблирования должна кодировать VEX.W-ignored (WIG) инструкции VEX. -mvexwig=0 закодирует WIG VEX инструкции с vex.w = 0, что является значением по умолчанию. -mvexwig=1 закодирует WIG EVEX инструкции с vex.w = 1.


ПРЕДУПРЕЖДЕНИЕ: Не используйте это в производственном коде – из-за ошибок ЦП полученный код может не работать на некоторых моделях.

-mevexlig=128
-mevexlig=256
-mevexlig=512

Эти опции управляют тем, как ассемблер должен кодировать инструкции EVEX с игнорированием длины (LIG). -mevexlig=128 кодирует инструкции EVEX с игнорированием длины с 128-битной векторной длиной, что является значением по умолчанию. -mevexlig=256 и -mevexlig=512 кодируют инструкции EVEX с игнорированием длины с 256-битной и 512-битной векторной длиной соответственно.

-mevexwig=0
-mevexwig=1

Эти опции управляют тем, как ассемблер должен кодировать инструкции EVEX с игнорированием бита w (WIG). -mevexwig=0 кодирует инструкции EVEX с игнорированием бита w с evex.w = 0, что является значением по умолчанию. -mevexwig=1 кодирует инструкции EVEX с игнорированием бита w с evex.w = 1.

-mmnemonic=att
-mmnemonic=intel

Эта опция указывает мнемонические обозначения инструкций для сопоставления инструкций. Директивы ".att_mnemonic" и ".intel_mnemonic" имеют приоритет.

-msyntax=att
-msyntax=intel

Эта опция указывает синтаксис инструкций при обработке инструкций. Директивы ".att_syntax" и ".intel_syntax" имеют приоритет.

-mnaked-reg

Эта опция указывает, что регистрам не требуется префикс "%". Директивы ".att_syntax" и ".intel_syntax" имеют приоритет.

-madd-bnd-prefix

Эта опция заставляет ассемблер добавлять префикс BND ко всем переходам, даже если этот префикс явно не указан в исходном коде.

-mno-shared

Для ELF-цели ассемблер обычно оптимизирует не-PLT-переходы к определенным глобальным целям ветвления, которые не являются слабыми и имеют видимость по умолчанию. Опция -mshared указывает ассемблеру генерировать код, который может быть включен в общую библиотеку, где все не-слабые глобальные цели ветвления с видимостью по умолчанию могут быть переопределены. В результате код будет немного больше. Эта опция влияет только на обработку инструкций перехода.

-mbig-obj

Для PE/COFF-цели эта опция принудительно использует формат большого объектного файла, который позволяет использовать более 32768 разделов.

-momit-lock-prefix=no
-momit-lock-prefix=yes

Эти опции управляют тем, как ассемблер должен кодировать префикс lock. Эта опция предназначена в качестве обходного пути для процессоров, которые выдают сбой при использовании префикса lock. Эту опцию можно безопасно использовать только с одноядерными, однопоточными компьютерами. -momit-lock-prefix=yes исключит все префиксы lock. -momit-lock-prefix=no будет кодировать префикс lock как обычно, что является значением по умолчанию.

-mfence-as-lock-add=no
-mfence-as-lock-add=yes

Эти опции управляют тем, как ассемблер должен кодировать инструкции lfence, mfence и sfence. -mfence-as-lock-add=yes будет кодировать инструкции lfence, mfence и sfence как lock addl $0x0, (%rsp) в 64-битном режиме и lock addl $0x0, (%esp) в 32-битном режиме. -mfence-as-lock-add=no будет кодировать инструкции lfence, mfence и sfence как обычно, что является значением по умолчанию.

-mrelax-relocations=no
-mrelax-relocations=yes
Эти опции управляют тем, должен ли ассемблер генерировать релаксационные релокации, R_386_GOT32X, в 32-битном режиме, или R_X86_64_GOTPCRELX и R_X86_64_REX_GOTPCRELX в 64-битном режиме. -mrelax-relocations=yes будет генерировать релаксационные релокации. -mrelax-relocations=no не будет генерировать релаксационные релокации.

-mtls-check=no
-mtls-check=yes
Эти опции управляют тем, должен ли ассемблер проверять TLS-релокации. -mtls-check=yes будет проверять TLS-релокации. -mtls-check=no не будет проверять TLS-релокации. По умолчанию это можно контролировать с помощью опции конфигурации --enable-x86-tls-check.

-malign-branch-boundary=NUM
Эта опция управляет тем, как ассемблер должен выравнивать переходы по границе сегмента или NOP. NUM должно быть степенью 2. Оно должно быть 0 или не меньше 16. Переходы будут выровнены в пределах границы в NUM байт. -malign-branch-boundary=0, что является значением по умолчанию, не выравнивает переходы.

-malign-branch=TYPE[+TYPE...]
Эта опция указывает типы переходов, которые необходимо выровнять. TYPE — это комбинация из jcc, которая выравнивает условные переходы, fused, которая выравнивает слияемые условные переходы, jmp, которая выравнивает безусловные переходы, call, которая выравнивает вызовы, ret, которая выравнивает возвраты, indirect, которая выравнивает косвенные переходы и вызовы. По умолчанию используется -malign-branch=jcc+fused+jmp.

-malign-branch-prefix-size=NUM
Эта опция указывает максимальное количество префиксов в инструкции для выравнивания переходов. NUM должно быть в диапазоне от 0 до 5. Значение NUM по умолчанию — 5.

-mbranches-within-32B-boundaries
Эта опция выравнивает условные переходы, слияемые условные переходы и безусловные переходы в пределах границы в 32 байта с использованием до 5 префиксов сегмента в инструкции. Она эквивалентна -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. По умолчанию переходы не выравниваются.

-mlfence-after-load=no
-mlfence-after-load=yes
Эти опции управляют тем, должен ли ассемблер генерировать lfence после инструкций загрузки. -mlfence-after-load=yes будет генерировать lfence. -mlfence-after-load=no не будет генерировать lfence, что является значением по умолчанию.

-mlfence-before-indirect-branch=none
-mlfence-before-indirect-branch=all
-mlfence-before-indirect-branch=register
-mlfence-before-indirect-branch=memory
Эти опции управляют тем, должен ли ассемблер генерировать lfence перед косвенными ближними переходами. -mlfence-before-indirect-branch=all будет генерировать lfence перед косвенными ближними переходами через регистр и выдавать предупреждение перед косвенными ближними переходами через память. Также он неявно устанавливает -mlfence-before-ret=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 будет генерироваться после загрузки регистра, содержащего целевой адрес перехода.

-mlfence-before-ret=none
-mlfence-before-ret=shl
-mlfence-before-ret=or
-mlfence-before-ret=yes
-mlfence-before-ret=not

Эти параметры управляют тем, должна ли программа ассемблирования генерировать инструкцию lfence перед инструкцией ret. -mlfence-before-ret=or будет генерировать инструкцию or с lfence. -mlfence-before-ret=shl/yes будет генерировать инструкцию shl с lfence. -mlfence-before-ret=not будет генерировать инструкцию not с lfence. -mlfence-before-ret=none не будет генерировать lfence, что является значением по умолчанию.

-mx86-used-note=no
-mx86-used-note=yes

Эти параметры управляют тем, должна ли программа ассемблирования генерировать GNU_PROPERTY_X86_ISA_1_USED и GNU_PROPERTY_X86_FEATURE_2_USED GNU-атрибуты. Значение по умолчанию можно настроить с помощью параметра --enable-x86-used-note при конфигурировании.

-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz

Эти параметры управляют тем, как программа ассемблирования должна кодировать SAE-only EVEX-инструкции. -mevexrcig=rne будет кодировать биты RC EVEX-инструкции как 00, что является значением по умолчанию. -mevexrcig=rd, -mevexrcig=ru и -mevexrcig=rz будут кодировать SAE-only EVEX-инструкции с битами RC 01, 10 и 11 соответственно.

-mamd64
-mintel64

Этот параметр указывает, что программа ассемблирования должна принимать только AMD64 или Intel64 ISA в 64-битном режиме. По умолчанию принимаются общие, Intel64 и AMD64 ISA.

-O0 | -O | -O1 | -O2 | -Os

Оптимизировать кодирование инструкций для уменьшения размера инструкций. -O и -O1 кодируют 64-битные инструкции загрузки регистров с 64-битным непосредственным значением как 32-битные инструкции загрузки регистров с 31-битным или 32-битным непосредственным значением, кодируют 64-битные инструкции очистки регистров как 32-битные инструкции очистки регистров, кодируют 256-битные/512-битные VEX/EVEX-инструкции очистки векторных регистров как 128-битные VEX-инструкции очистки векторных регистров, кодируют 128-битные/256-битные EVEX-инструкции загрузки/сохранения векторных регистров как VEX-инструкции загрузки/сохранения векторных регистров и кодируют 128-битные/256-битные EVEX-инструкции логических операций над упакованными целыми числами как 128-битные/256-битные VEX-инструкции логических операций над упакованными целыми числами.

-O2 включает оптимизацию -O1, а также кодирует 256-битные/512-битные EVEX-инструкции очистки векторных регистров как 128-битные EVEX-инструкции очистки векторных регистров. В 64-битном режиме VEX-инструкции с коммутативными операндами-источниками также будут иметь свои операнды-источники переставленными, если это позволяет использовать 2-байтный VEX-префикс вместо 3-байтного. Определенные формы AND, а также OR с одним и тем же (регистровым) операндом, указанным дважды, также будут изменены на TEST.

-Os включает оптимизацию -O2, а также кодирует 16-битные, 32-битные и 64-битные регистровые тесты с
непосредственным значением в виде 8-битного регистрового теста с непосредственным значением. -O0 отключает эту оптимизацию.

Следующие опции доступны при настройке `as` для серии Ubicom IP2K.

-mip2022ext
Указывает, что разрешены расширенные инструкции IP2022.

-mip2022
Восстанавливает поведение по умолчанию, которое ограничивает разрешенные инструкции только основными
инструкциями IP2022.

Следующие опции доступны при настройке `as` для процессоров Renesas M32C и M16C.

-m32c
Собирает инструкции M32C.

-m16c
Собирает инструкции M16C (по умолчанию).

-relax
Включает поддержку релаксаций во время компоновки.

-h-tick-hex
Поддерживает шестнадцатеричные константы в стиле H'00 в дополнение к стилю 0x00.

Следующие опции доступны при настройке `as` для серии Renesas M32R (ранее Mitsubishi M32R).

--m32rx
Указывает, какой процессор из семейства M32R является целевым. По умолчанию обычно используется M32R,
но эта опция изменяет его на M32RX.

--warn-explicit-parallel-conflicts или --Wp
Выводит предупреждающие сообщения при обнаружении сомнительных параллельных конструкций.

--no-warn-explicit-parallel-conflicts или --Wnp
Не выводит предупреждающие сообщения при обнаружении сомнительных параллельных конструкций.

Следующие опции доступны при настройке `as` для серии Motorola 68000.

-l
Укорачивает ссылки на неопределенные символы до одного слова вместо двух.

-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
Указывает, какой процессор из семейства 68000 является целевым. По умолчанию обычно используется 68020,
но это можно изменить во время настройки.

-m68881 | -m68882 | -mno-68881 | -mno-68882
Целевая машина имеет (или не имеет) сопроцессор с плавающей точкой. По умолчанию предполагается наличие сопроцессора для 68020, 68030 и cpu32. Хотя базовая модель 68000 несовместима
с 68881, можно указать их комбинацию, поскольку возможно эмулировать инструкции сопроцессора с помощью основного процессора.

-m68851 | -mno-68851
Целевая машина имеет (или не имеет) сопроцессор управления памятью. По умолчанию предполагается наличие MMU для 68020 и выше.

Для получения подробной информации об опциях, специфичных для PDP-11, см. PDP-11-Options.

-mpic | -mno-pic
Генерирует код, независимый (или зависимый) от позиции. По умолчанию используется -mpic.

-mall
-mall-extensions
Включает все расширения набора инструкций. Это значение используется по умолчанию.

-mno-extensions
Отключает все расширения набора инструкций.

-mextension | -mno-extension
Включает (или отключает) конкретное расширение набора инструкций.

-mcpu
Включает расширения набора инструкций, поддерживаемые конкретным ЦП, и отключает все остальные расширения.

-mmachine
Включает расширения набора инструкций, поддерживаемые конкретной моделью машины, и отключает все остальные расширения.

Следующие опции доступны, когда as настроен для процессора picoJava.

-mb Создать выходные данные в "big endian" формате.

-ml Создать выходные данные в "little endian" формате.

Следующие опции доступны, когда as настроен для процессора PRU.

-mlink-relax

Предполагать, что LD будет оптимизировать инструкции LDI32, проверяя верхние 16 бит выражения. Если все они равны нулю, то LD сократит инструкцию LDI32 до одной инструкции LDI. В этом случае "as" выдаст релокации DIFF для различных выражений.

-mno-link-relax

Предполагать, что LD не будет оптимизировать инструкции LDI32. Следовательно, релокации DIFF выдаваться не будут.

-mno-warn-regname-label

Не выдавать предупреждение, если имя метки совпадает с именем регистра. Обычно программисты на ассемблере хотят, чтобы это предупреждение выдавалось. Компиляторы C могут захотеть отключить его.

Следующие опции доступны, когда as настроен для процессора MIPS.

-G num

Эта опция устанавливает максимальный размер объекта, на который можно ссылаться неявно с помощью регистра "gp". Она принимается только для целей, использующих формат ECOFF, таких как DECstation, работающая под управлением Ultrix. Значение по умолчанию — 8.

-EB Создать выходные данные в "big endian" формате.

-EL Создать выходные данные в "little endian" формате.

-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips32r3
-mips32r5
-mips32r6
-mips64
-mips64r2
-mips64r3
-mips64r5
-mips64r6

Создать код для конкретного уровня архитектуры набора инструкций MIPS. -mips1 является псевдонимом для -march=r3000, -mips2 является псевдонимом для -march=r6000, -mips3 является псевдонимом для -march=r4000, а -mips4 является псевдонимом для -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5 и -mips64r6 соответствуют универсальным MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5 и MIPS64 Release 6 процессорам ISA, соответственно.

-march=cpu

Создать код для конкретного процессора MIPS.

-mtune=cpu

Оптимизировать и настроить для конкретного процессора MIPS.

-mfix7000
-mno-fix7000

Вставлять инструкции NOP, если чтение целевого регистра инструкции mfhi или mflo происходит в следующих двух инструкциях.

-mfix-rm7000
-mno-fix-rm7000

Вставлять инструкции NOP, если за инструкцией dmult или dmultu следует инструкция загрузки.

-mfix-r5900
-mno-fix-r5900

Не пытаться запланировать предшествующую инструкцию в слот задержки инструкции ветвления, размещенной в конце короткого цикла из шести или менее инструкций, и всегда планировать там инструкцию "NOP". Ошибка в коротком цикле при определенных условиях приводит к тому, что циклы выполняются только один или два раза из-за аппаратной ошибки в чипе R5900.

-mdebug
-no-mdebug

Выводить отладочную информацию в стиле stabs в раздел ECOFF-style .mdebug вместо стандартных разделов ELF .stabs.


-mpdr
-mno-pdr
Управление генерацией разделов ".pdr".

-mgp32
-mfp32
Размеры регистров обычно определяются на основе ISA и ABI, но эти флаги принудительно задают
определенный набор регистров, которые всегда будут иметь размер 32 бита. -mgp32 управляет
размером регистров общего назначения, а -mfp32 управляет размером регистров с плавающей точкой.

-mgp64
-mfp64
Размеры регистров обычно определяются на основе ISA и ABI, но эти флаги принудительно задают
определенный набор регистров, которые всегда будут иметь размер 64 бита. -mgp64 управляет
размером регистров общего назначения, а -mfp64 управляет размером регистров с плавающей точкой.

-mfpxx
Использование этого флага в сочетании с -mabi=32 включает вариант ABI, который будет правильно
работать с регистрами с плавающей точкой, которые имеют размер 32 или 64 бита.

-modd-spreg
-mno-odd-spreg
Разрешить использование операций с плавающей точкой на регистрах одинарной точности с нечетными
номерами, когда это поддерживается ISA. -mfpxx подразумевает -mno-odd-spreg, в противном случае
по умолчанию используется -modd-spreg.

-mips16
-no-mips16
Генерировать код для процессора MIPS 16. Это эквивалентно размещению ".module mips16" в начале
файла ассемблера. -no-mips16 отключает эту опцию.

-mmips16e2
-mno-mips16e2
Разрешить использование инструкций MIPS16e2 в режиме MIPS16. Это эквивалентно размещению
".module mips16e2" в начале файла ассемблера. -mno-mips16e2 отключает эту опцию.

-mmicromips
-mno-micromips
Генерировать код для процессора microMIPS. Это эквивалентно размещению ".module micromips" в
начале файла ассемблера. -mno-micromips отключает эту опцию. Это эквивалентно размещению
".module nomicromips" в начале файла ассемблера.

-msmartmips
-mno-smartmips
Включает расширение SmartMIPS для набора инструкций MIPS32. Это эквивалентно размещению
".module smartmips" в начале файла ассемблера. -mno-smartmips отключает эту опцию.

-mips3d
-no-mips3d
Генерировать код для расширения MIPS-3D Application Specific. Это сообщает ассемблеру, что нужно
принимать инструкции MIPS-3D. -no-mips3d отключает эту опцию.

-mdmx
-no-mdmx
Генерировать код для расширения MDMX Application Specific. Это сообщает ассемблеру, что нужно
принимать инструкции MDMX. -no-mdmx отключает эту опцию.

-mdsp
-mno-dsp
Генерировать код для расширения DSP Release 1 Application Specific. Это сообщает ассемблеру, что
нужно принимать инструкции DSP Release 1. -mno-dsp отключает эту опцию.

-mdspr2
-mno-dspr2
Генерировать код для расширения DSP Release 2 Application Specific. Эта опция подразумевает
-mdsp. Это сообщает ассемблеру, что нужно принимать инструкции DSP Release 2. -mno-dspr2
отключает эту опцию.

-mdspr3
-mno-dspr3
Генерировать код для расширения DSP Release 3 Application Specific. Эта опция подразумевает
-mdsp и -mdspr2. Это сообщает ассемблеру, что нужно принимать инструкции DSP Release 3.
-mno-dspr3 отключает эту опцию.

-mmsa
-mno-msa

Генерировать код для расширения MIPS SIMD. Это сообщает ассемблеру, что он должен принимать инструкции MSA. -mno-msa отключает эту опцию.

-mxpa
-mno-xpa

Генерировать код для расширения MIPS eXtended Physical Address (XPA). Это сообщает ассемблеру, что он должен принимать инструкции XPA. -mno-xpa отключает эту опцию.

-mmt
-mno-mt

Генерировать код для прикладного расширения MT. Это сообщает ассемблеру, что он должен принимать инструкции MT. -mno-mt отключает эту опцию.

-mmcu
-mno-mcu

Генерировать код для прикладного расширения MCU. Это сообщает ассемблеру, что он должен принимать инструкции MCU. -mno-mcu отключает эту опцию.

-mcrc
-mno-crc

Генерировать код для прикладного расширения MIPS Cyclic Redundancy Check (CRC). Это сообщает ассемблеру, что он должен принимать инструкции CRC. -mno-crc отключает эту опцию.

-mginv
-mno-ginv

Генерировать код для прикладного расширения Global INValidate (GINV). Это сообщает ассемблеру, что он должен принимать инструкции GINV. -mno-ginv отключает эту опцию.

-mloongson-mmi
-mno-loongson-mmi

Генерировать код для прикладного расширения Loongson MultiMedia extensions Instructions (MMI). Это сообщает ассемблеру, что он должен принимать инструкции MMI. -mno-loongson-mmi отключает эту опцию.

-mloongson-cam
-mno-loongson-cam

Генерировать код для инструкций Loongson Content Address Memory (CAM). Это сообщает ассемблеру, что он должен принимать инструкции Loongson CAM. -mno-loongson-cam отключает эту опцию.

-mloongson-ext
-mno-loongson-ext

Генерировать код для инструкций Loongson EXTensions (EXT). Это сообщает ассемблеру, что он должен принимать инструкции Loongson EXT. -mno-loongson-ext отключает эту опцию.

-mloongson-ext2
-mno-loongson-ext2

Генерировать код для инструкций Loongson EXTensions R2 (EXT2). Эта опция подразумевает -mloongson-ext. Это сообщает ассемблеру, что он должен принимать инструкции Loongson EXT2. -mno-loongson-ext2 отключает эту опцию.

-minsn32
-mno-insn32

Использовать только 32-битные кодировки инструкций при генерации кода для процессора microMIPS. Эта опция запрещает использование любых 16-битных инструкций. Это эквивалентно размещению ".set insn32" в начале файла ассемблера. -mno-insn32 отключает эту опцию. Это эквивалентно размещению ".set noinsn32" в начале файла ассемблера. По умолчанию выбрано -mno-insn32, что позволяет использовать все инструкции.

--construct-floats
--no-construct-floats

Опция --no-construct-floats отключает создание чисел с плавающей точкой двойной точности путем загрузки двух половин значения в два регистра с плавающей точкой одинарной точности, которые образуют регистр двойной точности. По умолчанию включена опция --construct-floats, что позволяет создавать такие числа с плавающей точкой.


--relax-branch
--no-relax-branch

Опция --relax-branch включает возможность "расслабления" переходов, выходящих за допустимый диапазон. По умолчанию используется --no-relax-branch, при котором любые переходы, выходящие за допустимый диапазон, вызывают ошибку.

-mignore-branch-isa
-mno-ignore-branch-isa

Игнорировать проверки переходов на предмет недопустимых переключений между режимами ISA. Семантика переходов не предусматривает переключение режимов ISA, поэтому в большинстве случаев режим ISA, для которого закодирован переход, должен совпадать с режимом ISA целевой метки. Таким образом, в GAS реализованы проверки, которые при сборке переходов проверяют, совпадают ли эти два режима ISA. Опция -mignore-branch-isa отключает эти проверки. По умолчанию используется -mno-ignore-branch-isa, при которой любые недопустимые переходы, требующие переключения между режимами ISA, вызывают ошибку.

-mnan=encoding

Выберите формат кодирования NaN в соответствии со стандартом IEEE 754-2008 (-mnan=2008) или устаревший формат (-mnan=legacy). Последний является значением по умолчанию.

--emulation=name

Эта опция ранее использовалась для переключения между выходными форматами ELF и ECOFF для целевых платформ, таких как IRIX 5, которые поддерживали оба формата. Поддержка MIPS ECOFF была удалена в GAS 2.24, поэтому теперь эта опция имеет мало смысла. Она сохранена для обратной совместимости.

Доступные имена конфигураций: mipself, mipslelf и mipsbelf. Выбор mipself теперь не имеет никакого эффекта, поскольку выход всегда в формате ELF. mipslelf и mipsbelf выбирают вывод в формате little- и big-endian соответственно, но теперь предпочтительными опциями являются -EL и -EB.

-nocpp
as игнорирует эту опцию. Она принимается для совместимости с родными инструментами.

--trap
--no-trap
--break
--no-break

Управление способом обработки переполнения при умножении и деления на ноль. --trap или --no-break (эквивалентные опции) вызывают исключение (и работают только для архитектур с уровнем Instruction Set Architecture 2 и выше); --break или --no-trap (также эквивалентные опции, и являются значениями по умолчанию) вызывают исключение типа "break".

-n Когда используется эта опция, as будет выдавать предупреждение каждый раз, когда она генерирует инструкцию nop из макроса.

Следующие опции доступны, когда as настроен для процессора LoongArch.

-fpic
-fPIC

Генерировать позиционно-независимый код.

-fno-pic

Не генерировать позиционно-независимый код (по умолчанию).

Следующие опции доступны, когда as настроен для процессора Meta.

"-mcpu=metac11"

Генерировать код для Meta 1.1.

"-mcpu=metac12"

Генерировать код для Meta 1.2.

"-mcpu=metac21"

Генерировать код для Meta 2.1.

"-mfpu=metac21"

Разрешить использование аппаратного блока FPU процессора Meta 2.1.

См. страницы документации для получения информации о специфических для MMIX опциях.

Следующие опции доступны, когда as настроен для процессора NDS32.

"-O1"

Оптимизировать для производительности.

"-Os"

Оптимизировать для размера.

"-EL"

Генерировать данные в формате little-endian.

"-EB"

Генерировать данные в формате little-endian.

"-mpic"

Генерировать PIC.

"-mno-fp-as-gp-relax"

Отключить оптимизацию fp-as-gp для этого файла.

"-mb2bb-relax"

Оптимизация для последовательных переходов.


"-mno-all-relax"
Отключает все виды оптимизации для данного файла.

"-march=<имя_архитектуры>"
Генерирует код для указанной архитектуры <имя_архитектуры>, например: v3, v3j, v3m, v3f, v3s, v2, v2j, v2f, v2s.

"-mbaseline=<базовая_версия>"
Генерирует код для указанной базовой версии <базовая_версия>, например: v2, v3, v3m.

"-mfpu-freg=FREG"
Указывает конфигурацию FPU.

"0      8 SP /  4 DP регистров"
"1     16 SP /  8 DP регистров"
"2     32 SP / 16 DP регистров"
"3     32 SP / 32 DP регистров"
"-mabi=abi"
Указывает версию ABI <abi>, например: v1, v2, v2fp, v2fpp.

"-m[no-]mac"
Включает/отключает поддержку инструкций умножения.

"-m[no-]div"
Включает/отключает поддержку инструкций деления.

"-m[no-]16bit-ext"
Включает/отключает поддержку 16-битного расширения.

"-m[no-]dx-regs"
Включает/отключает использование регистров d0/d1.

"-m[no-]perf-ext"
Включает/отключает расширение для повышения производительности.

"-m[no-]perf2-ext"
Включает/отключает расширение для повышения производительности 2.

"-m[no-]string-ext"
Включает/отключает расширение для работы со строками.

"-m[no-]reduced-regs"
Включает/отключает конфигурацию с уменьшенным количеством регистров (GPR16).

"-m[no-]audio-isa-ext"
Включает/отключает расширение AUDIO ISA.

"-m[no-]fpu-sp-ext"
Включает/отключает расширение FPU SP.

"-m[no-]fpu-dp-ext"
Включает/отключает расширение FPU DP.

"-m[no-]fpu-fma"
Включает/отключает инструкции FPU fused-multiply-add.

"-mall-ext"
Включает все расширения и поддержку инструкций.

Следующие опции доступны, когда ассемблер настроен для процессора PowerPC.

-a32
Генерирует ELF32 или XCOFF32.

-a64
Генерирует ELF64 или XCOFF64.

-K PIC
Устанавливает флаг EF\_PPC\_RELOCATABLE\_LIB в ELF.

-mpwrx | -mpwr2
Генерирует код для POWER/2 (RIOS2).

-mpwr
Генерирует код для POWER (RIOS1).

-m601
Генерирует код для PowerPC 601.

-mppc, -mppc32, -m603, -m604
Генерирует код для PowerPC 603/604.

-m403, -m405
Генерирует код для PowerPC 403/405.

-m440
Генерирует код для PowerPC 440. BookE и некоторые инструкции 405.

-m464
Генерирует код для PowerPC 464.

-m476
Генерирует код для PowerPC 476.

-m7400, -m7410, -m7450, -m7455
Генерирует код для PowerPC 7400/7410/7450/7455.

-m750cl, -mgekko, -mbroadway
Генерирует код для PowerPC 750CL/Gekko/Broadway.

-m821, -m850, -m860
Генерирует код для PowerPC 821/850/860.

-mppc64, -m620
Генерирует код для PowerPC 620/625/630.

-me200z2, -me200z4
Генерирует код для вариантов e200, e200z2 с LSP, e200z4 со SPE.

-me300
Генерирует код для семейства PowerPC e300.

-me500, -me500x2
Генерирует код для ядра Motorola e500.

-me500mc
Генерирует код для ядра Freescale e500mc.

-me500mc64
Генерирует код для ядра Freescale e500mc64.

-me5500
Генерирует код для ядра Freescale e5500.

-me6500
Генерирует код для ядра Freescale e6500.

-mlsp
Включает инструкции LSP. (Отключает SPE и SPE2.)

-mspe
Генерирует код для инструкций Motorola SPE. (Отключает LSP.)

-mspe2
Генерирует код для инструкций Freescale SPE2. (Отключает LSP.)

-mtitan
Генерирует код для ядра AppliedMicro Titan.

-mppc64bridge
Генерирует код для PowerPC 64, включая инструкции для моста.

-mbooke
Генерирует код для 32-битной версии BookE.

-ma2

Генерировать код для архитектуры A2.

-maltivec

Генерировать код для процессоров с инструкциями AltiVec.

-mvle

Генерировать код для процессоров с инструкциями Freescale PowerPC VLE.

-mvsx

Генерировать код для процессоров с векторно-скалярными (VSX) инструкциями.

-mhtm

Генерировать код для процессоров с инструкциями аппаратной транзакционной памяти.

-mpower4, -mpwr4

Генерировать код для архитектуры Power4.

-mpower5, -mpwr5, -mpwr5x

Генерировать код для архитектуры Power5.

-mpower6, -mpwr6

Генерировать код для архитектуры Power6.

-mpower7, -mpwr7

Генерировать код для архитектуры Power7.

-mpower8, -mpwr8

Генерировать код для архитектуры Power8.

-mpower9, -mpwr9

Генерировать код для архитектуры Power9.

-mpower10, -mpwr10

Генерировать код для архитектуры Power10.

-mpower11, -mpwr11

Генерировать код для архитектуры Power11.

-mfuture

Генерировать код для «будущей» архитектуры.

-mcell

Генерировать код для архитектуры Cell Broadband Engine.

-mcom

Генерировать общие инструкции Power/PowerPC.

-many

Генерировать код для любой архитектуры (PWR/PWRX/PPC).

-mregnames

Разрешить использование символических имен для регистров.

-mno-regnames

Не разрешать использование символических имен для регистров.

-mrelocatable

Поддержка опции GCC -mrelocatable.

-mrelocatable-lib

Поддержка опции GCC -mrelocatable-lib.

-memb

Установить бит PPC_EMB в ELF-флагах.

-mlittle, -mlittle-endian, -le

Генерировать код для машины с little-endian.

-mbig, -mbig-endian, -be

Генерировать код для машины с big-endian.

-nops=count

Если директива выравнивания вставляет более count инструкций NOP, поместите ветвление в начало, чтобы пропустить выполнение этих инструкций NOP.

Следующие опции доступны при настройке as для процессора RISC-V.

-fpic
-fPIC

Генерировать позиционно-независимый код.

-fno-pic

Не генерировать позиционно-независимый код (по умолчанию).

-march=ISA|Profiles|Profiles_ISA

Выбрать базовый набор инструкций (ISA), как указано в ISA или Profiles или Profiles_ISA. Например, -march=rv32ima, -march=RVI20U64, -march=RVI20U64_d. Если эта опция и атрибуты архитектуры не установлены, ассемблер проверит настройку по умолчанию --with-arch=ISA.

-misa-spec=ISAspec

Выбрать версию спецификации ISA по умолчанию. Если версия ISA не установлена с помощью -march, ассемблер поможет установить версию в соответствии с выбранной спецификацией по умолчанию. Если эта опция не установлена, ассемблер проверит настройку по умолчанию --with-isa-spec=ISAspec.

-mpriv-spec=PRIVspec

Выбрать версию спецификации привилегий. Мы можем определить, является ли CSR допустимым или нет, в соответствии с выбранной спецификацией. Если эта опция и атрибуты привилегий не установлены, ассемблер проверит настройку по умолчанию --with-priv-spec=PRIVspec.

-mabi=ABI

Выбирает ABI, который может быть "ilp32" или "lp64", с необязательным добавлением "f", "d" или "q", чтобы указать одно-, двойную или четырехкратную точность операций с плавающей точкой, или без них, или "e", чтобы указать соглашение о вызовах с программной реализацией операций с плавающей точкой ("e" указывает на ABI RVE с программной реализацией).


-mrelax
Используйте возможности оптимизации линковщика для уменьшения количества инструкций, необходимых для получения адресов символов. (по умолчанию)

-mno-relax
Не выполняйте оптимизацию линковщиком.

-march-attr
Создайте содержимое раздела атрибутов RISC-V ELF, если директивы `.attribute` не заданы. Этот раздел используется для записи информации, которую линкеру или загрузчику необходимо проверить на совместимость. Эта информация включает строку ISA, требование к выравниванию стека, доступ к памяти без выравнивания и основную, дополнительную и вспомогательную версии спецификации привилегий.

-mno-arch-attr
Не создавайте раздел атрибутов RISC-V ELF, если директивы `.attribute` не заданы.

-mcsr-check
Включите проверку CSR для зависимых от ISA CSR и CSR, доступных только для чтения. CSR, зависимые от ISA, действительны только при установке определенного ISA. В CSR, доступные только для чтения, нельзя записывать с помощью инструкций CSR.

-mno-csr-check
Не выполняйте проверку CSR.

-mlittle-endian
Создайте код для машины с малой эндианностью.

-mbig-endian
Создайте код для машины с большой эндианностью.

Смотрите страницы справки для документации по специфичным для RX опциям.

Следующие опции доступны, когда as настроен для семейства процессоров s390.

-m31
-m64
Выберите размер слова, либо 31/32 бита, либо 64 бита.

-mesa
-mzarch
Выберите режим архитектуры, либо архитектура Enterprise System Architecture (ESA), либо режим z/Architecture (zarch).

-march=processor
Укажите целевой вариант процессора s390: g5 (или arch3), g6, z900 (или arch5), z990 (или arch6), z9-109, z9-ec (или arch7), z10 (или arch8), z196 (или arch9), zEC12 (или arch10), z13 (или arch11), z14 (или arch12), z15 (или arch13), z16 (или arch14) или z17 (или arch15).

-mregnames
-mno-regnames
Разрешить или запретить символические имена для регистров.

-mwarn-areg-zero
Предупреждайте, когда операнд для базового или индексного регистра указан, но его значение равно нулю.

-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch
Управляет тем, выполняет ли ассемблер проверки типов имен регистров и генерирует ли он предупреждающее сообщение в случае несоответствия типу операнда регистра. По умолчанию (что можно восстановить, используя аргумент `relaxed`) выполняются смягченные проверки типов имен регистров, которые разрешают указывать имена регистров с плавающей точкой (%f0-%f15) в качестве аргументов для векторных регистров (%v0-%v15) и имена векторных регистров (%v0-%v15) в качестве аргументов для регистров с плавающей точкой (%f0-%f15). Это допустимо, поскольку регистры с плавающей точкой встроены в нижнюю половину векторных регистров. При использовании аргумента `strict` выполняются строгие проверки типов имен регистров. Аргумент `no`, который эквивалентен `-mno-warn-regtype-mismatch`, отключает любые проверки типов имен регистров.

Следующие опции доступны, когда as настроен для процессора TMS320C6000.


-march=arch
Включить (только) инструкции из архитектуры arch. По умолчанию разрешены все инструкции.

Следующие значения для arch являются допустимыми: "c62x", "c64x", "c64x+", "c67x", "c67x+", "c674x".

-mdsbt
-mno-dsbt
Опция -mdsbt заставляет ассемблер генерировать атрибут "Tag_ABI_DSBT" со значением 1, указывающим, что код использует DSBT-адресацию. Опция -mno-dsbt, которая используется по умолчанию, заставляет тег иметь значение 0, указывающее, что код не использует DSBT-адресацию. Линкер выдаст предупреждение, если объекты разных типов (DSBT и не-DSBT) будут скомпонованы вместе.

-mpid=no
-mpid=near
-mpid=far
Опция -mpid= заставляет ассемблер генерировать атрибут "Tag_ABI_PID" со значением, указывающим форму адресации данных, используемую в коде. -mpid=no, по умолчанию, указывает на зависимую от положения адресацию данных, -mpid=near указывает на независимую от положения адресацию с доступом к GOT с использованием ближней DP-адресации, а -mpid=far указывает на независимую от положения адресацию с доступом к GOT с использованием дальней DP-адресации. Линкер выдаст предупреждение, если объекты, скомпилированные с разными настройками этой опции, будут скомпонованы вместе.

-mpic
-mno-pic
Опция -mpic заставляет ассемблер генерировать атрибут "Tag_ABI_PIC" со значением 1, указывающим, что код использует независимую от положения адресацию кода. Опция -mno-pic, которая используется по умолчанию, заставляет тег иметь значение 0, указывающее на зависимую от положения адресацию кода. Линкер выдаст предупреждение, если объекты разных типов (зависимые от положения и независимые от положения) будут скомпонованы вместе.

-mbig-endian
-mlittle-endian
Создать код для указанной системы организации байтов. По умолчанию используется little-endian.

Следующие опции доступны, когда as настроен для процессора TILE-Gx.

-m32 | -m64
Выбрать размер слова, либо 32 бита, либо 64 бита.

-EB | -EL
Выбрать порядок байтов, либо big-endian (-EB), либо little-endian (-EL).

Следующая опция доступна, когда as настроен для процессора Visium.

-mtune=arch
Эта опция указывает целевую архитектуру. Если предпринята попытка скомпилировать инструкцию, которая не будет выполняться на целевой архитектуре, ассемблер выдаст сообщение об ошибке.

Следующие имена распознаются: "mcm24", "mcm", "gr5", "gr6".

Следующие опции доступны, когда as настроен для процессора Xtensa.

--text-section-literals | --no-text-section-literals
Управление обработкой пулов литералов. По умолчанию используется --no-text-section-literals, который помещает литералы в отдельные разделы в выходном файле. Это позволяет разместить пул литералов в RAM/ROM данных. С опцией --text-section-literals литералы перемежаются в текстовом разделе, чтобы держать их как можно ближе к своим ссылкам. Это может быть необходимо для больших файлов ассемблера, где литералы в противном случае будут находиться за пределами досягаемости инструкций "L32R" в текстовом разделе. Литералы группируются в пулы после директив ".literal_position" или перед инструкциями "ENTRY". Эти опции влияют только на литералы, на которые ссылаются посредством PC-относительных инструкций "L32R"; литералы для абсолютных инструкций "L32R" обрабатываются отдельно.

--auto-litpools | --no-auto-litpools

Управляет обработкой пулов литералов. По умолчанию используется --no-auto-litpools, при котором, если не используется --text-section-literals, литералы помещаются в отдельные секции в выходном файле. Это позволяет разместить пул литералов в оперативной или постоянной памяти. При использовании --auto-litpools литералы перемежаются в секции кода, чтобы они находились как можно ближе к своим ссылкам; явные директивы ".literal_position" не требуются. Это может быть необходимо для очень больших функций, где единый пул литералов в начале функции может быть недоступен для инструкций "L32R" в конце. Эти опции влияют только на литералы, на которые ссылаются инструкции "L32R" с относительным адресом; литералы для инструкций "L32R" в абсолютном режиме обрабатываются отдельно. При совместном использовании с --text-section-literals опция --auto-litpools имеет приоритет.

--absolute-literals | --no-absolute-literals

Указывает ассемблеру, используют ли инструкции "L32R" абсолютную или относительную адресацию. Если процессор включает опцию абсолютной адресации, по умолчанию используются абсолютные релокации "L32R". В противном случае можно использовать только релокации "L32R" с относительной адресацией.

--target-align | --no-target-align

Включает или отключает автоматическое выравнивание для уменьшения штрафов за переходы в коде, но за счет увеличения размера кода. Эта оптимизация включена по умолчанию. Обратите внимание, что ассемблер всегда выравнивает инструкции, такие как "LOOP", которые имеют фиксированные требования к выравниванию.

--longcalls | --no-longcalls

Включает или отключает преобразование инструкций вызова, чтобы разрешить вызовы на большее расстояние по адресам. Эта опция должна использоваться, когда целевые адреса вызовов могут быть за пределами диапазона. Это может ухудшить как размер кода, так и производительность, но компоновщик обычно может оптимизировать ненужные накладные расходы, когда вызов оказывается в пределах диапазона. По умолчанию используется --no-longcalls.

--transform | --no-transform

Включает или отключает все преобразования инструкций Xtensa, выполняемые ассемблером, включая как релаксацию, так и оптимизацию. По умолчанию используется --transform; --no-transform следует использовать только в тех редких случаях, когда инструкции должны быть точно такими, как указано в исходном коде ассемблера. Использование --no-transform приводит к тому, что недопустимые операнды инструкций вызывают ошибки.

--rename-section oldname=newname

Переименовывает секцию oldname в newname. Эту опцию можно использовать несколько раз для переименования нескольких секций.

--trampolines | --no-trampolines

Включает или отключает преобразование инструкций перехода, чтобы разрешить переходы на большее расстояние по адресам. Эту опцию следует использовать, когда целевые адреса переходов могут быть за пределами диапазона. Если таких переходов нет, эта опция не влияет на размер кода или производительность. По умолчанию используется --trampolines.


--abi-windowed | --abi-call0

Выберите тег ABI, который будет записан в раздел ".xtensa.info". Тег ABI указывает на ABI скомпилированного кода. При попытке связать объектные файлы с несовместимыми тегами ABI, компоновщик выдаст предупреждение. ABI по умолчанию выбирается конфигурацией ядра Xtensa.

Следующие параметры доступны при настройке для процессора Z80.

@chapter Функции, зависящие от Z80

Параметры командной строки

-march=CPU[-EXT...][+EXT...]

Этот параметр определяет целевой процессор. Если будет предпринята попытка скомпилировать инструкцию, которая не будет выполняться на целевом процессоре, ассемблер выдаст сообщение об ошибке. Следующие имена процессоров распознаются: "z80", "z180", "ez80", "gbz80", "z80n", "r800". В дополнение к основному набору инструкций, ассемблер может быть настроен для поддержки некоторых дополнительных мнемонических кодов. Например, "-march=z180+sli+infc" расширяет z180 инструкциями SLI и IN F,(C). Следующие расширения в настоящее время поддерживаются: "full" (все известные инструкции), "adl" (режим ADL CPU по умолчанию, только для eZ80), "sli" (инструкция, известная как SLI, SLL или SL1), "xyhl" (инструкции с половинами индексных регистров: IXL, IXH, IYL, IYH), "xdcb" (инструкции, такие как RotOp (II+d),R и BitOp n,(II+d),R), "infc" (инструкция IN F,(C) или IN (C)), "outc0" (инструкция OUT (C),0). Обратите внимание, что вместо расширения базового набора инструкций, мнемонические коды расширений, начинающиеся с "-", отменяют соответствующую функциональность: "-march=z80-full+xyhl" сначала удаляет все расширения по умолчанию и добавляет поддержку только для половин индексных регистров.

Если этот параметр не указан, предполагается "-march=z80+xyhl+infc".

-local-prefix=prefix

Пометьте все метки, указанные префиксом, как локальные. Однако такую метку можно явно пометить как глобальную в коде. Этот параметр не изменяет префикс локальных меток по умолчанию ".L", он просто добавляет новый.

-colonless

Разрешите метки без двоеточия. Все символы в начале строки считаются метками.

-sdcc

Принимайте код ассемблера, сгенерированный SDCC.

-fp-s=FORMAT

Формат чисел с плавающей запятой одинарной точности. По умолчанию: ieee754 (32 бита).

-fp-d=FORMAT

Формат чисел с плавающей запятой двойной точности. По умолчанию: ieee754 (64 бита).

ССЫЛКИ

gcc(1), ld(1) и разделы Info для binutils и ld.

АВТОРСКИЕ ПРАВА

Авторское право (c) 1991-2025 Free Software Foundation, Inc.

Предоставляется разрешение на копирование, распространение и/или изменение этого документа в соответствии с условиями лицензии GNU Free Documentation License, версии 1.3 или любой более поздней версии, опубликованной Free Software Foundation; без неизменяемых разделов, без текстов на обложке и без текстов на задней обложке. Копия лицензии включена в раздел под названием "GNU Free Documentation License".