AS: el ensamblador portátil GNU.
SINOPSIS
as [-a[cdghilns][=archivo]]
[--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] [@ARCHIVO]
[target-options]
[--|archivos ...]
DESTINO
Opciones de destino AArch64: [-EB|-EL] [-mabi=ABI]
Opciones de destino Alpha: [-mcpu] [-mdebug | -no-mdebug] [-replace | -noreplace] [-relax] [-g] [-Gsize] [-F] [-32addr]
Opciones de destino ARC: [-mcpu=cpu] [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] [-mcode-density] [-mrelax] [-EB|-EL]
Opciones de destino ARM: [-mcpu=procesador[+extensión...]] [-march=arquitectura[+extensión...]] [-mfpu=formato-punto-flotante] [-mfloat-abi=abi] [-meabi=ver] [-mthumb] [-EB|-EL] [-mapcs-32|-mapcs-26|-mapcs-float| -mapcs-reentrant] [-mthumb-interwork] [-k]
Opciones de destino Blackfin: [-mcpu=procesador[-sirevisión]] [-mfdpic] [-mno-fdpic] [-mnopic]
Opciones de destino BPF: [-EL] [-EB]
Opciones de destino CRIS: [--underscore | --no-underscore] [--pic] [-N] [--emulation=criself | --emulation=crisaout] [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
Opciones de destino 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]
Opciones de destino D10V: [-O]
Opciones de destino D30V: [-O|-n|-N]
Opciones de destino EPIPHANY: [-mepiphany|-mepiphany16]
Opciones de destino H8/300: [-h-tick-hex]
Opciones de destino i386: [--32|--x32|--64] [-n] [-march=CPU[+EXTENSION...]] [-mtune=CPU]
Opciones de destino 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]
Opciones de destino IP2K: [-mip2022|-mip2022ext]
Opciones de destino M32C: [-m32c|-m16c] [-relax] [-h-tick-hex]
Opciones de destino M32R: [--m32rx|--[no-]warn-explicit-parallel-conflicts| --W[n]p]
Opciones de destino M680X0: [-l] [-m68000|-m68010|-m68020|...]
Opciones de destino 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]
Opciones de destino MCORE: [-jsri2bsr] [-sifilter] [-relax] [-mcpu=[210|340]]
Opciones de destino Meta: [-mcpu=cpu] [-mfpu=cpu] [-mdsp=cpu] Opciones de destino MICROBLAZE: [-mlittle-endian] [-mbig-endian]
Opciones de destino MIPS: [-nocpp] [-EL] [-EB] [-O[nivel de optimización]] [-g[nivel de depuración]] [-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]
Opciones de destino MMIX: [--fixed-special-register-names] [--globalize-symbols] [--gnu-syntax] [--relax] [--no-predefined-symbols] [--no-expand] [--no-merge-gregs] [-x] [--linker-allocated-gregs]
Opciones de destino 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]
Opciones de destino PDP11: [-mpic|-mno-pic] [-mall] [-mno-extensions] [-mextension|-mno-extension] [-mcpu] [-mmachine]
Opciones de destino picoJava: [-mb|-me]
Opciones de destino 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]
Opciones de destino PRU: [-link-relax] [-mnolink-relax] [-mno-warn-regname-label]
Opciones de destino RISC-V: [-fpic|-fPIC|-fno-pic] [-march=ISA|Profiles|Profiles_ISA] [-mabi=ABI] [-mlittle-endian|-mbig-endian]
Opciones de destino RL78: [-mg10] [-m32bit-doubles|-m64bit-doubles]
Opciones de destino 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]
Opciones de destino 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]
Opciones de destino SCORE: [-EB][-EL][-FIXDD][-NWARN] [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] [-march=score7][-march=score3] [-USE_R1][-KPIC][-O0][-G num][-V]
Opciones de destino 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]
Opciones de destino TIC54X:
[-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
[-merrors-to-file
Opciones de destino TIC6X: [-march=arch] [-mbig-endian|-mlittle-endian] [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] [-mpic|-mno-pic]
Opciones de destino TILE-Gx: [-m32|-m64][-EB][-EL]
Opciones de destino Visium: [-mtune=arch]
Opciones de destino 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]
Opciones de destino Z80: [-march=CPU[-EXT][+EXT]] [-local-prefix=PREFIX] [-colonless] [-sdcc] [-fp-s=FORMAT] [-fp-d=FORMAT]
DESCRIPCIÓN
GNU as es en realidad una familia de ensambladores. Si ha utilizado (o ha utilizado) el ensamblador GNU en una arquitectura, debería encontrar un entorno bastante similar cuando lo utilice en otra arquitectura. Cada versión tiene mucho en común con las demás, incluidos los formatos de archivo objeto, la mayoría de las directivas del ensamblador (a menudo llamadas pseudo-operaciones) y la sintaxis del ensamblador.
as está diseñado principalmente para ensamblar la salida del compilador GNU C "gcc" para su uso por el enlazador "ld". Sin embargo, hemos intentado que as ensamble correctamente todo lo que otros ensambladores para la misma máquina ensamblarían. Cualquier excepción se documenta explícitamente. Esto no significa que as siempre utilice la misma sintaxis que otro ensamblador para la misma arquitectura; por ejemplo, conocemos varias versiones incompatibles de la sintaxis del lenguaje de ensamblaje 680x0.
Cada vez que ejecuta as, ensambla exactamente un programa fuente. El programa fuente está compuesto por uno o más archivos. (La entrada estándar también es un archivo).
Le proporciona a as una línea de comandos que tiene cero o más nombres de archivo de entrada. Los archivos de entrada se leen (de izquierda a derecha). Un argumento de línea de comandos (en cualquier posición) que no tiene un significado especial se considera un nombre de archivo de entrada.
Si le proporciona a as cero nombres de archivo, intenta leer un archivo de entrada desde la entrada estándar de as, que normalmente es su terminal. Es posible que deba escribir ctl-D para indicarle a as que no hay más programa que ensamblar.
Utilice -- si necesita nombrar explícitamente el archivo de entrada estándar en su línea de comandos.
Si el origen está vacío, as produce un archivo objeto pequeño y vacío.
as puede escribir mensajes de advertencia y error en el archivo de error estándar (normalmente su terminal). Esto no debería ocurrir cuando un compilador ejecuta as automáticamente. Las advertencias informan sobre una suposición que se hizo para que as pudiera seguir ensamblando un programa defectuoso; los errores informan sobre un problema grave que detiene el ensamblaje.
Si está invocando as a través del compilador GNU C, puede utilizar la opción -Wa para pasar argumentos al ensamblador. Los argumentos del ensamblador deben estar separados entre sí (y de -Wa) por comas. Por ejemplo:
gcc -c -g -O -Wa,-alh,-L file.c
Esto pasa dos opciones al ensamblador: -alh (genera un listado en la salida estándar con el origen de alto nivel y el ensamblaje) y -L (conserva los símbolos locales en la tabla de símbolos).
Normalmente, no necesita utilizar este mecanismo -Wa, ya que muchas opciones de la línea de comandos del compilador se pasan automáticamente al ensamblador mediante el compilador. (Puede llamar al controlador del compilador GNU con la opción -v para ver exactamente qué opciones pasa a cada paso de la compilación, incluido el ensamblador).
OPCIONES
@archivo
Lee las opciones de la línea de comandos desde el archivo. Las opciones que se leen se insertan en lugar de la opción @archivo original. Si el archivo no existe, o no se puede leer, la opción se tratará literalmente y no se eliminará.
Las opciones en el archivo están separadas por espacios en blanco. Un carácter de espacio en blanco puede incluirse en una opción rodeando toda la opción entre comillas simples o dobles. Cualquier carácter (incluido una barra invertida) puede incluirse anteponiendo el carácter que se va a incluir con una barra invertida. El archivo puede contener en sí mismo opciones @archivo adicionales; todas estas opciones se procesarán recursivamente.
-a[cdghilmns]
Activa la generación de listados, de diversas maneras:
-ac omite las condicionales falsas
-ad omite las directivas de depuración
-ag incluye información general, como la versión y las opciones pasadas
-ah incluye el código fuente de alto nivel
-al incluye el ensamblador
-ali
incluye el ensamblador con ginsn
-am incluye las expansiones de macros
-an omite el procesamiento de formularios
-as incluye los símbolos
=archivo
establece el nombre del archivo de listado
Puedes combinar estas opciones; por ejemplo, usa -aln para generar un listado del ensamblador sin el procesamiento de formularios. La opción =archivo, si se usa, debe ser la última. Por sí sola, -a tiene como valor predeterminado -ahls.
--alternate
Comienza en modo macro alternativo.
--compress-debug-sections
Comprime las secciones de depuración DWARF utilizando zlib con SHF\_COMPRESSED del ABI ELF. El archivo objeto resultante puede no ser compatible con los enlazadores y utilidades de archivos objeto más antiguos. Ten en cuenta que si la compresión aumentara el tamaño de una sección determinada, esta no se comprimirá.
--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd
Estas opciones controlan cómo se comprimen las secciones de depuración DWARF. --compress-debug-sections=none es equivalente a --nocompress-debug-sections. --compress-debug-sections=zlib y --compress-debug-sections=zlib-gabi son equivalentes a --compress-debug-sections. --compress-debug-sections=zlib-gnu comprime las secciones de depuración DWARF utilizando el formato zlib-gnu obsoleto. Las secciones de depuración se renombran para que comiencen con .zdebug. --compress-debug-sections=zstd comprime las secciones de depuración DWARF utilizando zstd. Ten en cuenta que si la compresión realmente aumentara el tamaño de una sección, esta no se comprimirá ni se renombrará.
--nocompress-debug-sections
No comprimas las secciones de depuración DWARF. Normalmente, esta es la configuración predeterminada para todos los destinos, excepto para x86/x86\_64, pero se puede usar una opción de tiempo de configuración para anular esto.
-D Activa la depuración en los backends específicos del destino, si es compatible. De lo contrario, se ignora. Incluso si se ignora, esta opción se acepta para la compatibilidad de scripts con llamadas a otros ensambladores.
--debug-prefix-map old=new
Cuando se ensamblan archivos en el directorio old, registra la información de depuración describiéndolos como si estuvieran en new.
--defsym sym=valor
Define el símbolo sym para que tenga el valor valor antes de ensamblar el archivo de entrada. El valor debe ser una constante entera. Como en C, un prefijo 0x indica un valor hexadecimal y un prefijo 0 indica un valor octal. El valor del símbolo se puede anular dentro de un archivo fuente mediante el uso de una pseudoinstrucción ".set".
--dump-config
Muestra cómo está configurado el ensamblador y luego sale.
--elf-stt-common=no
--elf-stt-common=yes
Estas opciones controlan si el ensamblador ELF debe generar símbolos comunes con el tipo "STT\_COMMON". El valor predeterminado se puede controlar mediante una opción de tiempo de configuración --enable-elf-stt-common.
--emit-local-absolute
Emite incluso los símbolos absolutos (locales) predefinidos a la tabla de símbolos de salida. Tenga en cuenta que esta no es exactamente la opción opuesta a --strip-local-absolute.
--emulation=name
Si el ensamblador está configurado para admitir múltiples configuraciones de destino, esta opción se puede utilizar para seleccionar el formulario deseado.
-f "fast"---omite el preprocesamiento de espacios en blanco y comentarios (asume que la fuente es la salida del compilador).
-g
--gen-debug
Genera información de depuración para cada línea de código fuente del ensamblador utilizando el formato de depuración preferido por el destino. Actualmente, esto significa STABS, ECOFF o DWARF2. Cuando el formato de depuración es DWARF, se emite una sección ".debug_info" y ".debug_line" solo cuando el archivo de ensamblador no genera una por sí mismo.
--gstabs
Genera información de depuración stabs para cada línea de código fuente del ensamblador. Esto puede ayudar a la depuración del código ensamblador si el depurador puede manejarlo.
--gstabs+
Genera información de depuración stabs para cada línea de código fuente del ensamblador, con extensiones GNU que probablemente solo gdb puede manejar y que podrían hacer que otros depuradores fallen o se nieguen a leer su programa. Esto puede ayudar a la depuración del código ensamblador. Actualmente, la única extensión GNU es la ubicación del directorio de trabajo actual en el momento del ensamblaje.
--gdwarf-2
Genera información de depuración DWARF2 para cada línea de código fuente del ensamblador. Esto puede ayudar a la depuración del código ensamblador si el depurador puede manejarlo. Tenga en cuenta que esta opción solo es compatible con algunos destinos, no todos.
--gdwarf-3
Esta opción es la misma que la opción --gdwarf-2, excepto que permite la posibilidad de generar información de depuración adicional según la versión 3 de la especificación DWARF. Tenga en cuenta: habilitar esta opción no garantiza la generación de información adicional; la elección de hacerlo depende de cada destino.
--gdwarf-4
Esta opción es la misma que la opción --gdwarf-2, excepto que permite la posibilidad de generar información de depuración adicional según la versión 4 de la especificación DWARF. Tenga en cuenta: habilitar esta opción no garantiza la generación de información adicional; la elección de hacerlo depende de cada destino.
--gdwarf-5
Esta opción es la misma que la opción --gdwarf-2, excepto que permite la posibilidad de generar información de depuración adicional según la versión 5 de la especificación DWARF. Tenga en cuenta: habilitar esta opción no garantiza la generación de información adicional; la elección de hacerlo depende de cada destino.
--gdwarf-sections
En lugar de crear una sección .debug_line, crea una serie de secciones .debug_line.foo donde foo es el nombre de la sección de código correspondiente. Por ejemplo, una sección de código llamada .text.func tendrá su información de número de línea dwarf colocada en una sección llamada .debug_line.text.func. Si la sección de código se llama simplemente .text, la sección de línea de depuración seguirá llamándose simplemente .debug_line sin ningún sufijo.
--gdwarf-cie-version=version
Controla qué versión de las Entradas de Información Común (CIE) de DWARF se producen. Cuando esta
opción no se especifica, el valor predeterminado es la versión 1, aunque algunos destinos pueden modificar este valor predeterminado.
Otros valores posibles para version son 3 o 4.
--generate-missing-build-notes=yes
--generate-missing-build-notes=no
Estas opciones controlan si el ensamblador ELF debe generar atributos GNU Build en forma de notas si
no están presentes en las fuentes de entrada. El valor predeterminado se puede controlar mediante la
opción de configuración --enable-generate-build-notes.
--gsframe
--gsframe
--gsframe=no
--gsframe=yes
Crea una sección .sframe a partir de directivas CFI. La opción explícita --gsframe=yes se comporta
de la misma manera que --gsframe. La generación se puede suprimir con --gsframe=no. El valor predeterminado se puede
controlar mediante una opción de configuración --enable-default-sframe.
--hash-size N
Ignorado. Se admite para la compatibilidad con la línea de comandos con otros ensambladores.
--help
Imprime un resumen de las opciones de la línea de comandos y sale.
--target-help
Imprime un resumen de todas las opciones específicas del destino y sale.
--info
No suprime los mensajes informativos.
--no-info
Suprime los mensajes informativos.
-I dir
Agrega el directorio dir a la lista de búsqueda para las directivas ".include".
-J No advierte sobre el desbordamiento de enteros con signo.
-K Emite advertencias cuando se modifican las tablas de diferencias para desplazamientos largos.
-L
--keep-locals
Mantiene (en la tabla de símbolos) los símbolos locales. Estos símbolos comienzan con prefijos de etiquetas locales específicos del sistema, normalmente .L para los sistemas ELF o L para los sistemas a.out tradicionales.
--listing-lhs-width=number
Establece el ancho máximo, en palabras, de la columna de datos de salida para una lista de ensamblador en
number.
--listing-lhs-width2=number
Establece el ancho máximo, en palabras, de la columna de datos de salida para las líneas de continuación en una
lista de ensamblador en number.
--listing-rhs-width=number
Establece el ancho máximo de una línea de código fuente de entrada, según se muestra en una lista, en number bytes.
--listing-cont-lines=number
Establece el número máximo de líneas que se imprimen en una lista para una sola línea de entrada en number +
--multibyte-handling=allow
--multibyte-handling=warn
--multibyte-handling=warn-sym-only
--multibyte-handling=warn_sym_only
Controla cómo el ensamblador maneja los caracteres multibyte en la entrada. El valor predeterminado (que se puede restaurar mediante el argumento allow) es
permitir tales caracteres sin quejas. El uso del argumento warn hará que el ensamblador genere un mensaje de advertencia cada vez que se encuentre algún
carácter multibyte. El uso del argumento warn-sym-only solo provocará que se genere una advertencia cuando se defina un símbolo con un nombre que contenga caracteres multibyte. (Las referencias a símbolos no definidos no generarán una advertencia).
--no-pad-sections
Impide que el ensamblador rellene el final de las secciones de salida para que coincidan con la alineación de esa sección.
Por defecto, las secciones se rellenan, pero esto puede desperdiciar espacio, lo que podría ser un problema en los objetivos que tienen restricciones de memoria estrictas.
-o objfile
Especifica el nombre del archivo objeto de salida como objfile.
-R
Combina la sección de datos en la sección de texto.
--reduce-memory-overheads
Ignorado. Se admite para compatibilidad con herramientas que pasan la misma opción tanto al ensamblador como al enlazador.
--scfi=experimental
Esta opción controla si el ensamblador debe sintetizar CFI para la entrada escrita a mano. Si la entrada ya contiene algunas directivas CFI sintetizables, el ensamblador las ignora y emite una advertencia. Tenga en cuenta que "--scfi=experimental" no está pensado para usarse con código generado por el compilador, incluido el ensamblado en línea. Este soporte experimental está en desarrollo.
Solo se admite la ABI System V AMD64.
Cada función de entrada en el ensamblado debe comenzar con la directiva ".type" y, idealmente, debe cerrarse con una directiva ".size". Al usar SCFI, cada directiva ".type" indica al ensamblador que comience una nueva FDE (entrada del descriptor de función). Esto implica que con cada directiva ".type", se finaliza un bloque de instrucciones anterior, si lo hay, como una FDE distinta.
--sectname-subst
Respeta las secuencias de sustitución en los nombres de las secciones.
--size-check=error
--size-check=warning
Genera un error o una advertencia para la directiva ELF .size no válida.
--statistics
Imprime el espacio máximo (en bytes) y el tiempo total (en segundos) utilizado por el ensamblado.
--strip-local-absolute
Elimina los símbolos absolutos locales de la tabla de símbolos de salida.
-v
--verbose
Imprime la versión del ensamblador.
--version
-version
Imprime la versión del ensamblador y sale.
-W
--no-warn
Suprime los mensajes de advertencia.
--warn
No suprime los mensajes de advertencia ni los trata como errores.
--fatal-warnings
Trata las advertencias como errores.
-w
Ignorado.
-x
Ignorado.
-Z
Genera un archivo objeto incluso después de los errores.
-- | files ...
Entrada estándar o archivos fuente para ensamblar.
Las siguientes opciones están disponibles cuando el ensamblador está configurado para el modo de 64 bits de la arquitectura ARM (AArch64).
-EB
Esta opción especifica que la salida generada por el ensamblador debe marcarse como codificada para un procesador big-endian.
-EL
Esta opción especifica que la salida generada por el ensamblador debe marcarse como codificada para un procesador little-endian.
-mabi=abi
Especifica la ABI que utiliza el código fuente. Los argumentos reconocidos son: "ilp32" y "lp64", lo que determina el formato del archivo objeto ELF32 y ELF64, respectivamente. El valor predeterminado es "lp64".
-mcpu=processor[+extension...]
Esta opción especifica el procesador de destino. El ensamblador emitirá un mensaje de error si se intenta ensamblar una instrucción que no se ejecutará en el procesador de destino.
Se reconocen los siguientes nombres de procesador: "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" y "cortex-x4". El nombre especial "all" se puede utilizar para permitir que el ensamblador acepte instrucciones válidas para cualquier procesador compatible, incluidas todas las extensiones opcionales.
Además del conjunto de instrucciones básico, se puede indicar al ensamblador que acepte o restrinja varios nemónicos de extensión que amplían el procesador.
Si algunas implementaciones de un procesador en particular pueden tener una extensión, entonces esas extensiones se habilitan automáticamente. En consecuencia, normalmente no tendrá que especificar ninguna extensión adicional.
-march=architecture[+extension...]Esta opción especifica la arquitectura de destino. El ensamblador emitirá un mensaje de error si se intenta ensamblar una instrucción que no se ejecutará en la arquitectura de destino. Los siguientes nombres de arquitectura son reconocidos: "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" y "armv9.5-a".
Si se especifican tanto -mcpu como -march, el ensamblador utilizará la configuración de -mcpu. Si no se especifica ninguno de los dos, el ensamblador utilizará -mcpu=all por defecto.
La opción de arquitectura se puede extender con las mismas opciones de extensión del conjunto de instrucciones que la opción -mcpu. A diferencia de -mcpu, las extensiones no siempre se habilitan por defecto.
-
-mverbose-errorEsta opción habilita los mensajes de error detallados para AArch64 gas. Esta opción está habilitada por defecto. -
-mno-verbose-errorEsta opción deshabilita los mensajes de error detallados en AArch64 gas. -
-menable-sysreg-checkingEsta opción habilita los mensajes de error que se emiten si se intenta ensamblar un acceso a un registro del sistema que no se ejecutará en la arquitectura de destino.
Las siguientes opciones están disponibles cuando as está configurado para un procesador Alpha.
-mcpuEsta opción especifica el procesador de destino. Si se intenta ensamblar una instrucción que no se ejecutará en el procesador de destino, el ensamblador puede expandir la instrucción como una macro o emitir un mensaje de error. Esta opción es equivalente a la directiva ".arch".
Los siguientes nombres de procesador son reconocidos: 21064, "21064a", 21066, 21068, 21164, "21164a", "21164pc", 21264, "21264a", "21264b", "ev4", "ev5", "lca45", "ev5", "ev56", "pca56", "ev6", "ev67", "ev68". El nombre especial "all" se puede utilizar para permitir que el ensamblador acepte las instrucciones válidas para cualquier procesador Alpha.
Para soportar la práctica existente en OSF/1 con respecto a ".arch", y la práctica existente dentro de MILO (el cargador de arranque de Linux ARC), los nombres de procesador numerados (por ejemplo, 21064) habilitan las instrucciones PALcode específicas del procesador, mientras que los nombres "electro-vlasic" (por ejemplo, "ev4") no lo hacen.
-mdebug
-no-mdebug
Habilita o deshabilita la generación de la encapsulación ".mdebug" para las directivas stabs y los descriptores de procedimientos. El valor predeterminado es habilitar automáticamente ".mdebug" cuando se ve la primera directiva stabs.
-relax
Esta opción fuerza que todas las reubicaciones se coloquen en el archivo de objeto, en lugar de ahorrar espacio y resolver algunas reubicaciones en tiempo de ensamblaje. Tenga en cuenta que esta opción no propaga toda la aritmética de símbolos al archivo de objeto, porque no toda la aritmética de símbolos se puede representar. Sin embargo, la opción aún puede ser útil en aplicaciones específicas.
-replace
-noreplace
Habilita o deshabilita la optimización de las llamadas a procedimientos, tanto en el ensamblaje como en el momento del enlace. Estas opciones solo están disponibles para los destinos VMS y "-replace" es el valor predeterminado. Consulte la sección 4.1 del Manual de utilidad del enlazador OpenVMS.
-g
Esta opción se utiliza cuando el compilador genera información de depuración. Cuando gcc está utilizando mipstfile para generar información de depuración para ECOFF, las etiquetas locales deben pasarse al archivo de objeto. De lo contrario, esta opción no tiene ningún efecto.
-Gsize
Un símbolo común local mayor que el tamaño se coloca en ".bss", mientras que los símbolos más pequeños se colocan en ".sbss".
-F
-32addr
Estas opciones se ignoran para compatibilidad con versiones anteriores.
Las siguientes opciones están disponibles cuando as está configurado para un procesador ARC.
-mcpu=cpu
Esta opción selecciona la variante principal del procesador.
-EB | -EL
Seleccione la salida en formato big-endian (-EB) o little-endian (-EL).
-mcode-density
Habilita las instrucciones de la extensión Code Density.
Las siguientes opciones están disponibles cuando as está configurado para la familia de procesadores ARM.
-mcpu=processor[+extension...]
Especifique qué variante de procesador ARM es el destino.
-march=architecture[+extension...]
Especifique qué variante de arquitectura ARM se utiliza para el destino.
-mfpu=floating-point-format
Seleccione qué arquitectura de punto flotante es el destino.
-mfloat-abi=abi
Seleccione qué ABI de punto flotante está en uso.
-mthumb
Habilite solo la decodificación de instrucciones Thumb.
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
Seleccione qué convención de llamada de procedimiento está en uso.
-EB | -EL
Seleccione la salida en formato big-endian (-EB) o little-endian (-EL).
-mthumb-interwork
Especifique que el código se ha generado con la interoperación entre el código Thumb y ARM.
-mccs
Activa el modo de compatibilidad de sintaxis de ensamblaje de CodeComposer Studio.
-k
Especifique que se ha generado código PIC.
Las siguientes opciones están disponibles cuando as está configurado para la familia de procesadores Blackfin.
-mcpu=processor[-sirevision]
Esta opción especifica el procesador de destino. La sirevision opcional no se utiliza en el ensamblador. Está aquí para que GCC pueda pasar fácilmente su opción "-mcpu=". El ensamblador emitirá un mensaje de error si se intenta ensamblar una instrucción que no se ejecutará en el procesador de destino. Los siguientes nombres de procesador son reconocidos: "bf504", "bf506", "bf512", "bf514", "bf516", "bf518", "bf522", "bf523", "bf524", "bf525", "bf526", "bf527", "bf531", "bf532", "bf533", "bf534", "bf535" (aún no implementado), "bf536", "bf537", "bf538", "bf539", "bf542", "bf542m", "bf544", "bf544m", "bf547", "bf547m", "bf548", "bf548m", "bf549", "bf549m", "bf561" y "bf592".
-mfdpic
Ensambla para la ABI FDPIC.
-mno-fdpic
-mnopic
Desactiva -mfdpic.
Las siguientes opciones están disponibles cuando as está configurado para la familia de procesadores BPF del kernel de Linux.
@chapter Características dependientes de BPF
Opciones de BPF
-EB Esta opción especifica que el ensamblador debe emitir eBPF en formato big-endian.
-EL Esta opción especifica que el ensamblador debe emitir eBPF en formato little-endian.
-mdialect=dialect
Esta opción especifica el dialecto de lenguaje ensamblador que se debe reconocer durante el ensamblaje. El ensamblador admite normal y pseudoc.
-misa-spec=spec
Esta opción especifica la versión del conjunto de instrucciones BPF que se utilizará al ensamblar. Las versiones de la ISA BPF admitidas son v1, v2, v3 y v4.
El valor xbpf se puede especificar para reconocer instrucciones adicionales que se utilizan en GCC
para fines de prueba. Pero tenga en cuenta que esto no es BPF válido.
-mno-relax
Esta opción le indica al ensamblador que no relaje las instrucciones.
Tenga en cuenta que si no se especifica ninguna opción de endianness en la línea de comandos, se utiliza la endianness del host. Consulte las páginas de información para obtener documentación de las opciones específicas de CRIS.
Las siguientes opciones están disponibles cuando as está configurado para la familia de procesadores C-SKY.
-march=archname
Ensambla para la arquitectura archname. La opción --help enumera los valores válidos para archname.
-mcpu=cpuname
Ensambla para la arquitectura cpuname. La opción --help enumera los valores válidos para cpuname.
-EL
-mlittle-endian
Genera salida little-endian.
-EB
-mbig-endian
Genera salida big-endian.
-fpic
-pic
Genera código independiente de la posición.
-mljump
-mno-ljump
Habilita/deshabilita la transformación de las instrucciones de salto corto "jbf", "jbt" y "jbr" a "jmpi". Esta opción es solo para procesadores V2. Se ignora en los objetivos CK801 y CK802, que no admiten la instrucción "jmpi", y está habilitada de forma predeterminada para otros procesadores.
-mbranch-stub
-mno-branch-stub
Pasa las reubicaciones "R_CKCORE_PCREL_IMM26BY2" para las instrucciones "bsr" al enlazador.
Esta opción solo está disponible para los objetivos ELF bare-metal C-SKY V2, donde está habilitada de forma predeterminada. No se puede utilizar en código que se vinculará dinámicamente a bibliotecas compartidas.
-force2bsr
-mforce2bsr
-no-force2bsr
-mno-force2bsr
Habilita/deshabilita la transformación de las instrucciones "jbsr" a "bsr". Esta opción siempre está habilitada (y -mno-force2bsr se ignora) para los objetivos CK801/CK802. También siempre está habilitada cuando -mbranch-stub está en efecto.
-jsri2bsr
-mjsri2bsr
-no-jsri2bsr
-mno-jsri2bsr
Habilita/deshabilita la transformación de las instrucciones "jsri" a "bsr". Esta opción está habilitada por defecto.
-mnolrw
-mno-lrw
Habilita/deshabilita la transformación de las instrucciones "lrw" en un par "movih"/"ori".
-melrw
-mno-elrw
Habilita/deshabilita las instrucciones "lrw" extendidas. Esta opción está habilitada por defecto para los procesadores de la serie CK800.
-mlaf
-mliterals-after-func
-mno-laf
-mno-literals-after-func
Habilita/deshabilita la colocación de los pools de literales después de cada función.
-mlabr
-mliterals-after-br
-mno-labr
-mnoliterals-after-br
Habilita/deshabilita la colocación de los pools de literales después de las ramas incondicionales. Esta opción está habilitada por defecto.
-mistack
-mno-istack
Habilita/deshabilita las instrucciones de la pila de interrupciones. Esta opción está habilitada por defecto en los procesadores CK801, CK802 y CK802.
Las siguientes opciones habilitan explícitamente ciertas instrucciones opcionales. Estas funciones también se habilitan implícitamente mediante el uso de "-mcpu=" para especificar un procesador que lo admita.
-mhard-float
Habilita las instrucciones de coma flotante.
-mmp
Habilita las instrucciones de multiprocesador.
-mcp
Habilita las instrucciones de coprocesador.
-mcache
Habilita la instrucción de prebúsqueda de caché.
-msecurity
Habilita las instrucciones de seguridad de C-SKY.
-mtrust
Habilita las instrucciones de confianza de C-SKY.
-mdsp
Habilita las instrucciones DSP.
-medsp
Habilita las instrucciones DSP mejoradas.
-mvdsp
Habilita las instrucciones DSP vectoriales.
Las siguientes opciones están disponibles cuando as está configurado para un procesador Epiphany.
-mepiphany
Especifica que tanto las instrucciones de 32 como de 16 bits están permitidas. Este es el comportamiento predeterminado.
-mepiphany16
Restringe las instrucciones permitidas al conjunto de 16 bits.
Las siguientes opciones están disponibles cuando as está configurado para un procesador H8/300. @chapter Funciones dependientes de H8/300
Opciones
La versión de Renesas H8/300 de "as" tiene una opción dependiente de la máquina:
-h-tick-hex
Admite constantes hexadecimales de estilo H'00 además del estilo 0x00.
-mach=name
Establece la variante de máquina H8300. Se reconocen los siguientes nombres de máquina: "h8300h", "h8300hn", "h8300s", "h8300sn", "h8300sx" y "h8300sxn".
Las siguientes opciones están disponibles cuando as está configurado para un procesador i386.
--32 | --x32 | --64
Selecciona el tamaño de palabra, ya sea de 32 o 64 bits. --32 implica la arquitectura Intel i386, mientras que --x32 y --64 implican la arquitectura AMD x86-64 con un tamaño de palabra de 32 o 64 bits, respectivamente.
Estas opciones solo están disponibles con el formato de archivo de objeto ELF, y requieren que se haya incluido el soporte BFD necesario (en una plataforma de 32 bits, debe agregar --enable-64-bit-bfd para habilitar el uso de 64 bits y usar x86-64 como plataforma de destino).
-n De forma predeterminada, x86 GAS reemplaza varias instrucciones nop utilizadas para la alineación dentro de las secciones de código con instrucciones nop de varios bytes, como leal 0(%esi,1),%esi. Este modificador deshabilita la optimización si se especifica explícitamente una instrucción nop de un byte (0x90) como byte de relleno para la alineación.
--divide
En las plataformas derivadas de SVR4, el carácter / se trata como un carácter de comentario, lo que significa que no se puede usar en expresiones. La opción --divide convierte / en un carácter normal. Esto no deshabilita / al comienzo de una línea que inicia un comentario, ni afecta el uso de # para iniciar un comentario.
-march=CPU[+EXTENSION...]
Esta opción especifica el procesador de destino. El ensamblador emitirá un mensaje de error si se intenta ensamblar una instrucción que no se ejecutará en el procesador de destino. Los siguientes nombres de procesador son reconocidos: "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" y "generic64".
Además del conjunto de instrucciones básico, se puede indicar al ensamblador que acepte varios nemónicos de extensión. Por ejemplo, "-march=i686+sse4+vmx" extiende i686 con sse4 y vmx. Las siguientes extensiones son compatibles actualmente: 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" y "padlock". Tenga en cuenta que estos nemónicos de extensión se pueden prefijar con "no" para revocar la funcionalidad respectiva (y cualquier funcionalidad dependiente). Tenga en cuenta además que los sufijos permitidos en "-march=avx10.<N>" imponen una restricción de longitud de vector, es decir, a pesar de que estos son opciones de "habilitación", el uso de estos sufijos deshabilitará todas las instrucciones con operandos de registro de máscara o vector más amplios.
Cuando se utiliza la directiva ".arch" con -march, la directiva ".arch" tendrá prioridad.
-mtune=CPU
Esta opción especifica un procesador para optimizar. Cuando se utiliza en conjunto con la opción -march, solo se generarán instrucciones del procesador especificado por la opción -march.
Los valores de CPU válidos son idénticos a la lista de procesadores de -march=CPU.
-moperand-check=none
-moperand-check=warning
-moperand-check=error
Estas opciones controlan si el ensamblador debe verificar ciertas instrucciones u operandos. Un ejemplo de instrucciones donde el tamaño del operando no se puede inferir de sus operandos y tampoco se ha especificado mediante un sufijo de instrucción. -moperand-check=none hará que el ensamblador no realice estas comprobaciones. -moperand-check=warning hará que el ensamblador emita una advertencia cuando las comprobaciones correspondientes fallen, que es el valor predeterminado. -moperand-check=error hará que el ensamblador emita un error cuando las comprobaciones correspondientes fallen.
-msse2avx
Esta opción especifica que el ensamblador debe codificar las instrucciones SSE con el prefijo VEX, lo que requiere que AVX esté disponible. Las instrucciones SSE que utilizan registros GPR extendidos se codificarán con el prefijo EVEX, lo que requiere que AVX512 o AVX10 estén disponibles.
-muse-unaligned-vector-move
Esta opción especifica que el ensamblador debe codificar el movimiento vectorial alineado como movimiento vectorial no alineado.
-msse-check=none
-msse-check=warning
-msse-check=error
Estas opciones controlan si el ensamblador debe verificar las instrucciones SSE. -msse-check=none hará que el ensamblador no verifique las instrucciones SSE, que es el valor predeterminado. -msse-check=warning hará que el ensamblador emita una advertencia por cualquier instrucción SSE. -msse-check=error hará que el ensamblador emita un error por cualquier instrucción SSE.
-mavxscalar=128
-mavxscalar=256
Estas opciones controlan cómo el ensamblador debe codificar las instrucciones AVX escalares. -mavxscalar=128 codificará las instrucciones AVX escalares con una longitud de vector de 128 bits, que es el valor predeterminado. -mavxscalar=256 codificará las instrucciones AVX escalares con una longitud de vector de 256 bits.
ADVERTENCIA: No utilice esto para código de producción, ya que, debido a errores del procesador, el código resultante puede no funcionar en ciertos modelos.
-mvexwig=0
-mvexwig=1
Estas opciones controlan cómo el ensamblador debe codificar las instrucciones VEX.W-ignored (WIG). -mvexwig=0 codificará las instrucciones VEX WIG con vex.w = 0, que es el valor predeterminado. -mvexwig=1 codificará las instrucciones EVEX WIG con vex.w = 1.
ADVERTENCIA: No utilice esto para código de producción, ya que, debido a errores en la CPU, el código resultante puede no funcionar en ciertos modelos.
-mevexlig=128
-mevexlig=256
-mevexlig=512
Estas opciones controlan cómo el ensamblador debe codificar las instrucciones EVEX de longitud ignorada (LIG).
-mevexlig=128 codificará las instrucciones EVEX LIG con una longitud de vector de 128 bits, que es el valor predeterminado. -mevexlig=256 y -mevexlig=512 codificarán las instrucciones EVEX LIG con longitudes de vector de 256 y 512 bits, respectivamente.
-mevexwig=0
-mevexwig=1
Estas opciones controlan cómo el ensamblador debe codificar las instrucciones EVEX de ancho ignorado (WIG).
-mevexwig=0 codificará las instrucciones EVEX WIG con evex.w = 0, que es el valor predeterminado.
-mevexwig=1 codificará las instrucciones EVEX WIG con evex.w = 1.
-mmnemonic=att
-mmnemonic=intel
Esta opción especifica el mnemónico de instrucción para las instrucciones de coincidencia. Las directivas ".att_mnemonic" y ".intel_mnemonic" tendrán prioridad.
-msyntax=att
-msyntax=intel
Esta opción especifica la sintaxis de instrucción al procesar las instrucciones. Las directivas ".att_syntax" y ".intel_syntax" tendrán prioridad.
-mnaked-reg
Esta opción especifica que los registros no requieren un prefijo "%". Las directivas ".att_syntax" y ".intel_syntax" tendrán prioridad.
-madd-bnd-prefix
Esta opción obliga al ensamblador a agregar el prefijo BND a todos los saltos, incluso si dicho prefijo no se especifica explícitamente en el código fuente.
-mno-shared
En el objetivo ELF, el ensamblador normalmente optimiza las reubicaciones no PLT contra objetivos globales no débiles definidos con visibilidad predeterminada. La opción -mshared le indica al ensamblador que genere código que pueda incluirse en una biblioteca compartida, donde todos los objetivos globales no débiles con visibilidad predeterminada pueden ser anulados. El código resultante es ligeramente más grande. Esta opción solo afecta el manejo de las instrucciones de salto.
-mbig-obj
En el objetivo PE/COFF, esta opción obliga al uso del formato de archivo objeto grande, que permite más de 32768 secciones.
-momit-lock-prefix=no
-momit-lock-prefix=yes
Estas opciones controlan cómo el ensamblador debe codificar el prefijo lock. Esta opción está destinada como una solución alternativa para los procesadores que fallan con el prefijo lock. Esta opción solo se puede utilizar de forma segura con computadoras de un solo núcleo y un solo subproceso. -momit-lock-prefix=yes omitirá todos los prefijos lock.
-momit-lock-prefix=no codificará el prefijo lock como de costumbre, que es el valor predeterminado.
-mfence-as-lock-add=no
-mfence-as-lock-add=yes
Estas opciones controlan cómo el ensamblador debe codificar lfence, mfence y sfence.
-mfence-as-lock-add=yes codificará lfence, mfence y sfence como lock addl $0x0, (%rsp) en modo de 64 bits y lock addl $0x0, (%esp) en modo de 32 bits. -mfence-as-lock-add=no codificará lfence, mfence y sfence como de costumbre, que es el valor predeterminado.
-mrelax-relocations=no
-mrelax-relocations=yes
Estas opciones controlan si el ensamblador debe generar reubicaciones relajadas, R_386_GOT32X, en modo de 32 bits, o R_X86_64_GOTPCRELX y R_X86_64_REX_GOTPCRELX, en modo de 64 bits. -mrelax-relocations=yes generará reubicaciones relajadas. -mrelax-relocations=no no generará reubicaciones relajadas.
-mtls-check=no
-mtls-check=yes
Estas opciones controlan si el ensamblador debe verificar la reubicación TLS. -mtls-check=yes verificará la reubicación TLS. -mtls-check=no no verificará la reubicación TLS. El valor predeterminado puede controlarse mediante una opción de configuración: --enable-x86-tls-check.
-malign-branch-boundary=NUM
Esta opción controla cómo el ensamblador debe alinear las ramas con prefijos de segmento o NOP. NUM debe ser una potencia de 2. Debe ser 0 o no menor que 16. Las ramas se alinearán dentro de un límite de NUM bytes. -malign-branch-boundary=0, que es el valor predeterminado, no alinea las ramas.
-malign-branch=TYPE[+TYPE...]
Esta opción especifica los tipos de ramas que se van a alinear. TYPE es una combinación de jcc, que alinea los saltos condicionales, fused, que alinea los saltos condicionales fusionados, jmp, que alinea los saltos incondicionales, call, que alinea las llamadas, ret, que alinea los retornos, indirect, que alinea los saltos y llamadas indirectos. El valor predeterminado es -malign-branch=jcc+fused+jmp.
-malign-branch-prefix-size=NUM
Esta opción especifica el número máximo de prefijos en una instrucción para alinear las ramas. NUM debe estar entre 0 y 5. El valor predeterminado de NUM es 5.
-mbranches-within-32B-boundaries
Esta opción alinea los saltos condicionales, los saltos condicionales fusionados y los saltos incondicionales dentro de un límite de 32 bytes con hasta 5 prefijos de segmento en una instrucción. Es equivalente a -malign-branch-boundary=32 -malign-branch=jcc+fused+jmp -malign-branch-prefix-size=5. El valor predeterminado no alinea las ramas.
-mlfence-after-load=no
-mlfence-after-load=yes
Estas opciones controlan si el ensamblador debe generar lfence después de las instrucciones de carga. -mlfence-after-load=yes generará lfence. -mlfence-after-load=no no generará lfence, que es el valor predeterminado.
-mlfence-before-indirect-branch=none
-mlfence-before-indirect-branch=all
-mlfence-before-indirect-branch=register
-mlfence-before-indirect-branch=memory
Estas opciones controlan si el ensamblador debe generar lfence antes de las instrucciones de salto indirecto cercano. -mlfence-before-indirect-branch=all generará lfence antes del salto indirecto cercano a través de un registro e emitirá una advertencia antes del salto indirecto cercano a través de la memoria. También establece implícitamente -mlfence-before-ret=shl cuando no hay un -mlfence-before-ret explícito. -mlfence-before-indirect-branch=register generará lfence antes del salto indirecto cercano a través de un registro. -mlfence-before-indirect-branch=memory emitirá una advertencia antes del salto indirecto cercano a través de la memoria. -mlfence-before-indirect-branch=none no generará lfence ni emitirá una advertencia, que es el valor predeterminado. Tenga en cuenta que lfence no se generará antes del salto indirecto cercano a través de un registro con -mlfence-after-load=yes, ya que lfence se generará después de cargar el registro de destino del salto.
-mlfence-before-ret=none
-mlfence-before-ret=shl
-mlfence-before-ret=or
-mlfence-before-ret=yes
-mlfence-before-ret=not
Estas opciones controlan si el ensamblador debe generar la instrucción lfence antes de ret.
-mlfence-before-ret=or generará la instrucción or con lfence.
-mlfence-before-ret=shl/yes generará la instrucción shl con lfence.
-mlfence-before-ret=not generará la instrucción not con lfence. -mlfence-before-ret=none
no generará lfence, que es el valor predeterminado.
-mx86-used-note=no
-mx86-used-note=yes
Estas opciones controlan si el ensamblador debe generar las notas de propiedad GNU GNU_PROPERTY_X86_ISA_1_USED y
^ NU_PROPERTY_X86_FEATURE_2_USED. El valor predeterminado se puede controlar mediante la opción de configuración
--enable-x86-used-note.
-mevexrcig=rne
-mevexrcig=rd
-mevexrcig=ru
-mevexrcig=rz
Estas opciones controlan cómo el ensamblador debe codificar las instrucciones EVEX SAE-only. -mevexrcig=rne codificará los bits RC de la instrucción EVEX con 00, que es el valor predeterminado. -mevexrcig=rd, -mevexrcig=ru y -mevexrcig=rz codificarán las instrucciones EVEX SAE-only con 01, 10 y 11 bits RC, respectivamente.
-mamd64
-mintel64
Esta opción especifica que el ensamblador solo debe aceptar la ISA AMD64 o Intel64 en modo de 64 bits. El valor predeterminado es aceptar las ISAs comunes, Intel64 y AMD64.
-O0 | -O | -O1 | -O2 | -Os
Optimiza la codificación de las instrucciones con un tamaño de instrucción más pequeño. -O y -O1 codifican las instrucciones de carga de registros de 64 bits con un valor inmediato de 64 bits como instrucciones de carga de registros de 32 bits con valores inmediatos de 31 bits o 32 bits, codifican las instrucciones de borrado de registros de 64 bits con instrucciones de borrado de registros de 32 bits, codifican las instrucciones de borrado de registros vectoriales VEX/EVEX de 256 bits/512 bits con instrucciones de borrado de registros vectoriales VEX de 128 bits, codifican las instrucciones de carga/almacenamiento de registros vectoriales EVEX de 128 bits/256 bits con instrucciones de carga/almacenamiento de registros vectoriales VEX, y codifican las instrucciones lógicas de enteros empaquetados EVEX de 128 bits/256 bits con instrucciones lógicas de enteros empaquetados VEX de 128 bits/256 bits.
-O2 incluye la optimización -O1 más codifica las instrucciones de borrado de registros vectoriales EVEX de 256 bits/512 bits con instrucciones de borrado de registros vectoriales EVEX de 128 bits. En modo de 64 bits, las instrucciones codificadas con VEX con operandos de origen conmutativos también tendrán sus operandos de origen intercambiados si esto permite el uso de la forma de prefijo VEX de 2 bytes en lugar de la de 3 bytes. Ciertas
formas de AND, así como OR con el mismo operando (registro) especificado dos veces, también se cambiarán a TEST.
-Os incluye -O2 optimización además de codificar pruebas de registro de 16, 32 y 64 bits con
inmediato como prueba de registro de 8 bits con inmediato. -O0 desactiva esta optimización.
Las siguientes opciones están disponibles cuando as está configurado para la serie Ubicom IP2K.
-mip2022ext
Especifica que se permiten las instrucciones extendidas de IP2022.
-mip2022
Restaura el comportamiento predeterminado, que restringe las instrucciones permitidas a solo las básicas de IP2022.
Las siguientes opciones están disponibles cuando as está configurado para los procesadores Renesas M32C y M16C.
-m32c
Ensambla las instrucciones M32C.
-m16c
Ensambla las instrucciones M16C (el valor predeterminado).
-relax
Habilita el soporte para relajaciones en tiempo de enlace.
-h-tick-hex
Admite constantes hexadecimales con el estilo H'00 además del estilo 0x00.
Las siguientes opciones están disponibles cuando as está configurado para la serie Renesas M32R (anteriormente Mitsubishi M32R).
--m32rx
Especifica qué procesador de la familia M32R es el objetivo. El valor predeterminado suele ser el M32R, pero esta opción lo cambia a M32RX.
--warn-explicit-parallel-conflicts o --Wp
Produce mensajes de advertencia cuando se encuentran construcciones paralelas dudosas.
--no-warn-explicit-parallel-conflicts o --Wnp
No produce mensajes de advertencia cuando se encuentran construcciones paralelas dudosas.
Las siguientes opciones están disponibles cuando as está configurado para la serie Motorola 68000.
-l Acorta las referencias a símbolos indefinidos, a una palabra en lugar de dos.
-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
Especifica qué procesador de la familia 68000 es el objetivo. El valor predeterminado suele ser el 68020, pero esto se puede cambiar en tiempo de configuración.
-m68881 | -m68882 | -mno-68881 | -mno-68882
La máquina de destino tiene (o no tiene) un coprocesador de punto flotante. El valor predeterminado es
asumir un coprocesador para 68020, 68030 y cpu32. Aunque el 68000 básico no es compatible
con el 68881, se puede especificar una combinación de los dos, ya que es posible realizar la
emulación de las instrucciones del coprocesador con el procesador principal.
-m68851 | -mno-68851
La máquina de destino tiene (o no tiene) un coprocesador de unidad de gestión de memoria. El valor predeterminado es asumir una MMU para 68020 y superiores.
Para obtener detalles sobre las opciones de las características específicas de la máquina PDP-11, consulte PDP-11-Options.
-mpic | -mno-pic
Genera código independiente de la posición (o dependiente de la posición). El valor predeterminado es -mpic.
-mall
-mall-extensions
Habilita todas las extensiones del conjunto de instrucciones. Este es el valor predeterminado.
-mno-extensions
Deshabilita todas las extensiones del conjunto de instrucciones.
-mextension | -mno-extension
Habilita (o deshabilita) una extensión específica del conjunto de instrucciones.
-mcpu
Habilita las extensiones del conjunto de instrucciones admitidas por una CPU específica y deshabilita todas las demás extensiones.
-mmachine
Habilita las extensiones del conjunto de instrucciones admitidas por un modelo de máquina específico y deshabilita todas las demás extensiones.
Las siguientes opciones están disponibles cuando as está configurado para un procesador picoJava.
-mb Genera salida en formato "big endian".
-ml Genera salida en formato "little endian".
Las siguientes opciones están disponibles cuando as está configurado para un procesador PRU.
-mlink-relax
Asume que LD optimizaría las instrucciones LDI32 verificando los 16 bits superiores de la expresión. Si todos son ceros, entonces LD acortaría la instrucción LDI32 a una sola instrucción LDI. En ese caso, "as" generará reubicaciones DIFF para expresiones diff.
-mno-link-relax
Asume que LD no optimizará las instrucciones LDI32. En consecuencia, no se emitirán reubicaciones DIFF.
-mno-warn-regname-label
No genere una advertencia si el nombre de una etiqueta coincide con el nombre de un registro. Normalmente, los programadores de ensamblador querrán que se emita esta advertencia. Los compiladores de C pueden querer desactivarla.
Las siguientes opciones están disponibles cuando as está configurado para un procesador MIPS.
-G num
Esta opción establece el tamaño máximo de un objeto que se puede referenciar implícitamente con el registro "gp". Solo se acepta para destinos que utilizan el formato ECOFF, como una DECstation que ejecuta Ultrix. El valor predeterminado es 8.
-EB Genera salida en formato "big endian".
-EL Genera salida en formato "little endian".
-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips32r3
-mips32r5
-mips32r6
-mips64
-mips64r2
-mips64r3
-mips64r5
-mips64r6
Genera código para una arquitectura de conjunto de instrucciones MIPS en particular. -mips1 es un alias para -march=r3000, -mips2 es un alias para -march=r6000, -mips3 es un alias para -march=r4000 y -mips4 es un alias para -march=r8000. -mips5, -mips32, -mips32r2, -mips32r3, -mips32r5, -mips32r6, -mips64, -mips64r2, -mips64r3, -mips64r5 y -mips64r6 corresponden a los procesadores MIPS V genéricos, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5 y MIPS64 Release 6 ISA, respectivamente.
-march=cpu
Genera código para una CPU MIPS en particular.
-mtune=cpu
Programa y optimiza para una CPU MIPS en particular.
-mfix7000
-mno-fix7000
Provoca que se inserten nops si la lectura del registro de destino de una instrucción mfhi o mflo se produce en las siguientes dos instrucciones.
-mfix-rm7000
-mno-fix-rm7000
Provoca que se inserten nops si a una instrucción dmult o dmultu le sigue una instrucción de carga.
-mfix-r5900
-mno-fix-r5900
No intente programar la instrucción anterior en la ranura de retardo de una instrucción de rama colocada al final de un bucle corto de seis instrucciones o menos y siempre programe una instrucción "nop" allí. El error del bucle corto bajo ciertas condiciones provoca que los bucles se ejecuten solo una o dos veces, debido a un error de hardware en el chip R5900.
-mdebug
-no-mdebug
Provoca que la salida de depuración de estilo stabs se coloque en una sección ECOFF-style .mdebug en lugar de las secciones ELF .stabs estándar.
-mpdr
-mno-pdr
Controla la generación de secciones ".pdr".
-mgp32
-mfp32
Normalmente, los tamaños de los registros se infieren del ISA y el ABI, pero estas opciones fuerzan a que un grupo específico de registros se trate como de 32 bits de ancho en todo momento. -mgp32 controla el tamaño de los registros de propósito general y -mfp32 controla el tamaño de los registros de punto flotante.
-mgp64
-mfp64
Normalmente, los tamaños de los registros se infieren del ISA y el ABI, pero estas opciones fuerzan a que un grupo específico de registros se trate como de 64 bits de ancho en todo momento. -mgp64 controla el tamaño de los registros de propósito general y -mfp64 controla el tamaño de los registros de punto flotante.
-mfpxx
Los tamaños de los registros se infieren normalmente del ISA y el ABI, pero el uso de esta opción en combinación con -mabi=32 habilita una variante de ABI que funcionará correctamente con los registros de punto flotante que son de 32 o 64 bits de ancho.
-modd-spreg
-mno-odd-spreg
Habilita el uso de operaciones de punto flotante en registros de precisión simple de número impar cuando lo soporta el ISA. -mfpxx implica -mno-odd-spreg; de lo contrario, el valor predeterminado es -modd-spreg.
-mips16
-no-mips16
Genera código para el procesador MIPS 16. Esto es equivalente a poner ".module mips16" al principio del archivo de ensamblaje. -no-mips16 desactiva esta opción.
-mmips16e2
-mno-mips16e2
Habilita el uso de instrucciones MIPS16e2 en el modo MIPS16. Esto es equivalente a poner ".module mips16e2" al principio del archivo de ensamblaje. -mno-mips16e2 desactiva esta opción.
-mmicromips
-mno-micromips
Genera código para el procesador microMIPS. Esto es equivalente a poner ".module micromips" al principio del archivo de ensamblaje. -mno-micromips desactiva esta opción. Esto es equivalente a poner ".module nomicromips" al principio del archivo de ensamblaje.
-msmartmips
-mno-smartmips
Habilita la extensión SmartMIPS al conjunto de instrucciones MIPS32. Esto es equivalente a poner ".module smartmips" al principio del archivo de ensamblaje. -mno-smartmips desactiva esta opción.
-mips3d
-no-mips3d
Genera código para la Extensión Específica de Aplicación MIPS-3D. Esto le indica al ensamblador que acepte las instrucciones MIPS-3D. -no-mips3d desactiva esta opción.
-mdmx
-no-mdmx
Genera código para la Extensión Específica de Aplicación MDMX. Esto le indica al ensamblador que acepte las instrucciones MDMX. -no-mdmx desactiva esta opción.
-mdsp
-mno-dsp
Genera código para la Extensión Específica de Aplicación DSP Release 1. Esto le indica al ensamblador que acepte las instrucciones DSP Release 1. -mno-dsp desactiva esta opción.
-mdspr2
-mno-dspr2
Genera código para la Extensión Específica de Aplicación DSP Release 2. Esta opción implica -mdsp. Esto le indica al ensamblador que acepte las instrucciones DSP Release 2. -mno-dspr2 desactiva esta opción.
-mdspr3
-mno-dspr3
Genera código para la Extensión Específica de Aplicación DSP Release 3. Esta opción implica -mdsp y -mdspr2. Esto le indica al ensamblador que acepte las instrucciones DSP Release 3. -mno-dspr3 desactiva esta opción.
-mmsa
-mno-msa
Genera código para la extensión MIPS SIMD Architecture. Esto le indica al ensamblador que acepte instrucciones MSA. -mno-msa desactiva esta opción.
-mxpa
-mno-xpa
Genera código para la extensión MIPS eXtended Physical Address (XPA). Esto le indica al ensamblador que acepte instrucciones XPA. -mno-xpa desactiva esta opción.
-mmt
-mno-mt
Genera código para la extensión MT Application Specific. Esto le indica al ensamblador que acepte instrucciones MT. -mno-mt desactiva esta opción.
-mmcu
-mno-mcu
Genera código para la extensión MCU Application Specific. Esto le indica al ensamblador que acepte instrucciones MCU. -mno-mcu desactiva esta opción.
-mcrc
-mno-crc
Genera código para la extensión MIPS cyclic redundancy check (CRC) Application Specific. Esto le indica al ensamblador que acepte instrucciones CRC. -mno-crc desactiva esta opción.
-mginv
-mno-ginv
Genera código para la extensión Global INValidate (GINV) Application Specific. Esto le indica al ensamblador que acepte instrucciones GINV. -mno-ginv desactiva esta opción.
-mloongson-mmi
-mno-loongson-mmi
Genera código para la extensión Loongson MultiMedia extensions Instructions (MMI) Application Specific. Esto le indica al ensamblador que acepte instrucciones MMI. -mno-loongson-mmi desactiva esta opción.
-mloongson-cam
-mno-loongson-cam
Genera código para las instrucciones Loongson Content Address Memory (CAM). Esto le indica al ensamblador que acepte las instrucciones Loongson CAM. -mno-loongson-cam desactiva esta opción.
-mloongson-ext
-mno-loongson-ext
Genera código para las instrucciones Loongson EXTensions (EXT). Esto le indica al ensamblador que acepte las instrucciones Loongson EXT. -mno-loongson-ext desactiva esta opción.
-mloongson-ext2
-mno-loongson-ext2
Genera código para las instrucciones Loongson EXTensions R2 (EXT2). Esta opción implica -mloongson-ext. Esto le indica al ensamblador que acepte las instrucciones Loongson EXT2. -mno-loongson-ext2 desactiva esta opción.
-minsn32
-mno-insn32
Utiliza solo codificaciones de instrucciones de 32 bits al generar código para el procesador microMIPS. Esta opción impide el uso de cualquier instrucción de 16 bits. Esto es equivalente a colocar ".set insn32" al principio del archivo de ensamblaje. -mno-insn32 desactiva esta opción. Esto es equivalente a colocar ".set noinsn32" al principio del archivo de ensamblaje. Por defecto, -mno-insn32 está seleccionado, lo que permite el uso de todas las instrucciones.
--construct-floats
--no-construct-floats
La opción --no-construct-floats desactiva la construcción de constantes de punto flotante de doble ancho cargando las dos mitades del valor en los dos registros de punto flotante de ancho simple que componen el registro de doble ancho. Por defecto, --construct-floats está seleccionado, lo que permite la construcción de estas constantes de punto flotante.
--relax-branch
--no-relax-branch
La opción --relax-branch habilita la relajación de las ramas fuera de rango. Por defecto, --no-relax-branch está seleccionada, lo que provoca que cualquier rama fuera de rango genere un error.
-mignore-branch-isa
-mno-ignore-branch-isa
Ignorar las comprobaciones de ramas para transiciones inválidas entre modos ISA. La semántica de las ramas no prevé un cambio de modo ISA, por lo que en la mayoría de los casos el modo ISA para el que se ha codificado una rama debe ser el mismo que el modo ISA de la etiqueta de destino de la rama. Por lo tanto, GAS tiene implementadas comprobaciones que verifican en el ensamblaje de la rama que los dos modos ISA coincidan. -mignore-branch-isa deshabilita estas comprobaciones. Por defecto, -mno-ignore-branch-isa está seleccionada, lo que provoca que cualquier rama inválida que requiera una transición entre modos ISA genere un error.
-mnan=encoding
Seleccionar entre la codificación NaN IEEE 754-2008 (-mnan=2008) o el formato de codificación NaN heredado (-mnan=legacy). El último es el valor predeterminado.
--emulation=name
Esta opción se utilizaba anteriormente para cambiar entre la salida ELF y ECOFF en destinos como IRIX 5 que admitían ambos. El soporte de MIPS ECOFF se eliminó en GAS 2.24, por lo que la opción ahora tiene poco propósito. Se conserva para la compatibilidad con versiones anteriores.
Los nombres de configuración disponibles son: mipself, mipslelf y mipsbelf. Elegir mipself ahora no tiene ningún efecto, ya que la salida es siempre ELF. mipslelf y mipsbelf seleccionan la salida de endian pequeño y grande respectivamente, pero -EL y -EB son ahora las opciones preferidas.
-nocpp
as ignora esta opción. Se acepta para la compatibilidad con las herramientas nativas.
--trap
--no-trap
--break
--no-break
Controlar cómo tratar el desbordamiento de la multiplicación y la división por cero. --trap o --no-break (que son sinónimos) generan una excepción de interrupción (y solo funcionan para el nivel de arquitectura de conjunto de instrucciones 2 o superior); --break o --no-trap (también sinónimos, y el valor predeterminado) generan una excepción de interrupción.
-n Cuando se utiliza esta opción, as emitirá una advertencia cada vez que genere una instrucción nop
a partir de una macro.
Las siguientes opciones están disponibles cuando as está configurado para un procesador LoongArch.
-fpic
-fPIC
Generar código independiente de la posición.
-fno-pic
No generar código independiente de la posición (valor predeterminado).
Las siguientes opciones están disponibles cuando as está configurado para un procesador Meta.
"-mcpu=metac11"
Generar código para Meta 1.1.
"-mcpu=metac12"
Generar código para Meta 1.2.
"-mcpu=metac21"
Generar código para Meta 2.1.
"-mfpu=metac21"
Permitir que el código utilice el hardware FPU de Meta 2.1.
Consulte las páginas de información para obtener documentación sobre las opciones específicas de MMIX.
Las siguientes opciones están disponibles cuando as está configurado para un procesador NDS32.
"-O1"
Optimizar para el rendimiento.
"-Os"
Optimizar para el espacio.
"-EL"
Producir datos de salida en formato little endian.
"-EB"
Producir datos de salida en formato little endian.
"-mpic"
Generar PIC.
"-mno-fp-as-gp-relax"
Suprimir la relajación fp-as-gp para este archivo.
"-mb2bb-relax"
Optimización de rama consecutiva.
"-mno-all-relax"
Suprime toda la relajación para este archivo.
"-march=<nombre_arquitectura>"
Ensambla para la arquitectura <nombre_arquitectura>, que puede ser v3, v3j, v3m, v3f, v3s, v2, v2j, v2f,
v2s.
"-mbaseline=<línea_base>"
Ensambla para la línea de base <línea_base>, que puede ser v2, v3, v3m.
"-mfpu-freg=FREG"
Especifica una configuración de FPU.
"0 8 registros SP / 4 registros DP"
"1 16 registros SP / 8 registros DP"
"2 32 registros SP / 16 registros DP"
"3 32 registros SP / 32 registros DP"
"-mabi=abi"
Especifica una versión de ABI <abi>, que puede ser v1, v2, v2fp, v2fpp.
"-m[no-]mac"
Habilita/Deshabilita el soporte de instrucciones de multiplicación.
"-m[no-]div"
Habilita/Deshabilita el soporte de instrucciones de división.
"-m[no-]16bit-ext"
Habilita/Deshabilita la extensión de 16 bits.
"-m[no-]dx-regs"
Habilita/Deshabilita los registros d0/d1.
"-m[no-]perf-ext"
Habilita/Deshabilita la extensión de rendimiento.
"-m[no-]perf2-ext"
Habilita/Deshabilita la extensión de rendimiento 2.
"-m[no-]string-ext"
Habilita/Deshabilita la extensión de cadena.
"-m[no-]reduced-regs"
Habilita/Deshabilita la configuración de registros reducidos (GPR16).
"-m[no-]audio-isa-ext"
Habilita/Deshabilita la extensión de la ISA de AUDIO.
"-m[no-]fpu-sp-ext"
Habilita/Deshabilita la extensión FPU SP.
"-m[no-]fpu-dp-ext"
Habilita/Deshabilita la extensión FPU DP.
"-m[no-]fpu-fma"
Habilita/Deshabilita las instrucciones de suma-multiplicación fusionada de la FPU.
"-mall-ext"
Activa todas las extensiones y el soporte de instrucciones.
Las siguientes opciones están disponibles cuando se configura para un procesador PowerPC.
-a32
Genera ELF32 o XCOFF32.
-a64
Genera ELF64 o XCOFF64.
-K PIC
Establece EF\_PPC\_RELOCATABLE\_LIB en las banderas ELF.
-mpwrx | -mpwr2
Genera código para POWER/2 (RIOS2).
-mpwr
Genera código para POWER (RIOS1).
-m601
Genera código para PowerPC 601.
-mppc, -mppc32, -m603, -m604
Genera código para PowerPC 603/604.
-m403, -m405
Genera código para PowerPC 403/405.
-m440
Genera código para PowerPC 440. BookE y algunas instrucciones 405.
-m464
Genera código para PowerPC 464.
-m476
Genera código para PowerPC 476.
-m7400, -m7410, -m7450, -m7455
Genera código para PowerPC 7400/7410/7450/7455.
-m750cl, -mgekko, -mbroadway
Genera código para PowerPC 750CL/Gekko/Broadway.
-m821, -m850, -m860
Genera código para PowerPC 821/850/860.
-mppc64, -m620
Genera código para PowerPC 620/625/630.
-me200z2, -me200z4
Genera código para las variantes e200, e200z2 con LSP, e200z4 con SPE.
-me300
Genera código para la familia PowerPC e300.
-me500, -me500x2
Genera código para el complejo de núcleo Motorola e500.
-me500mc
Genera código para el complejo de núcleo Freescale e500mc.
-me500mc64
Genera código para el complejo de núcleo Freescale e500mc64.
-me5500
Genera código para el complejo de núcleo Freescale e5500.
-me6500
Genera código para el complejo de núcleo Freescale e6500.
-mlsp
Habilita las instrucciones LSP. (Deshabilita SPE y SPE2).
-mspe
Genera código para las instrucciones Motorola SPE. (Deshabilita LSP).
-mspe2
Genera código para las instrucciones Freescale SPE2. (Deshabilita LSP).
-mtitan
Genera código para el complejo de núcleo AppliedMicro Titan.
-mppc64bridge
Genera código para PowerPC 64, incluidas las instrucciones de puente.
-mbooke
Genera código para BookE de 32 bits.
-ma2
Genera código para la arquitectura A2.
-maltivec
Genera código para procesadores con instrucciones AltiVec.
-mvle
Genera código para instrucciones Freescale PowerPC VLE.
-mvsx
Genera código para procesadores con instrucciones Vector-Scalar (VSX).
-mhtm
Genera código para procesadores con instrucciones de memoria transaccional de hardware.
-mpower4, -mpwr4
Genera código para la arquitectura Power4.
-mpower5, -mpwr5, -mpwr5x
Genera código para la arquitectura Power5.
-mpower6, -mpwr6
Genera código para la arquitectura Power6.
-mpower7, -mpwr7
Genera código para la arquitectura Power7.
-mpower8, -mpwr8
Genera código para la arquitectura Power8.
-mpower9, -mpwr9
Genera código para la arquitectura Power9.
-mpower10, -mpwr10
Genera código para la arquitectura Power10.
-mpower11, -mpwr11
Genera código para la arquitectura Power11.
-mfuture
Genera código para la arquitectura 'future'.
-mcell
-mcell
Genera código para la arquitectura Cell Broadband Engine.
-mcom
Genera instrucciones comunes de Power/PowerPC.
-many
Genera código para cualquier arquitectura (PWR/PWRX/PPC).
-mregnames
Permite nombres simbólicos para los registros.
-mno-regnames
No permite nombres simbólicos para los registros.
-mrelocatable
Soporte para la opción -mrelocatable de GCC.
-mrelocatable-lib
Soporte para la opción -mrelocatable-lib de GCC.
-memb
Establece el bit PPC_EMB en las banderas ELF.
-mlittle, -mlittle-endian, -le
Genera código para una máquina de endianness little.
-mbig, -mbig-endian, -be
Genera código para una máquina de endianness big.
-nops=count
Si una directiva de alineación inserta más de 'count' nops, coloca una rama al principio para omitir la ejecución de los nops.
Las siguientes opciones están disponibles cuando as está configurado para un procesador RISC-V.
-fpic
-fPIC
Genera código independiente de la posición.
-fno-pic
No genera código independiente de la posición (por defecto).
-march=ISA|Profiles|Profiles_ISA
Selecciona la ISA base, según se especifique en ISA o Profiles o Profiles_ISA. Por ejemplo, -march=rv32ima -march=RVI20U64 -march=RVI20U64_d. Si esta opción y los atributos de arquitectura no están configurados, el ensamblador verificará la configuración predeterminada --with-arch=ISA.
-misa-spec=ISAspec
Selecciona la versión de especificación ISA predeterminada. Si la versión de ISA no está configurada por -march, entonces el ensamblador ayuda a establecer la versión de acuerdo con la especificación elegida de forma predeterminada. Si esta opción no está configurada, entonces el ensamblador verificará la configuración predeterminada --with-isa-spec=ISAspec.
-mpriv-spec=PRIVspec
Selecciona la versión de especificación de privilegios. Podemos decidir si el CSR es válido o no, según la especificación elegida. Si esta opción y los atributos de privilegio no están configurados, entonces el ensamblador verificará la configuración predeterminada --with-priv-spec=PRIVspec.
-mabi=ABI
Selecciona la ABI, que es "ilp32" o "lp64", seguido opcionalmente por "f", "d" o "q" para indicar una convención de llamada de punto flotante de precisión simple, doble o cuádruple, o ninguno o "e" para indicar una convención de llamada de punto flotante suave ("e" indica una ABI RVE de punto flotante suave).
-mrelax
Aproveche las relajaciones del enlazador para reducir el número de instrucciones necesarias para materializar las direcciones de los símbolos. (predeterminado)
-mno-relax
No realice relajaciones del enlazador.
-march-attr
Genere el contenido predeterminado para la sección de atributos ELF de RISC-V si las directivas
.attribute no están establecidas. Esta sección se utiliza para registrar la información que
un enlazador o un cargador en tiempo de ejecución necesita para verificar la compatibilidad. Esta
información incluye la cadena ISA, el requisito de alineación de la pila, los accesos a memoria
no alineados y las versiones principal, secundaria y de revisión de la especificación
privilegiada.
-mno-arch-attr
No genere la sección de atributos ELF de RISC-V si las directivas .attribute no están
establecidas.
-mcsr-check
Habilite la verificación de CSR para los CSR dependientes de la ISA y los CSR de solo lectura. Los CSR dependientes de la ISA solo son válidos cuando se establece la ISA específica. Los CSR de solo lectura no pueden ser escritos por las instrucciones CSR.
-mno-csr-check
No realice la verificación de CSR.
-mlittle-endian
Genere código para una máquina de orden de bytes little-endian.
-mbig-endian
Genere código para una máquina de orden de bytes big-endian.
Consulte las páginas de información para obtener documentación sobre las opciones específicas de RX.
Las siguientes opciones están disponibles cuando as está configurado para la familia de procesadores s390.
-m31
-m64
Seleccione el tamaño de palabra, ya sea 31/32 bits o 64 bits.
-mesa
-mzarch
Seleccione el modo de arquitectura, ya sea el modo de Arquitectura de Sistema Empresarial (esa) o el modo de arquitectura z (zarch).
-march=procesador
Especifique la variante de procesador s390 de destino, g5 (o arch3), g6, z900 (o arch5), z990 (o arch6), z9-109, z9-ec (o arch7), z10 (o arch8), z196 (o arch9), zEC12 (o arch10), z13 (o arch11), z14 (o arch12), z15 (o arch13), z16 (o arch14) o z17 (o arch15).
-mregnames
-mno-regnames
Permita o impida los nombres simbólicos para los registros.
-mwarn-areg-zero
Advertir siempre que el operando para un registro base o de índice se haya especificado pero evalúe a cero.
-mwarn-regtype-mismatch=strict
-mwarn-regtype-mismatch=relaxed
-mwarn-regtype-mismatch=no
-mno-warn-regtype-mismatch
Controla si el ensamblador realiza las comprobaciones de tipo de nombre de registro y genera un mensaje de advertencia en caso de una incompatibilidad con el tipo de registro de operando. El valor predeterminado (que se puede restaurar mediante el argumento relajado) es realizar comprobaciones de tipo de nombre de registro relajadas, lo que permite que los nombres de registro de punto flotante (FPR) %f0 a %f15 se especifiquen como argumento de los operandos de registro vectorial (VR) y que los nombres de registro vectorial (VR) %v0 a %v15 se especifiquen como argumento de los operandos de registro de punto flotante (FPR). Esto es aceptable ya que los FPR están incrustados en la mitad inferior del VR. Usando el argumento estricto, se realizan comprobaciones de tipo de nombre de registro estrictas. El argumento no, que es equivalente a -mno-warn-regtype-mismatch, desactiva cualquier comprobación de tipo de nombre de registro.
Las siguientes opciones están disponibles cuando as está configurado para un procesador TMS320C6000.
-march=arch
Habilita (solo) las instrucciones de la arquitectura arch. Por defecto, se permiten todas las instrucciones.
Los siguientes valores de arch son aceptados: "c62x", "c64x", "c64x+", "c67x", "c67x+", "c674x".
-mdsbt
-mno-dsbt
La opción -mdsbt hace que el ensamblador genere el atributo "Tag_ABI_DSBT" con un valor de 1, lo que indica que el código está utilizando el direccionamiento DSBT. La opción -mno-dsbt, que es la opción por defecto, hace que la etiqueta tenga un valor de 0, lo que indica que el código no utiliza el direccionamiento DSBT. El enlazador emitirá una advertencia si se enlazan objetos de diferentes tipos (DSBT y no-DSBT).
-mpid=no
-mpid=near
-mpid=far
La opción -mpid= hace que el ensamblador genere el atributo "Tag_ABI_PID" con un valor que indica la forma de direccionamiento de datos utilizada por el código. -mpid=no, que es la opción por defecto, indica un direccionamiento de datos dependiente de la posición, -mpid=near indica un direccionamiento independiente de la posición con accesos GOT utilizando un direccionamiento DP cercano, y -mpid=far indica un direccionamiento independiente de la posición con accesos GOT utilizando un direccionamiento DP lejano. El enlazador emitirá una advertencia si se enlazan objetos construidos con diferentes configuraciones de esta opción.
-mpic
-mno-pic
La opción -mpic hace que el ensamblador genere el atributo "Tag_ABI_PIC" con un valor de 1, lo que indica que el código está utilizando un direccionamiento de código independiente de la posición. La opción -mno-pic, que es la opción por defecto, hace que la etiqueta tenga un valor de 0, lo que indica un direccionamiento de código dependiente de la posición. El enlazador emitirá una advertencia si se enlazan objetos de diferentes tipos (dependiente de la posición e independiente de la posición).
-mbig-endian
-mlittle-endian
Genera código para la endianness especificada. El valor por defecto es little-endian.
Las siguientes opciones están disponibles cuando as está configurado para un procesador TILE-Gx.
-m32 | -m64
Selecciona el tamaño de palabra, ya sea de 32 bits o de 64 bits.
-EB | -EL
Selecciona la endianness, ya sea big-endian (-EB) o little-endian (-EL).
La siguiente opción está disponible cuando as está configurado para un procesador Visium.
-mtune=arch
Esta opción especifica la arquitectura de destino. Si se intenta ensamblar una instrucción que no se ejecutará en la arquitectura de destino, el ensamblador emitirá un mensaje de error.
Los siguientes nombres son reconocidos: "mcm24", "mcm", "gr5", "gr6".
Las siguientes opciones están disponibles cuando as está configurado para un procesador Xtensa.
--text-section-literals | --no-text-section-literals
Controla el tratamiento de los grupos de literales. El valor por defecto es --no-text-section-literals, que coloca los literales en secciones separadas en el archivo de salida. Esto permite que el grupo de literales se coloque en una RAM/ROM de datos. Con --text-section-literals, los literales se intercalan en la sección de texto para mantenerlos lo más cerca posible de sus referencias. Esto puede ser necesario para archivos de ensamblaje grandes, donde los literales de otro modo estarían fuera del alcance de las instrucciones "L32R" en la sección de texto. Los literales se agrupan en grupos después de las directivas ".literal_position" o antes de las instrucciones "ENTRY". Estas opciones solo afectan a los literales referenciados mediante instrucciones PC-relativas "L32R"; los literales para las instrucciones "L32R" de modo absoluto se manejan por separado.
--auto-litpools | --no-auto-litpools
Controla el tratamiento de los pools de literales. El valor predeterminado es --no-auto-litpools, que, en la ausencia de --text-section-literals, coloca los literales en secciones separadas en el archivo de salida. Esto permite que el pool de literales se coloque en una RAM/ROM de datos. Con --auto-litpools, los literales se intercalan en la sección de texto para mantenerlos lo más cerca posible de sus referencias; no se requieren directivas explícitas ".literal_position". Esto puede ser necesario para funciones muy grandes, donde un solo pool de literales al principio de la función puede no ser accesible por las instrucciones "L32R" al final. Estas opciones solo afectan a los literales referenciados a través de las instrucciones "L32R" relativas a la PC; los literales para las instrucciones "L32R" de modo absoluto se manejan por separado. Cuando se utiliza junto con --text-section-literals, --auto-litpools tiene prioridad.
--absolute-literals | --no-absolute-literals
Indica al ensamblador si las instrucciones "L32R" utilizan direccionamiento absoluto o relativo a la PC. Si el procesador incluye la opción de direccionamiento absoluto, el valor predeterminado es utilizar las reubicaciones "L32R" absolutas. De lo contrario, solo se pueden utilizar las reubicaciones "L32R" relativas a la PC.
--target-align | --no-target-align
Habilita o deshabilita la alineación automática para reducir las penalizaciones de ramificación a costa de un mayor tamaño del código. Esta optimización está habilitada de forma predeterminada. Tenga en cuenta que el ensamblador siempre alineará las instrucciones como "LOOP" que tienen requisitos de alineación fijos.
--longcalls | --no-longcalls
Habilita o deshabilita la transformación de las instrucciones de llamada para permitir llamadas en un rango mayor de direcciones. Esta opción debe utilizarse cuando los destinos de las llamadas pueden estar potencialmente fuera de rango. Puede degradar tanto el tamaño del código como el rendimiento, pero el enlazador generalmente puede optimizar el sobrecódigo innecesario cuando una llamada termina dentro del rango. El valor predeterminado es --no-longcalls.
--transform | --no-transform
Habilita o deshabilita todas las transformaciones de instrucciones Xtensa del ensamblador, incluida la relajación y la optimización. El valor predeterminado es --transform; --no-transform solo debe utilizarse en los casos raros en que las instrucciones deben ser exactamente como se especifican en el código fuente del ensamblador. El uso de --no-transform hace que los operandos de instrucción fuera de rango se conviertan en errores.
--rename-section oldname=newname
Cambia el nombre de la sección oldname a newname. Se puede utilizar esta opción varias veces para cambiar el nombre de varias secciones.
--trampolines | --no-trampolines
Habilita o deshabilita la transformación de las instrucciones de salto para permitir saltos en un rango mayor de direcciones. Esta opción debe utilizarse cuando los destinos de salto pueden estar potencialmente fuera de rango. En ausencia de tales saltos, esta opción no afecta al tamaño del código ni al rendimiento. El valor predeterminado es --trampolines.
--abi-windowed | --abi-call0
Elija la etiqueta ABI que se escribirá en la sección ".xtensa.info". La etiqueta ABI indica la ABI del código ensamblador. El enlazador emitirá una advertencia si se intenta enlazar archivos objeto con etiquetas ABI inconsistentes. La ABI predeterminada la elige la configuración del núcleo Xtensa.
Las siguientes opciones están disponibles cuando as está configurado para un procesador Z80.
@chapter Características dependientes de Z80
Opciones de línea de comandos
-march=CPU[-EXT...][+EXT...]
Esta opción especifica el procesador de destino. El ensamblador emitirá un mensaje de error si se intenta ensamblar una instrucción que no se ejecutará en el procesador de destino. Los siguientes nombres de procesador son reconocidos: "z80", "z180", "ez80", "gbz80", "z80n", "r800". Además del conjunto de instrucciones básico, el ensamblador puede configurarse para que acepte algunos nemónicos de extensión. Por ejemplo, "-march=z180+sli+infc" extiende z180 con las instrucciones SLI y IN F,(C). Las siguientes extensiones son compatibles actualmente: "full" (todas las instrucciones conocidas), "adl" (modo ADL de CPU de forma predeterminada, solo eZ80), "sli" (instrucción conocida como SLI, SLL o SL1), "xyhl" (instrucciones con mitades de registros de índice: IXL, IXH, IYL, IYH), "xdcb" (instrucciones como RotOp (II+d),R y BitOp n,(II+d),R), "infc" (instrucción IN F,(C) o IN (C)), "outc0" (instrucción OUT (C),0). Tenga en cuenta que en lugar de extender un conjunto de instrucciones básico, los nemónicos de extensión que comienzan con "-" eliminan la funcionalidad respectiva: "-march=z80-full+xyhl" primero elimina todas las extensiones predeterminadas y luego agrega compatibilidad con las mitades de los registros de índice.
Si no se especifica esta opción, se asume "-march=z80+xyhl+infc".
-local-prefix=prefijo
Marque todas las etiquetas con el prefijo especificado como locales. Pero dicha etiqueta se puede marcar explícitamente como global en el código. Esta opción no cambia el prefijo local predeterminado de la etiqueta ".L", simplemente agrega uno nuevo.
-colonless
Acepte etiquetas sin dos puntos. Todos los símbolos al principio de la línea se tratan como etiquetas.
-sdcc
Acepte el código ensamblador producido por SDCC.
-fp-s=FORMATO
Formato de números de punto flotante de precisión simple. Predeterminado: ieee754 (32 bits).
-fp-d=FORMATO
Formato de números de punto flotante de doble precisión. Predeterminado: ieee754 (64 bits).
VER TAMBIÉN
gcc(1), ld(1) y las entradas de Info para binutils y ld.
DERECHOS DE AUTOR
Copyright (c) 1991-2025 Free Software Foundation, Inc.
Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la GNU Free Documentation License, Versión 1.3 o cualquier versión posterior publicada por la Free Software Foundation; sin Secciones invariantes, sin Textos de portada y sin Textos de contraportada. Se incluye una copia de la licencia en la sección titulada "GNU Free Documentation License".