summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/gas/doc/c-alpha.texi
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/binutils/gas/doc/c-alpha.texi')
-rw-r--r--contrib/binutils/gas/doc/c-alpha.texi466
1 files changed, 0 insertions, 466 deletions
diff --git a/contrib/binutils/gas/doc/c-alpha.texi b/contrib/binutils/gas/doc/c-alpha.texi
deleted file mode 100644
index 0aee06b..0000000
--- a/contrib/binutils/gas/doc/c-alpha.texi
+++ /dev/null
@@ -1,466 +0,0 @@
-@c Copyright 2002
-@c Free Software Foundation, Inc.
-@c This is part of the GAS manual.
-@c For copying conditions, see the file as.texinfo.
-
-@ifset GENERIC
-@page
-@node Alpha-Dependent
-@chapter Alpha Dependent Features
-@end ifset
-
-@ifclear GENERIC
-@node Machine Dependencies
-@chapter Alpha Dependent Features
-@end ifclear
-
-@cindex Alpha support
-@menu
-* Alpha Notes:: Notes
-* Alpha Options:: Options
-* Alpha Syntax:: Syntax
-* Alpha Floating Point:: Floating Point
-* Alpha Directives:: Alpha Machine Directives
-* Alpha Opcodes:: Opcodes
-@end menu
-
-@node Alpha Notes
-@section Notes
-@cindex Alpha notes
-@cindex notes for Alpha
-
-The documentation here is primarily for the ELF object format.
-@code{@value{AS}} also supports the ECOFF and EVAX formats, but
-features specific to these formats are not yet documented.
-
-@node Alpha Options
-@section Options
-@cindex Alpha options
-@cindex options for Alpha
-
-@table @option
-@cindex @code{-m@var{cpu}} command line option, Alpha
-@item -m@var{cpu}
-This option specifies the target processor. If an attempt is made to
-assemble an instruction which will not execute on the target processor,
-the assembler may either expand the instruction as a macro or issue an
-error message. This option is equivalent to the @code{.arch} directive.
-
-The following processor names are recognized:
-@code{21064},
-@code{21064a},
-@code{21066},
-@code{21068},
-@code{21164},
-@code{21164a},
-@code{21164pc},
-@code{21264},
-@code{21264a},
-@code{21264b},
-@code{ev4},
-@code{ev5},
-@code{lca45},
-@code{ev5},
-@code{ev56},
-@code{pca56},
-@code{ev6},
-@code{ev67},
-@code{ev68}.
-The special name @code{all} may be used to allow the assembler to accept
-instructions valid for any Alpha processor.
-
-In order to support existing practice in OSF/1 with respect to @code{.arch},
-and existing practice within @command{MILO} (the Linux ARC bootloader), the
-numbered processor names (e.g.@: 21064) enable the processor-specific PALcode
-instructions, while the ``electro-vlasic'' names (e.g.@: @code{ev4}) do not.
-
-@cindex @code{-mdebug} command line option, Alpha
-@cindex @code{-no-mdebug} command line option, Alpha
-@item -mdebug
-@itemx -no-mdebug
-Enables or disables the generation of @code{.mdebug} encapsulation for
-stabs directives and procedure descriptors. The default is to automatically
-enable @code{.mdebug} when the first stabs directive is seen.
-
-@cindex @code{-relax} command line option, Alpha
-@item -relax
-This option forces all relocations to be put into the object file, instead
-of saving space and resolving some relocations at assembly time. Note that
-this option does not propagate all symbol arithmetic into the object file,
-because not all symbol arithmetic can be represented. However, the option
-can still be useful in specific applications.
-
-@cindex @code{-g} command line option, Alpha
-@item -g
-This option is used when the compiler generates debug information. When
-@command{gcc} is using @command{mips-tfile} to generate debug
-information for ECOFF, local labels must be passed through to the object
-file. Otherwise this option has no effect.
-
-@cindex @code{-G} command line option, Alpha
-@item -G@var{size}
-A local common symbol larger than @var{size} is placed in @code{.bss},
-while smaller symbols are placed in @code{.sbss}.
-
-@cindex @code{-F} command line option, Alpha
-@cindex @code{-32addr} command line option, Alpha
-@item -F
-@itemx -32addr
-These options are ignored for backward compatibility.
-@end table
-
-@cindex Alpha Syntax
-@node Alpha Syntax
-@section Syntax
-The assembler syntax closely follow the Alpha Reference Manual;
-assembler directives and general syntax closely follow the OSF/1 and
-OpenVMS syntax, with a few differences for ELF.
-
-@menu
-* Alpha-Chars:: Special Characters
-* Alpha-Regs:: Register Names
-* Alpha-Relocs:: Relocations
-@end menu
-
-@node Alpha-Chars
-@subsection Special Characters
-
-@cindex line comment character, Alpha
-@cindex Alpha line comment character
-@samp{#} is the line comment character.
-
-@cindex line separator, Alpha
-@cindex statement separator, Alpha
-@cindex Alpha line separator
-@samp{;} can be used instead of a newline to separate statements.
-
-@node Alpha-Regs
-@subsection Register Names
-@cindex Alpha registers
-@cindex register names, Alpha
-
-The 32 integer registers are referred to as @samp{$@var{n}} or
-@samp{$r@var{n}}. In addition, registers 15, 28, 29, and 30 may
-be referred to by the symbols @samp{$fp}, @samp{$at}, @samp{$gp},
-and @samp{$sp} respectively.
-
-The 32 floating-point registers are referred to as @samp{$f@var{n}}.
-
-@node Alpha-Relocs
-@subsection Relocations
-@cindex Alpha relocations
-@cindex relocations, Alpha
-
-Some of these relocations are available for ECOFF, but mostly
-only for ELF. They are modeled after the relocation format
-introduced in Digital Unix 4.0, but there are additions.
-
-The format is @samp{!@var{tag}} or @samp{!@var{tag}!@var{number}}
-where @var{tag} is the name of the relocation. In some cases
-@var{number} is used to relate specific instructions.
-
-The relocation is placed at the end of the instruction like so:
-
-@example
-ldah $0,a($29) !gprelhigh
-lda $0,a($0) !gprellow
-ldq $1,b($29) !literal!100
-ldl $2,0($1) !lituse_base!100
-@end example
-
-@table @code
-@item !literal
-@itemx !literal!@var{N}
-Used with an @code{ldq} instruction to load the address of a symbol
-from the GOT.
-
-A sequence number @var{N} is optional, and if present is used to pair
-@code{lituse} relocations with this @code{literal} relocation. The
-@code{lituse} relocations are used by the linker to optimize the code
-based on the final location of the symbol.
-
-Note that these optimizations are dependent on the data flow of the
-program. Therefore, if @emph{any} @code{lituse} is paired with a
-@code{literal} relocation, then @emph{all} uses of the register set by
-the @code{literal} instruction must also be marked with @code{lituse}
-relocations. This is because the original @code{literal} instruction
-may be deleted or transformed into another instruction.
-
-Also note that there may be a one-to-many relationship between
-@code{literal} and @code{lituse}, but not a many-to-one. That is, if
-there are two code paths that load up the same address and feed the
-value to a single use, then the use may not use a @code{lituse}
-relocation.
-
-@item !lituse_base!@var{N}
-Used with any memory format instruction (e.g.@: @code{ldl}) to indicate
-that the literal is used for an address load. The offset field of the
-instruction must be zero. During relaxation, the code may be altered
-to use a gp-relative load.
-
-@item !lituse_jsr!@var{N}
-Used with a register branch format instruction (e.g.@: @code{jsr}) to
-indicate that the literal is used for a call. During relaxation, the
-code may be altered to use a direct branch (e.g.@: @code{bsr}).
-
-@item !lituse_bytoff!@var{N}
-Used with a byte mask instruction (e.g.@: @code{extbl}) to indicate
-that only the low 3 bits of the address are relevant. During relaxation,
-the code may be altered to use an immediate instead of a register shift.
-
-@item !lituse_addr!@var{N}
-Used with any other instruction to indicate that the original address
-is in fact used, and the original @code{ldq} instruction may not be
-altered or deleted. This is useful in conjunction with @code{lituse_jsr}
-to test whether a weak symbol is defined.
-
-@example
-ldq $27,foo($29) !literal!1
-beq $27,is_undef !lituse_addr!1
-jsr $26,($27),foo !lituse_jsr!1
-@end example
-
-@item !lituse_tlsgd!@var{N}
-Used with a register branch format instruction to indicate that the
-literal is the call to @code{__tls_get_addr} used to compute the
-address of the thread-local storage variable whose descriptor was
-loaded with @code{!tlsgd!@var{N}}.
-
-@item !lituse_tlsldm!@var{N}
-Used with a register branch format instruction to indicate that the
-literal is the call to @code{__tls_get_addr} used to compute the
-address of the base of the thread-local storage block for the current
-module. The descriptor for the module must have been loaded with
-@code{!tlsldm!@var{N}}.
-
-@item !gpdisp!@var{N}
-Used with @code{ldah} and @code{lda} to load the GP from the current
-address, a-la the @code{ldgp} macro. The source register for the
-@code{ldah} instruction must contain the address of the @code{ldah}
-instruction. There must be exactly one @code{lda} instruction paired
-with the @code{ldah} instruction, though it may appear anywhere in
-the instruction stream. The immediate operands must be zero.
-
-@example
-bsr $26,foo
-ldah $29,0($26) !gpdisp!1
-lda $29,0($29) !gpdisp!1
-@end example
-
-@item !gprelhigh
-Used with an @code{ldah} instruction to add the high 16 bits of a
-32-bit displacement from the GP.
-
-@item !gprellow
-Used with any memory format instruction to add the low 16 bits of a
-32-bit displacement from the GP.
-
-@item !gprel
-Used with any memory format instruction to add a 16-bit displacement
-from the GP.
-
-@item !samegp
-Used with any branch format instruction to skip the GP load at the
-target address. The referenced symbol must have the same GP as the
-source object file, and it must be declared to either not use @code{$27}
-or perform a standard GP load in the first two instructions via the
-@code{.prologue} directive.
-
-@item !tlsgd
-@itemx !tlsgd!@var{N}
-Used with an @code{lda} instruction to load the address of a TLS
-descriptor for a symbol in the GOT.
-
-The sequence number @var{N} is optional, and if present it used to
-pair the descriptor load with both the @code{literal} loading the
-address of the @code{__tls_get_addr} function and the @code{lituse_tlsgd}
-marking the call to that function.
-
-For proper relaxation, both the @code{tlsgd}, @code{literal} and
-@code{lituse} relocations must be in the same extended basic block.
-That is, the relocation with the lowest address must be executed
-first at runtime.
-
-@item !tlsldm
-@itemx !tlsldm!@var{N}
-Used with an @code{lda} instruction to load the address of a TLS
-descriptor for the current module in the GOT.
-
-Similar in other respects to @code{tlsgd}.
-
-@item !gotdtprel
-Used with an @code{ldq} instruction to load the offset of the TLS
-symbol within its module's thread-local storage block. Also known
-as the dynamic thread pointer offset or dtp-relative offset.
-
-@item !dtprelhi
-@itemx !dtprello
-@itemx !dtprel
-Like @code{gprel} relocations except they compute dtp-relative offsets.
-
-@item !gottprel
-Used with an @code{ldq} instruction to load the offset of the TLS
-symbol from the thread pointer. Also known as the tp-relative offset.
-
-@item !tprelhi
-@itemx !tprello
-@itemx !tprel
-Like @code{gprel} relocations except they compute tp-relative offsets.
-@end table
-
-@node Alpha Floating Point
-@section Floating Point
-@cindex floating point, Alpha (@sc{ieee})
-@cindex Alpha floating point (@sc{ieee})
-The Alpha family uses both @sc{ieee} and VAX floating-point numbers.
-
-@node Alpha Directives
-@section Alpha Assembler Directives
-
-@command{@value{AS}} for the Alpha supports many additional directives for
-compatibility with the native assembler. This section describes them only
-briefly.
-
-@cindex Alpha-only directives
-These are the additional directives in @code{@value{AS}} for the Alpha:
-
-@table @code
-@item .arch @var{cpu}
-Specifies the target processor. This is equivalent to the
-@option{-m@var{cpu}} command-line option. @xref{Alpha Options, Options},
-for a list of values for @var{cpu}.
-
-@item .ent @var{function}[, @var{n}]
-Mark the beginning of @var{function}. An optional number may follow for
-compatibility with the OSF/1 assembler, but is ignored. When generating
-@code{.mdebug} information, this will create a procedure descriptor for
-the function. In ELF, it will mark the symbol as a function a-la the
-generic @code{.type} directive.
-
-@item .end @var{function}
-Mark the end of @var{function}. In ELF, it will set the size of the symbol
-a-la the generic @code{.size} directive.
-
-@item .mask @var{mask}, @var{offset}
-Indicate which of the integer registers are saved in the current
-function's stack frame. @var{mask} is interpreted a bit mask in which
-bit @var{n} set indicates that register @var{n} is saved. The registers
-are saved in a block located @var{offset} bytes from the @dfn{canonical
-frame address} (CFA) which is the value of the stack pointer on entry to
-the function. The registers are saved sequentially, except that the
-return address register (normally @code{$26}) is saved first.
-
-This and the other directives that describe the stack frame are
-currently only used when generating @code{.mdebug} information. They
-may in the future be used to generate DWARF2 @code{.debug_frame} unwind
-information for hand written assembly.
-
-@item .fmask @var{mask}, @var{offset}
-Indicate which of the floating-point registers are saved in the current
-stack frame. The @var{mask} and @var{offset} parameters are interpreted
-as with @code{.mask}.
-
-@item .frame @var{framereg}, @var{frameoffset}, @var{retreg}[, @var{argoffset}]
-Describes the shape of the stack frame. The frame pointer in use is
-@var{framereg}; normally this is either @code{$fp} or @code{$sp}. The
-frame pointer is @var{frameoffset} bytes below the CFA. The return
-address is initially located in @var{retreg} until it is saved as
-indicated in @code{.mask}. For compatibility with OSF/1 an optional
-@var{argoffset} parameter is accepted and ignored. It is believed to
-indicate the offset from the CFA to the saved argument registers.
-
-@item .prologue @var{n}
-Indicate that the stack frame is set up and all registers have been
-spilled. The argument @var{n} indicates whether and how the function
-uses the incoming @dfn{procedure vector} (the address of the called
-function) in @code{$27}. 0 indicates that @code{$27} is not used; 1
-indicates that the first two instructions of the function use @code{$27}
-to perform a load of the GP register; 2 indicates that @code{$27} is
-used in some non-standard way and so the linker cannot elide the load of
-the procedure vector during relaxation.
-
-@item .usepv @var{function}, @var{which}
-Used to indicate the use of the @code{$27} register, similar to
-@code{.prologue}, but without the other semantics of needing to
-be inside an open @code{.ent}/@code{.end} block.
-
-The @var{which} argument should be either @code{no}, indicating that
-@code{$27} is not used, or @code{std}, indicating that the first two
-instructions of the function perform a GP load.
-
-One might use this directive instead of @code{.prologue} if you are
-also using dwarf2 CFI directives.
-
-@item .gprel32 @var{expression}
-Computes the difference between the address in @var{expression} and the
-GP for the current object file, and stores it in 4 bytes. In addition
-to being smaller than a full 8 byte address, this also does not require
-a dynamic relocation when used in a shared library.
-
-@item .t_floating @var{expression}
-Stores @var{expression} as an @sc{ieee} double precision value.
-
-@item .s_floating @var{expression}
-Stores @var{expression} as an @sc{ieee} single precision value.
-
-@item .f_floating @var{expression}
-Stores @var{expression} as a VAX F format value.
-
-@item .g_floating @var{expression}
-Stores @var{expression} as a VAX G format value.
-
-@item .d_floating @var{expression}
-Stores @var{expression} as a VAX D format value.
-
-@item .set @var{feature}
-Enables or disables various assembler features. Using the positive
-name of the feature enables while using @samp{no@var{feature}} disables.
-
-@table @code
-@item at
-Indicates that macro expansions may clobber the @dfn{assembler
-temporary} (@code{$at} or @code{$28}) register. Some macros may not be
-expanded without this and will generate an error message if @code{noat}
-is in effect. When @code{at} is in effect, a warning will be generated
-if @code{$at} is used by the programmer.
-
-@item macro
-Enables the expansion of macro instructions. Note that variants of real
-instructions, such as @code{br label} vs @code{br $31,label} are
-considered alternate forms and not macros.
-
-@item move
-@itemx reorder
-@itemx volatile
-These control whether and how the assembler may re-order instructions.
-Accepted for compatibility with the OSF/1 assembler, but @command{@value{AS}}
-does not do instruction scheduling, so these features are ignored.
-@end table
-@end table
-
-The following directives are recognized for compatibility with the OSF/1
-assembler but are ignored.
-
-@example
-.proc .aproc
-.reguse .livereg
-.option .aent
-.ugen .eflag
-.alias .noalias
-@end example
-
-@node Alpha Opcodes
-@section Opcodes
-For detailed information on the Alpha machine instruction set, see the
-@c Attempt to work around a very overfull hbox.
-@iftex
-Alpha Architecture Handbook located at
-@smallfonts
-@example
-ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf
-@end example
-@textfonts
-@end iftex
-@ifnottex
-@uref{ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf,Alpha Architecture Handbook}.
-@end ifnottex
OpenPOWER on IntegriCloud