aboutsummaryrefslogtreecommitdiff
path: root/gas/doc/c-ia64.texi
blob: 0885f1b3b99afaa0a3c1eeed61e0121c7c3c2863 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
@c Copyright 2002
@c Free Software Foundation, Inc.
@c   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.

@ifset GENERIC
@page
@node IA-64-Dependent
@chapter IA-64 Dependent Features
@end ifset

@ifclear GENERIC
@node Machine Dependencies
@chapter IA-64 Dependent Features
@end ifclear

@cindex IA-64 support
@menu
* IA-64 Options::              Options
* IA-64 Syntax::               Syntax
@c * IA-64 Floating Point::       Floating Point		// to be written
@c * IA-64 Directives::           IA-64 Machine Directives	// to be written
* IA-64 Opcodes::              Opcodes
@end menu

@node IA-64 Options
@section Options
@cindex IA-64 options
@cindex options for IA-64

@table @option
@cindex @code{-mconstant-gp} command line option, IA-64

@item -mconstant-gp
This option instructs the assembler to mark the resulting object file
as using the ``constant GP'' model.  With this model, it is assumed
that the entire program uses a single global pointer (GP) value.  Note
that this option does not in any fashion affect the machine code
emitted by the assembler.  All it does is turn on the EF_IA_64_CONS_GP
flag in the ELF file header.

@item -mauto-pic
This option instructs the assembler to mark the resulting object file
as using the ``constant GP without function descriptor'' data model.
This model is like the ``constant GP'' model, except that it
additionaly does away with function descriptors.  What this means is
that the address of a function refers directly to the function's code
entry-point.  Normally, such an address would refer to a function
descriptor, which contains both the code entry-point and the GP-value
needed by the function.  Note that this option does not in any fashion
affect the machine code emitted by the assembler.  All it does is
turn on the EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.

@item -milp32
@item -milp64
@item -mlp64
@item -mp64
These options select the data model.  The assembler defaults to @code{-mlp64}
(LP64 data model).

@item -mle
@item -mbe
These options select the byte order.  The @code{-mle} option selects little-endian
byte order (default) and @code{-mbe} selects big-endian byte order.  Note that
IA-64 machine code always uses little-endian byte order.

@item -x
@item -xexplicit
These options turn on dependency violation checking.  This checking is turned on by
default.

@item -xauto
This option instructs the assembler to automatically insert stop bits where necessary
to remove dependency violations.

@item -xdebug
This turns on debug output intended to help tracking down bugs in the dependency
violation checker.

@end table

@cindex IA-64 Syntax
@node IA-64 Syntax
@section Syntax
The assembler syntax closely follows the IA-64 Assembly Language
Reference Guide.

@menu
* IA-64-Chars::                Special Characters
* IA-64-Regs::                 Register Names
* IA-64-Bits::                 Bit Names
* IA-64-Relocs::               Relocations
@end menu

@node IA-64-Chars
@subsection Special Characters

@cindex line comment character, IA-64
@cindex IA-64 line comment character
@samp{//} is the line comment token.

@cindex line separator, IA-64
@cindex statement separator, IA-64
@cindex IA-64 line separator
@samp{;} can be used instead of a newline to separate statements.

@node IA-64-Regs
@subsection Register Names
@cindex IA-64 registers
@cindex register names, IA-64

The 128 integer registers are refered to as @samp{r@var{n}}.
The 128 floating-point registers are refered to as @samp{f@var{n}}.
The 128 application registers are refered to as @samp{ar@var{n}}.
The 128 control registers are refered to as @samp{cr@var{n}}.
The 64 one-bit predicate registers are refered to as @samp{p@var{n}}.
The 8 branch registers are refered to as @samp{b@var{n}}.
In addition, the assembler defines a number of aliases:
@samp{gp} (@samp{r1}), @samp{sp} (@samp{r12}), @samp{rp} (@samp{b0}),
@samp{ret0} (@samp{r8}), @samp{ret1} (@samp{r9}), @samp{ret2} (@samp{r10}),
@samp{ret3} (@samp{r9}), @samp{farg@var{n}} (@samp{f8+@var{n}}), and
@samp{fret@var{n}} (@samp{f8+@var{n}}).

For convenience, the assembler also defines aliases for all named application
and control registers.  For example, @samp{ar.bsp} refers to the register
backing store pointer (@samp{ar17}).  Similarly, @samp{cr.eoi} refers to
the end-of-interrupt register (@samp{cr67}).

@node IA-64-Bits
@subsection IA-64 Processor-Status-Register (PSR) Bit Names
@cindex IA-64 Processor-status-Register bit names
@cindex PSR bits
@cindex bit names, IA-64

The assembler defines bit masks for each of the bits in the IA-64
processor status register.  For example, @samp{psr.ic} corresponds to
a value of 0x2000.  These masks are primarily intended for use with
the @sample{ssm}/@sample{sum} and @sample{rsm}/@sample{rum}
instructions, but they can be used anywhere else where an integer
constant is expected.

@node IA-64 Opcodes
@section Opcodes
For detailed information on the IA-64 machine instruction set, see the
@c Attempt to work around a very overfull hbox.
@iftex
IA-64 Assembly Language Reference Guide available at
@smallfonts
@example
http://developer.intel.com/design/itanium/arch_spec.htm
@end example
@textfonts
@end iftex
@ifnottex
@uref{http://developer.intel.com/design/itanium/arch_spec.htm,IA-64 Architecture Handbook}.
@end ifnottex