OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [doc/] [c-cr16.texi] - Blame information for rev 282

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 179 jshamlet
@c Copyright 2007, 2008, 2011 Free Software Foundation, Inc.
2
@c This is part of the GAS manual.
3
@c For copying conditions, see the file as.texinfo.
4
 
5
@ifset GENERIC
6
@page
7
@node CR16-Dependent
8
@chapter CR16 Dependent Features
9
@end ifset
10
@ifclear GENERIC
11
@node Machine Dependencies
12
@chapter CR16 Dependent Features
13
@end ifclear
14
 
15
@cindex CR16 support
16
@menu
17
* CR16 Operand Qualifiers::     CR16 Machine Operand Qualifiers
18
* CR16 Syntax::                 Syntax for the CR16
19
@end menu
20
 
21
@node CR16 Operand Qualifiers
22
@section CR16 Operand Qualifiers
23
@cindex CR16 Operand Qualifiers
24
 
25
The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers.
26
 
27
Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The @code{@@} is required. CR16 architecture uses one of the following expression qualifiers:
28
 
29
@table @code
30
@item  s
31
- @code{Specifies expression operand type as small}
32
@item  m
33
- @code{Specifies expression operand type as medium}
34
@item  l
35
- @code{Specifies expression operand type as large}
36
@item  c
37
- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.}
38
@item  got/GOT
39
- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, offset from Global Offset Table. The linker uses this relocation entry to update the operand address at link time}
40
@item  cgot/cGOT
41
- @code{Specifies the CompactRISC Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.}
42
@end table
43
 
44
CR16 target operand qualifiers and its size (in bits):
45
 
46
@table @samp
47
@item Immediate Operand
48
- s ---- 4 bits
49
@item
50
- m ---- 16 bits, for movb and movw instructions.
51
@item
52
- m ---- 20 bits, movd instructions.
53
@item
54
- l ---- 32 bits
55
 
56
@item Absolute Operand
57
- s ---- Illegal specifier for this operand.
58
@item
59
- m ---- 20 bits, movd instructions.
60
 
61
@item Displacement Operand
62
- s ---- 8 bits
63
@item
64
- m ---- 16 bits
65
@item
66
- l ---- 24 bits
67
@end table
68
 
69
For example:
70
@example
71
1   @code{movw $_myfun@@c,r1}
72
 
73
    This loads the address of _myfun, shifted right by 1, into r1.
74
 
75
2   @code{movd $_myfun@@c,(r2,r1)}
76
 
77
    This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
78
 
79
3   @code{_myfun_ptr:}
80
    @code{.long _myfun@@c}
81
    @code{loadd _myfun_ptr, (r1,r0)}
82
    @code{jal (r1,r0)}
83
 
84
    This .long directive, the address of _myfunc, shifted right by 1 at link time.
85
 
86
4   @code{loadd  _data1@@GOT(r12), (r1,r0)}
87
 
88
    This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
89
 
90
5   @code{loadd  _myfunc@@cGOT(r12), (r1,r0)}
91
 
92
    This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0.
93
@end example
94
 
95
@node CR16 Syntax
96
@section CR16 Syntax
97
@menu
98
* CR16-Chars::                Special Characters
99
@end menu
100
 
101
@node CR16-Chars
102
@subsection Special Characters
103
 
104
@cindex line comment character, CR16
105
@cindex CR16 line comment character
106
The presence of a @samp{#} on a line indicates the start of a comment
107
that extends to the end of the current line.  If the @samp{#} appears
108
as the first character of a line, the whole line is treated as a
109
comment, but in this case the line can also be a logical line number
110
directive (@pxref{Comments}) or a preprocessor control command
111
(@pxref{Preprocessing}).
112
 
113
@cindex line separator, CR16
114
@cindex statement separator, CR16
115
@cindex CR16 line separator
116
The @samp{;} character can be used to separate statements on the same
117
line.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.