Assembler Option Directive (.set)
Syntax
.set option
Description
The .set directive instructs the assembler to enable or disable certain options. The assembler has the following default options: reorder, macro, move, novolatile, and at. Only one option can be specified for each .set directive:
- The reorder option permits the assembler to reorder machine language instructions to improve performance.
- The noreorder option prevents the assembler from reordering machine language instructions. If a machine language instruction violates the hardware pipeline constraints, the assembler issues a warning message.
- The macro option permits the assembler to generate multiple machine instructions from a single assembler instruction. This is the default action.
- The nomacro option causes the assembler to print a warning whenever an assembler operation generates more than one machine language instruction. You must select the noreorder option before using the nomacro option; otherwise, an error results.
- The at option permits the assembler to use the $at register for macros, but generates warnings if the source program uses $at .
- When you use the noat option and an assembler operation requires the $at register, the assembler issues a warning message; however, the noat option does permit source programs to use $at without warnings being issued.
- The nomove options instructs the assembler to mark each subsequent instruction so that it cannot be moved during reorganization. The assembler can still move instructions from below the nomove region to above the region or vice versa. The nomove option has part of the effect of the "volatile" C declaration; it prevents otherwise independent loads or stores from occurring in a different order than intended.
- The move option cancels the effect of nomove.
- The volatile option instructs the assembler that subsequent load and store instructions may not be moved in relation to each other or removed by redundant load removal or other optimization. The volatile option is less restrictive than noreorder; it allows the assembler to move other instructions (that is, instructions other than load and store instructions) without restrictions.
- The novolatile option cancels the effect of the volatile option.