内に含ま
その他のドキュメント
サポート リソース
| PDF 文書ファイルをダウンロードする
Pseudo-Operations
A
- The pseudo-operations listed in this appendix are supported by the SPARC assembler.
Alphabetized Listing with Descriptions
.alias
- Turns off the effect of the preceding .noalias pseudo-op. (Compiler-generated only.)
.align boundary
- Aligns the location counter on a boundary where (("location counter" mod boundary)==0); boundary may be any power of 2.
.ascii "string" [, "string"]*
- Generates the given sequence(s) of ASCII characters.
.asciz "string" [, "string"]*
- Generates the given sequence(s) of ASCII characters. This pseudo-op appends a null (zero) byte to each string.
.byte 8bitval [, 8bitval]*
- Generates (a sequence of) initialized bytes in the current segment.
.common symbol, size [, "sect_name"] [, alignment]
- Provides a tentative definition of symbol. Size bytes are allocated for the object represented by symbol.
-
- If the symbol is not defined in the input file and is declared to be local to the file, the symbol is allocated in sect_name and its location is optionally aligned to a multiple of alignment. If sect_name is not given, the symbol is allocated in the uninitialized data section (bss). Currently, only ".bss" is supported for the section name.
- If the symbol is not defined in the input file and is declared to be global, the SPARC link editor allocates storage for the symbol, depending on the definition of symbol_name in other files. Global is the default binding for common symbols.
- If the symbol is defined in the input file, the definition specifies the location of the symbol and the tentative definition is overridden.
.double 0rfloatval [, 0rfloatval]*
- Generates (a sequence of) initialized double-precision floating-point values in the current segment. floatval is a string acceptable to atof(3); that is, an optional sign followed by a non-empty string of digits with optional decimal point and optional exponent.
.empty
- Suppresses assembler complaints about the next instruction presence in a delay slot when used in the delay slot of a Control Transfer Instruction (CTI).
- Some instructions should not be in the delay slot of a CTI. See the SPARC Architecture Manual for details.
.file "string"
- Creates a symbol table entry where string is the symbol name and STT_FILE is the symbol table type. string specifies the name of the source file associated with the object file.
.global symbol [, symbol]* .globl symbol [, symbol]*
- Declares each symbol in the list to be global; that is, each symbol is either defined externally or defined in the input file and accessible in other files; default bindings for the symbol are overridden.
-
- A global symbol definition in one file will satisfy an undefined reference to the same global symbol in another file.
- Multiple definitions of a defined global symbol is not allowed. If a defined global symbol has more than one definition, an error will occur.
-
Note - This pseudo-op by itself does not define the symbol.
.half 16bitval [, 16bitval]*
- Generates (a sequence of) initialized halfwords in the current segment. The location counter must already be aligned on a halfword boundary (use .align 2).
.ident "string"
- Generates the null terminated string in a comment section. This operation is equivalent to:
-
.pushsection ".comment"
.asciz "string"
.popsection
|
.local symbol [, symbol]*
- Declares each symbol in the list to be local; that is, each symbol is defined in the input file and not accessible in other files; default bindings for the symbol are overridden. These symbols take precedence over weak and global symbols.
- Since local symbols are not accessible to other files, local symbols of the same name may exist in multiple files.
-
Note - This pseudo-op by itself does not define the symbol.
.noalias %reg1, %reg2
-
%reg1 and %reg2 will not alias each other (that is, point to the same destination) until a .alias pseudo-op is issued. (Compiler-generated only.)
.nonvolatile
- Defines the end of a block of instruction. The instructions in the block may not be permuted. This pseudo-op has no effect if:
-
- The block of instruction has been previously terminated by a Control Transfer Instruction (CTI) or a label
- There is no preceding .volatile pseudo-op
.optim "string"
- This pseudo-op changes the optimization level of a particular function. (Compiler-generated only.)
.popsection
- Removes the top section from the section stack. The new section on the top of the stack becomes the current section. This pseudo-op and its corresponding .pushsection command allow you to switch back and forth between the named sections.
.proc n
- Signals the beginning of a procedure (that is, a unit of optimization) to the peephole optimizer in the SPARC assembler; n specifies which registers will contain the return value upon return from the procedure. (Compiler-generated only.)
.pushsection "sect_name" [, attributes]
- Moves the named section to the top of the section stack. This new top section then becomes the current section. This pseudo-op and its corresponding .popsection command allow you to switch back and forth between the named sections.
.quad 0rfloatval [, 0rfloatval]*
- Generates (a sequence of) initialized quad-precision floating-point values in the current segment. floatval is a string acceptable to atof(3); that is, an optional sign followed by a non-empty string of digits with optional decimal point and optional exponent.
-
Note - The .quad command currently generates quad-precision values with only double-precision significance.
.reserve symbol, size [, "sect_name" [, alignment]]
- Defines symbol, and reserves size bytes of space for it in the sect_name. This operation is equivalent to:
-
.pushsection "sect_name"
.align alignment
symbol:
.skip size
.popsection
|
- If a section is not specified, space is reserved in the current segment.
.section "section_name" [, attributes]
- Makes the specified section the current section.
- The assembler maintains a section stack which is manipulated by the section control directives. The current section is the section that is currently on top of the stack. This pseudo-op changes the top of the section stack.
-
- If section_name does not exist, a new section with the specified name and attributes is created.
- If section_name is a non-reserved section, attributes must be included the first time it is specified by the .section directive.
- See the sections "Predefined User Sections" and "Predefined Non-User Sections" in Chapter 3, "Extensible and Linking Format," for a detailed description of the reserved sections. See Table 3-2 in Chapter 3, "Extensible and Linking Format," for a detailed description of the section attribute flags.
- Attributes can be:
-
-
#write | #alloc | #execinstr
.seg "section_name"
-
Note - This pseudo-op is currently supported for compatibility with existing SunOS 4.1 SPARC assembly language programs. This pseudo-op has been replaced by the .section pseudo-op.
- Changes the current section to one of the predefined user sections. The assembler will interpret the following SunOS 4.1 SPARC assembly directive:
-
-
.seg "text", .seg "data", .seg "data1", .seg "bss",
to be the same as the following SunOS 5.x SPARC assembly directive:
.section ".text", .section ".data", .section ".data1",
.section ".bss".
-
Note - Predefined user section names are changed in SunOS 5.x.
.single 0rfloatval [, 0rfloatval]*
- Generates (a sequence of) initialized single-precision floating-point values in the current segment.
-
Note - This operation does not align automatically.
.size symbol, expr
- Declares the symbol size to be expr. expr must be an absolute expression.
.skip n
- Increments the location counter by n, which allocates n bytes of empty space in the current segment.
.stabn <various parameters>
- The pseudo-op is used by Solaris 2.x SPARCompilers only to pass debugging information to the symbolic debuggers.
.stabs <various parameters>
- The pseudo-op is used by Solaris 2.x SPARCompilers only to pass debugging information to the symbolic debuggers.
.type symbol, type
- Declares the type of symbol, where type can be:
-
-
#object
#function
#no_type
- See Table 3-6 in Chapter 3, "Extensible and Linking Format," for detailed information on symbols.
.uahalf 16bitval [, 16bitval]*
- Generates a (sequence of) 16-bit value(s).
-
Note - This operation does not align automatically.
.uaword 32bitval [, 32bitval]*
- Generates a (sequence of) 32-bit value(s).
-
Note - This operation does not align automatically.
.version "string"
- Identifies the minimum assembler version necessary to assemble the input file. You can use this pseudo-op to ensure assembler-compiler compatibility. If string indicates a newer version of the assembler than this version of the assembler, a fatal error message is displayed and the SPARC assembler exits.
.volatile
- Defines the beginning of a block of instruction. The instructions in the section may not be changed. The block of instruction should end at a .nonvolatile pseudo-op and should not contain any Control Transfer Instructions (CTI) or labels. The volatile block of instructions is terminated after the last instruction preceding a CTI or label.
.weak symbol [, symbol]
- Declares each symbol in the list to be defined either externally, or in the input file and accessible to other files; default bindings of the symbol are overridden by this directive.
- Note the following:
-
- A weak symbol definition in one file will satisfy an undefined reference to a global symbol of the same name in another file.
-
- Unresolved weak symbols have a default value of zero; the link editor does not resolve these symbols.
- If a weak symbol has the same name as a defined global symbol, the weak symbol is ignored and no error results.
-
Note - This pseudo-op does not itself define the symbol.
.word 32bitval [, 32bitval]*
- Generates (a sequence of) initialized words in the current segment.
-
Note - This operation does not align automatically.
.xstabs <various parameters>
- The pseudo-op is used by Solaris 2.x SPARCompilers only to pass debugging information to the symbolic debuggers.
symbol =expr
- Assigns the value of expr to symbol.
|
|