| <html lang="en"> |
| <head> |
| <title>MIPS Options - Using as</title> |
| <meta http-equiv="Content-Type" content="text/html"> |
| <meta name="description" content="Using as"> |
| <meta name="generator" content="makeinfo 4.13"> |
| <link title="Top" rel="start" href="index.html#Top"> |
| <link rel="up" href="MIPS_002dDependent.html#MIPS_002dDependent" title="MIPS-Dependent"> |
| <link rel="next" href="MIPS-Macros.html#MIPS-Macros" title="MIPS Macros"> |
| <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> |
| <!-- |
| This file documents the GNU Assembler "as". |
| |
| Copyright (C) 1991-2019 Free Software Foundation, Inc. |
| |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.3 |
| or any later version published by the Free Software Foundation; |
| with no Invariant Sections, with no Front-Cover Texts, and with no |
| Back-Cover Texts. A copy of the license is included in the |
| section entitled ``GNU Free Documentation License''. |
| |
| --> |
| <meta http-equiv="Content-Style-Type" content="text/css"> |
| <style type="text/css"><!-- |
| pre.display { font-family:inherit } |
| pre.format { font-family:inherit } |
| pre.smalldisplay { font-family:inherit; font-size:smaller } |
| pre.smallformat { font-family:inherit; font-size:smaller } |
| pre.smallexample { font-size:smaller } |
| pre.smalllisp { font-size:smaller } |
| span.sc { font-variant:small-caps } |
| span.roman { font-family:serif; font-weight:normal; } |
| span.sansserif { font-family:sans-serif; font-weight:normal; } |
| --></style> |
| </head> |
| <body> |
| <div class="node"> |
| <a name="MIPS-Options"></a> |
| <p> |
| Next: <a rel="next" accesskey="n" href="MIPS-Macros.html#MIPS-Macros">MIPS Macros</a>, |
| Up: <a rel="up" accesskey="u" href="MIPS_002dDependent.html#MIPS_002dDependent">MIPS-Dependent</a> |
| <hr> |
| </div> |
| |
| <h4 class="subsection">9.27.1 Assembler options</h4> |
| |
| <p>The MIPS configurations of <span class="sc">gnu</span> <code>as</code> support these |
| special options: |
| |
| |
| <a name="index-g_t_0040code_007b_002dG_007d-option-_0028MIPS_0029-1555"></a> |
| <dl><dt><code>-G </code><var>num</var><dd>Set the “small data” limit to <var>n</var> bytes. The default limit is 8 bytes. |
| See <a href="MIPS-Small-Data.html#MIPS-Small-Data">Controlling the use of small data accesses</a>. |
| |
| <p><a name="index-g_t_0040code_007b_002dEB_007d-option-_0028MIPS_0029-1556"></a><a name="index-g_t_0040code_007b_002dEL_007d-option-_0028MIPS_0029-1557"></a><a name="index-MIPS-big_002dendian-output-1558"></a><a name="index-MIPS-little_002dendian-output-1559"></a><a name="index-big_002dendian-output_002c-MIPS-1560"></a><a name="index-little_002dendian-output_002c-MIPS-1561"></a><br><dt><code>-EB</code><dt><code>-EL</code><dd>Any MIPS configuration of <code>as</code> can select big-endian or |
| little-endian output at run time (unlike the other <span class="sc">gnu</span> development |
| tools, which must be configured for one or the other). Use ‘<samp><span class="samp">-EB</span></samp>’ |
| to select big-endian output, and ‘<samp><span class="samp">-EL</span></samp>’ for little-endian. |
| |
| <br><dt><code>-KPIC</code><dd><a name="index-PIC-selection_002c-MIPS-1562"></a><a name="index-g_t_0040option_007b_002dKPIC_007d-option_002c-MIPS-1563"></a>Generate SVR4-style PIC. This option tells the assembler to generate |
| SVR4-style position-independent macro expansions. It also tells the |
| assembler to mark the output file as PIC. |
| |
| <br><dt><code>-mvxworks-pic</code><dd><a name="index-g_t_0040option_007b_002dmvxworks_002dpic_007d-option_002c-MIPS-1564"></a>Generate VxWorks PIC. This option tells the assembler to generate |
| VxWorks-style position-independent macro expansions. |
| |
| <p><a name="index-MIPS-architecture-options-1565"></a><br><dt><code>-mips1</code><dt><code>-mips2</code><dt><code>-mips3</code><dt><code>-mips4</code><dt><code>-mips5</code><dt><code>-mips32</code><dt><code>-mips32r2</code><dt><code>-mips32r3</code><dt><code>-mips32r5</code><dt><code>-mips32r6</code><dt><code>-mips64</code><dt><code>-mips64r2</code><dt><code>-mips64r3</code><dt><code>-mips64r5</code><dt><code>-mips64r6</code><dd>Generate code for a particular MIPS Instruction Set Architecture level. |
| ‘<samp><span class="samp">-mips1</span></samp>’ corresponds to the R2000 and R3000 processors, |
| ‘<samp><span class="samp">-mips2</span></samp>’ to the R6000 processor, ‘<samp><span class="samp">-mips3</span></samp>’ to the |
| R4000 processor, and ‘<samp><span class="samp">-mips4</span></samp>’ to the R8000 and R10000 processors. |
| ‘<samp><span class="samp">-mips5</span></samp>’, ‘<samp><span class="samp">-mips32</span></samp>’, ‘<samp><span class="samp">-mips32r2</span></samp>’, ‘<samp><span class="samp">-mips32r3</span></samp>’, |
| ‘<samp><span class="samp">-mips32r5</span></samp>’, ‘<samp><span class="samp">-mips32r6</span></samp>’, ‘<samp><span class="samp">-mips64</span></samp>’, ‘<samp><span class="samp">-mips64r2</span></samp>’, |
| ‘<samp><span class="samp">-mips64r3</span></samp>’, ‘<samp><span class="samp">-mips64r5</span></samp>’, and ‘<samp><span class="samp">-mips64r6</span></samp>’ correspond to |
| generic MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 |
| Release 5, MIPS32 Release 6, MIPS64, and MIPS64 Release 2, MIPS64 |
| Release 3, MIPS64 Release 5, and MIPS64 Release 6 ISA processors, |
| respectively. You can also switch instruction sets during the assembly; |
| see <a href="MIPS-ISA.html#MIPS-ISA">Directives to override the ISA level</a>. |
| |
| <br><dt><code>-mgp32</code><dt><code>-mfp32</code><dd>Some macros have different expansions for 32-bit and 64-bit registers. |
| The register sizes are normally inferred from the ISA and ABI, but these |
| flags force a certain group of registers to be treated as 32 bits wide at |
| all times. ‘<samp><span class="samp">-mgp32</span></samp>’ controls the size of general-purpose registers |
| and ‘<samp><span class="samp">-mfp32</span></samp>’ controls the size of floating-point registers. |
| |
| <p>The <code>.set gp=32</code> and <code>.set fp=32</code> directives allow the size |
| of registers to be changed for parts of an object. The default value is |
| restored by <code>.set gp=default</code> and <code>.set fp=default</code>. |
| |
| <p>On some MIPS variants there is a 32-bit mode flag; when this flag is |
| set, 64-bit instructions generate a trap. Also, some 32-bit OSes only |
| save the 32-bit registers on a context switch, so it is essential never |
| to use the 64-bit registers. |
| |
| <br><dt><code>-mgp64</code><dt><code>-mfp64</code><dd>Assume that 64-bit registers are available. This is provided in the |
| interests of symmetry with ‘<samp><span class="samp">-mgp32</span></samp>’ and ‘<samp><span class="samp">-mfp32</span></samp>’. |
| |
| <p>The <code>.set gp=64</code> and <code>.set fp=64</code> directives allow the size |
| of registers to be changed for parts of an object. The default value is |
| restored by <code>.set gp=default</code> and <code>.set fp=default</code>. |
| |
| <br><dt><code>-mfpxx</code><dd>Make no assumptions about whether 32-bit or 64-bit floating-point |
| registers are available. This is provided to support having modules |
| compatible with either ‘<samp><span class="samp">-mfp32</span></samp>’ or ‘<samp><span class="samp">-mfp64</span></samp>’. This option can |
| only be used with MIPS II and above. |
| |
| <p>The <code>.set fp=xx</code> directive allows a part of an object to be marked |
| as not making assumptions about 32-bit or 64-bit FP registers. The |
| default value is restored by <code>.set fp=default</code>. |
| |
| <br><dt><code>-modd-spreg</code><dt><code>-mno-odd-spreg</code><dd>Enable use of floating-point operations on odd-numbered single-precision |
| registers when supported by the ISA. ‘<samp><span class="samp">-mfpxx</span></samp>’ implies |
| ‘<samp><span class="samp">-mno-odd-spreg</span></samp>’, otherwise the default is ‘<samp><span class="samp">-modd-spreg</span></samp>’ |
| |
| <br><dt><code>-mips16</code><dt><code>-no-mips16</code><dd>Generate code for the MIPS 16 processor. This is equivalent to putting |
| <code>.module mips16</code> at the start of the assembly file. ‘<samp><span class="samp">-no-mips16</span></samp>’ |
| turns off this option. |
| |
| <br><dt><code>-mmips16e2</code><dt><code>-mno-mips16e2</code><dd>Enable the use of MIPS16e2 instructions in MIPS16 mode. This is equivalent |
| to putting <code>.module mips16e2</code> at the start of the assembly file. |
| ‘<samp><span class="samp">-mno-mips16e2</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mmicromips</code><dt><code>-mno-micromips</code><dd>Generate code for the microMIPS processor. This is equivalent to putting |
| <code>.module micromips</code> at the start of the assembly file. |
| ‘<samp><span class="samp">-mno-micromips</span></samp>’ turns off this option. This is equivalent to putting |
| <code>.module nomicromips</code> at the start of the assembly file. |
| |
| <br><dt><code>-msmartmips</code><dt><code>-mno-smartmips</code><dd>Enables the SmartMIPS extensions to the MIPS32 instruction set, which |
| provides a number of new instructions which target smartcard and |
| cryptographic applications. This is equivalent to putting |
| <code>.module smartmips</code> at the start of the assembly file. |
| ‘<samp><span class="samp">-mno-smartmips</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mips3d</code><dt><code>-no-mips3d</code><dd>Generate code for the MIPS-3D Application Specific Extension. |
| This tells the assembler to accept MIPS-3D instructions. |
| ‘<samp><span class="samp">-no-mips3d</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mdmx</code><dt><code>-no-mdmx</code><dd>Generate code for the MDMX Application Specific Extension. |
| This tells the assembler to accept MDMX instructions. |
| ‘<samp><span class="samp">-no-mdmx</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mdsp</code><dt><code>-mno-dsp</code><dd>Generate code for the DSP Release 1 Application Specific Extension. |
| This tells the assembler to accept DSP Release 1 instructions. |
| ‘<samp><span class="samp">-mno-dsp</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mdspr2</code><dt><code>-mno-dspr2</code><dd>Generate code for the DSP Release 2 Application Specific Extension. |
| This option implies ‘<samp><span class="samp">-mdsp</span></samp>’. |
| This tells the assembler to accept DSP Release 2 instructions. |
| ‘<samp><span class="samp">-mno-dspr2</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mdspr3</code><dt><code>-mno-dspr3</code><dd>Generate code for the DSP Release 3 Application Specific Extension. |
| This option implies ‘<samp><span class="samp">-mdsp</span></samp>’ and ‘<samp><span class="samp">-mdspr2</span></samp>’. |
| This tells the assembler to accept DSP Release 3 instructions. |
| ‘<samp><span class="samp">-mno-dspr3</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mmt</code><dt><code>-mno-mt</code><dd>Generate code for the MT Application Specific Extension. |
| This tells the assembler to accept MT instructions. |
| ‘<samp><span class="samp">-mno-mt</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mmcu</code><dt><code>-mno-mcu</code><dd>Generate code for the MCU Application Specific Extension. |
| This tells the assembler to accept MCU instructions. |
| ‘<samp><span class="samp">-mno-mcu</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mmsa</code><dt><code>-mno-msa</code><dd>Generate code for the MIPS SIMD Architecture Extension. |
| This tells the assembler to accept MSA instructions. |
| ‘<samp><span class="samp">-mno-msa</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mxpa</code><dt><code>-mno-xpa</code><dd>Generate code for the MIPS eXtended Physical Address (XPA) Extension. |
| This tells the assembler to accept XPA instructions. |
| ‘<samp><span class="samp">-mno-xpa</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mvirt</code><dt><code>-mno-virt</code><dd>Generate code for the Virtualization Application Specific Extension. |
| This tells the assembler to accept Virtualization instructions. |
| ‘<samp><span class="samp">-mno-virt</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mcrc</code><dt><code>-mno-crc</code><dd>Generate code for the cyclic redundancy check (CRC) Application Specific |
| Extension. This tells the assembler to accept CRC instructions. |
| ‘<samp><span class="samp">-mno-crc</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mginv</code><dt><code>-mno-ginv</code><dd>Generate code for the Global INValidate (GINV) Application Specific |
| Extension. This tells the assembler to accept GINV instructions. |
| ‘<samp><span class="samp">-mno-ginv</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mloongson-mmi</code><dt><code>-mno-loongson-mmi</code><dd>Generate code for the Loongson MultiMedia extensions Instructions (MMI) |
| Application Specific Extension. This tells the assembler to accept MMI |
| instructions. |
| ‘<samp><span class="samp">-mno-loongson-mmi</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mloongson-cam</code><dt><code>-mno-loongson-cam</code><dd>Generate code for the Loongson Content Address Memory (CAM) |
| Application Specific Extension. This tells the assembler to accept CAM |
| instructions. |
| ‘<samp><span class="samp">-mno-loongson-cam</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mloongson-ext</code><dt><code>-mno-loongson-ext</code><dd>Generate code for the Loongson EXTensions (EXT) instructions |
| Application Specific Extension. This tells the assembler to accept EXT |
| instructions. |
| ‘<samp><span class="samp">-mno-loongson-ext</span></samp>’ turns off this option. |
| |
| <br><dt><code>-mloongson-ext2</code><dt><code>-mno-loongson-ext2</code><dd>Generate code for the Loongson EXTensions R2 (EXT2) instructions |
| Application Specific Extension. This tells the assembler to accept EXT2 |
| instructions. |
| ‘<samp><span class="samp">-mno-loongson-ext2</span></samp>’ turns off this option. |
| |
| <br><dt><code>-minsn32</code><dt><code>-mno-insn32</code><dd>Only use 32-bit instruction encodings when generating code for the |
| microMIPS processor. This option inhibits the use of any 16-bit |
| instructions. This is equivalent to putting <code>.set insn32</code> at |
| the start of the assembly file. ‘<samp><span class="samp">-mno-insn32</span></samp>’ turns off this |
| option. This is equivalent to putting <code>.set noinsn32</code> at the |
| start of the assembly file. By default ‘<samp><span class="samp">-mno-insn32</span></samp>’ is |
| selected, allowing all instructions to be used. |
| |
| <br><dt><code>-mfix7000</code><dt><code>-mno-fix7000</code><dd>Cause nops to be inserted if the read of the destination register |
| of an mfhi or mflo instruction occurs in the following two instructions. |
| |
| <br><dt><code>-mfix-rm7000</code><dt><code>-mno-fix-rm7000</code><dd>Cause nops to be inserted if a dmult or dmultu instruction is |
| followed by a load instruction. |
| |
| <br><dt><code>-mfix-loongson2f-jump</code><dt><code>-mno-fix-loongson2f-jump</code><dd>Eliminate instruction fetch from outside 256M region to work around the |
| Loongson2F ‘<samp><span class="samp">jump</span></samp>’ instructions. Without it, under extreme cases, |
| the kernel may crash. The issue has been solved in latest processor |
| batches, but this fix has no side effect to them. |
| |
| <br><dt><code>-mfix-loongson2f-nop</code><dt><code>-mno-fix-loongson2f-nop</code><dd>Replace nops by <code>or at,at,zero</code> to work around the Loongson2F |
| ‘<samp><span class="samp">nop</span></samp>’ errata. Without it, under extreme cases, the CPU might |
| deadlock. The issue has been solved in later Loongson2F batches, but |
| this fix has no side effect to them. |
| |
| <br><dt><code>-mfix-loongson3-llsc</code><dt><code>-mno-fix-loongson3-llsc</code><dd>Insert ‘<samp><span class="samp">sync</span></samp>’ before ‘<samp><span class="samp">ll</span></samp>’ and ‘<samp><span class="samp">lld</span></samp>’ to work around |
| Loongson3 LLSC errata. Without it, under extrame cases, the CPU might |
| deadlock. The default can be controlled by the |
| <samp><span class="option">--enable-mips-fix-loongson3-llsc=[yes|no]</span></samp> configure option. |
| |
| <br><dt><code>-mfix-vr4120</code><dt><code>-mno-fix-vr4120</code><dd>Insert nops to work around certain VR4120 errata. This option is |
| intended to be used on GCC-generated code: it is not designed to catch |
| all problems in hand-written assembler code. |
| |
| <br><dt><code>-mfix-vr4130</code><dt><code>-mno-fix-vr4130</code><dd>Insert nops to work around the VR4130 ‘<samp><span class="samp">mflo</span></samp>’/‘<samp><span class="samp">mfhi</span></samp>’ errata. |
| |
| <br><dt><code>-mfix-24k</code><dt><code>-mno-fix-24k</code><dd>Insert nops to work around the 24K ‘<samp><span class="samp">eret</span></samp>’/‘<samp><span class="samp">deret</span></samp>’ errata. |
| |
| <br><dt><code>-mfix-cn63xxp1</code><dt><code>-mno-fix-cn63xxp1</code><dd>Replace <code>pref</code> hints 0 - 4 and 6 - 24 with hint 28 to work around |
| certain CN63XXP1 errata. |
| |
| <br><dt><code>-mfix-r5900</code><dt><code>-mno-fix-r5900</code><dd>Do not attempt to schedule the preceding instruction into the delay slot |
| of a branch instruction placed at the end of a short loop of six |
| instructions or fewer and always schedule a <code>nop</code> instruction there |
| instead. The short loop bug under certain conditions causes loops to |
| execute only once or twice, due to a hardware bug in the R5900 chip. |
| |
| <br><dt><code>-m4010</code><dt><code>-no-m4010</code><dd>Generate code for the LSI R4010 chip. This tells the assembler to |
| accept the R4010-specific instructions (‘<samp><span class="samp">addciu</span></samp>’, ‘<samp><span class="samp">ffc</span></samp>’, |
| etc.), and to not schedule ‘<samp><span class="samp">nop</span></samp>’ instructions around accesses to |
| the ‘<samp><span class="samp">HI</span></samp>’ and ‘<samp><span class="samp">LO</span></samp>’ registers. ‘<samp><span class="samp">-no-m4010</span></samp>’ turns off this |
| option. |
| |
| <br><dt><code>-m4650</code><dt><code>-no-m4650</code><dd>Generate code for the MIPS R4650 chip. This tells the assembler to accept |
| the ‘<samp><span class="samp">mad</span></samp>’ and ‘<samp><span class="samp">madu</span></samp>’ instruction, and to not schedule ‘<samp><span class="samp">nop</span></samp>’ |
| instructions around accesses to the ‘<samp><span class="samp">HI</span></samp>’ and ‘<samp><span class="samp">LO</span></samp>’ registers. |
| ‘<samp><span class="samp">-no-m4650</span></samp>’ turns off this option. |
| |
| <br><dt><code>-m3900</code><dt><code>-no-m3900</code><dt><code>-m4100</code><dt><code>-no-m4100</code><dd>For each option ‘<samp><span class="samp">-m</span><var>nnnn</var></samp>’, generate code for the MIPS |
| R<var>nnnn</var> chip. This tells the assembler to accept instructions |
| specific to that chip, and to schedule for that chip's hazards. |
| |
| <br><dt><code>-march=</code><var>cpu</var><dd>Generate code for a particular MIPS CPU. It is exactly equivalent to |
| ‘<samp><span class="samp">-m</span><var>cpu</var></samp>’, except that there are more value of <var>cpu</var> |
| understood. Valid <var>cpu</var> value are: |
| |
| <blockquote> |
| 2000, |
| 3000, |
| 3900, |
| 4000, |
| 4010, |
| 4100, |
| 4111, |
| vr4120, |
| vr4130, |
| vr4181, |
| 4300, |
| 4400, |
| 4600, |
| 4650, |
| 5000, |
| rm5200, |
| rm5230, |
| rm5231, |
| rm5261, |
| rm5721, |
| vr5400, |
| vr5500, |
| 6000, |
| rm7000, |
| 8000, |
| rm9000, |
| 10000, |
| 12000, |
| 14000, |
| 16000, |
| 4kc, |
| 4km, |
| 4kp, |
| 4ksc, |
| 4kec, |
| 4kem, |
| 4kep, |
| 4ksd, |
| m4k, |
| m4kp, |
| m14k, |
| m14kc, |
| m14ke, |
| m14kec, |
| 24kc, |
| 24kf2_1, |
| 24kf, |
| 24kf1_1, |
| 24kec, |
| 24kef2_1, |
| 24kef, |
| 24kef1_1, |
| 34kc, |
| 34kf2_1, |
| 34kf, |
| 34kf1_1, |
| 34kn, |
| 74kc, |
| 74kf2_1, |
| 74kf, |
| 74kf1_1, |
| 74kf3_2, |
| 1004kc, |
| 1004kf2_1, |
| 1004kf, |
| 1004kf1_1, |
| interaptiv, |
| interaptiv-mr2, |
| m5100, |
| m5101, |
| p5600, |
| 5kc, |
| 5kf, |
| 20kc, |
| 25kf, |
| sb1, |
| sb1a, |
| i6400, |
| i6500, |
| p6600, |
| loongson2e, |
| loongson2f, |
| gs464, |
| gs464e, |
| gs264e, |
| octeon, |
| octeon+, |
| octeon2, |
| octeon3, |
| xlr, |
| xlp |
| </blockquote> |
| |
| <p>For compatibility reasons, ‘<samp><var>n</var><span class="samp">x</span></samp>’ and ‘<samp><var>b</var><span class="samp">fx</span></samp>’ are |
| accepted as synonyms for ‘<samp><var>n</var><span class="samp">f1_1</span></samp>’. These values are |
| deprecated. |
| |
| <br><dt><code>-mtune=</code><var>cpu</var><dd>Schedule and tune for a particular MIPS CPU. Valid <var>cpu</var> values are |
| identical to ‘<samp><span class="samp">-march=</span><var>cpu</var></samp>’. |
| |
| <br><dt><code>-mabi=</code><var>abi</var><dd>Record which ABI the source code uses. The recognized arguments |
| are: ‘<samp><span class="samp">32</span></samp>’, ‘<samp><span class="samp">n32</span></samp>’, ‘<samp><span class="samp">o64</span></samp>’, ‘<samp><span class="samp">64</span></samp>’ and ‘<samp><span class="samp">eabi</span></samp>’. |
| |
| <br><dt><code>-msym32</code><dt><code>-mno-sym32</code><dd><a name="index-g_t_002dmsym32-1566"></a><a name="index-g_t_002dmno_002dsym32-1567"></a>Equivalent to adding <code>.set sym32</code> or <code>.set nosym32</code> to |
| the beginning of the assembler input. See <a href="MIPS-Symbol-Sizes.html#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a>. |
| |
| <p><a name="index-g_t_0040code_007b_002dnocpp_007d-ignored-_0028MIPS_0029-1568"></a><br><dt><code>-nocpp</code><dd>This option is ignored. It is accepted for command-line compatibility with |
| other assemblers, which use it to turn off C style preprocessing. With |
| <span class="sc">gnu</span> <code>as</code>, there is no need for ‘<samp><span class="samp">-nocpp</span></samp>’, because the |
| <span class="sc">gnu</span> assembler itself never runs the C preprocessor. |
| |
| <br><dt><code>-msoft-float</code><dt><code>-mhard-float</code><dd>Disable or enable floating-point instructions. Note that by default |
| floating-point instructions are always allowed even with CPU targets |
| that don't have support for these instructions. |
| |
| <br><dt><code>-msingle-float</code><dt><code>-mdouble-float</code><dd>Disable or enable double-precision floating-point operations. Note |
| that by default double-precision floating-point operations are always |
| allowed even with CPU targets that don't have support for these |
| operations. |
| |
| <br><dt><code>--construct-floats</code><dt><code>--no-construct-floats</code><dd>The <code>--no-construct-floats</code> option disables the construction of |
| double width floating point constants by loading the two halves of the |
| value into the two single width floating point registers that make up |
| the double width register. This feature is useful if the processor |
| support the FR bit in its status register, and this bit is known (by |
| the programmer) to be set. This bit prevents the aliasing of the double |
| width register by the single width registers. |
| |
| <p>By default <code>--construct-floats</code> is selected, allowing construction |
| of these floating point constants. |
| |
| <br><dt><code>--relax-branch</code><dt><code>--no-relax-branch</code><dd>The ‘<samp><span class="samp">--relax-branch</span></samp>’ option enables the relaxation of out-of-range |
| branches. Any branches whose target cannot be reached directly are |
| converted to a small instruction sequence including an inverse-condition |
| branch to the physically next instruction, and a jump to the original |
| target is inserted between the two instructions. In PIC code the jump |
| will involve further instructions for address calculation. |
| |
| <p>The <code>BC1ANY2F</code>, <code>BC1ANY2T</code>, <code>BC1ANY4F</code>, <code>BC1ANY4T</code>, |
| <code>BPOSGE32</code> and <code>BPOSGE64</code> instructions are excluded from |
| relaxation, because they have no complementing counterparts. They could |
| be relaxed with the use of a longer sequence involving another branch, |
| however this has not been implemented and if their target turns out of |
| reach, they produce an error even if branch relaxation is enabled. |
| |
| <p>Also no MIPS16 branches are ever relaxed. |
| |
| <p>By default ‘<samp><span class="samp">--no-relax-branch</span></samp>’ is selected, causing any out-of-range |
| branches to produce an error. |
| |
| <br><dt><code>-mignore-branch-isa</code><dt><code>-mno-ignore-branch-isa</code><dd>Ignore branch checks for invalid transitions between ISA modes. |
| |
| <p>The semantics of branches does not provide for an ISA mode switch, so in |
| most cases the ISA mode a branch has been encoded for has to be the same |
| as the ISA mode of the branch's target label. If the ISA modes do not |
| match, then such a branch, if taken, will cause the ISA mode to remain |
| unchanged and instructions that follow will be executed in the wrong ISA |
| mode causing the program to misbehave or crash. |
| |
| <p>In the case of the <code>BAL</code> instruction it may be possible to relax |
| it to an equivalent <code>JALX</code> instruction so that the ISA mode is |
| switched at the run time as required. For other branches no relaxation |
| is possible and therefore GAS has checks implemented that verify in |
| branch assembly that the two ISA modes match, and report an error |
| otherwise so that the problem with code can be diagnosed at the assembly |
| time rather than at the run time. |
| |
| <p>However some assembly code, including generated code produced by some |
| versions of GCC, may incorrectly include branches to data labels, which |
| appear to require a mode switch but are either dead or immediately |
| followed by valid instructions encoded for the same ISA the branch has |
| been encoded for. While not strictly correct at the source level such |
| code will execute as intended, so to help with these cases |
| ‘<samp><span class="samp">-mignore-branch-isa</span></samp>’ is supported which disables ISA mode checks |
| for branches. |
| |
| <p>By default ‘<samp><span class="samp">-mno-ignore-branch-isa</span></samp>’ is selected, causing any invalid |
| branch requiring a transition between ISA modes to produce an error. |
| |
| <p><a name="index-g_t_0040option_007b_002dmnan_003d_007d-command_002dline-option_002c-MIPS-1569"></a><br><dt><code>-mnan=</code><var>encoding</var><dd>This option indicates whether the source code uses the IEEE 2008 |
| NaN encoding (<samp><span class="option">-mnan=2008</span></samp>) or the original MIPS encoding |
| (<samp><span class="option">-mnan=legacy</span></samp>). It is equivalent to adding a <code>.nan</code> |
| directive to the beginning of the source file. See <a href="MIPS-NaN-Encodings.html#MIPS-NaN-Encodings">MIPS NaN Encodings</a>. |
| |
| <p><samp><span class="option">-mnan=legacy</span></samp> is the default if no <samp><span class="option">-mnan</span></samp> option or |
| <code>.nan</code> directive is used. |
| |
| <br><dt><code>--trap</code><dt><code>--no-break</code><dd><!-- FIXME! (1) reflect these options (next item too) in option summaries; --> |
| <!-- (2) stop teasing, say _which_ instructions expanded _how_. --> |
| <code>as</code> automatically macro expands certain division and |
| multiplication instructions to check for overflow and division by zero. This |
| option causes <code>as</code> to generate code to take a trap exception |
| rather than a break exception when an error is detected. The trap instructions |
| are only supported at Instruction Set Architecture level 2 and higher. |
| |
| <br><dt><code>--break</code><dt><code>--no-trap</code><dd>Generate code to take a break exception rather than a trap exception when an |
| error is detected. This is the default. |
| |
| <br><dt><code>-mpdr</code><dt><code>-mno-pdr</code><dd>Control generation of <code>.pdr</code> sections. Off by default on IRIX, on |
| elsewhere. |
| |
| <br><dt><code>-mshared</code><dt><code>-mno-shared</code><dd>When generating code using the Unix calling conventions (selected by |
| ‘<samp><span class="samp">-KPIC</span></samp>’ or ‘<samp><span class="samp">-mcall_shared</span></samp>’), gas will normally generate code |
| which can go into a shared library. The ‘<samp><span class="samp">-mno-shared</span></samp>’ option |
| tells gas to generate code which uses the calling convention, but can |
| not go into a shared library. The resulting code is slightly more |
| efficient. This option only affects the handling of the |
| ‘<samp><span class="samp">.cpload</span></samp>’ and ‘<samp><span class="samp">.cpsetup</span></samp>’ pseudo-ops. |
| </dl> |
| |
| </body></html> |
| |