hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the GNU Assembler "as".
 
Copyright (C) 1991-2016 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled "GNU Free Documentation License".
 -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using as: CR16 Operand Qualifiers</title>
 
<meta name="description" content="Using as: CR16 Operand Qualifiers">
<meta name="keywords" content="Using as: CR16 Operand Qualifiers">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="CR16_002dDependent.html#CR16_002dDependent" rel="up" title="CR16-Dependent">
<link href="CR16-Syntax.html#CR16-Syntax" rel="next" title="CR16 Syntax">
<link href="CR16_002dDependent.html#CR16_002dDependent" rel="prev" title="CR16-Dependent">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="CR16-Operand-Qualifiers"></a>
<div class="header">
<p>
Next: <a href="CR16-Syntax.html#CR16-Syntax" accesskey="n" rel="next">CR16 Syntax</a>, Up: <a href="CR16_002dDependent.html#CR16_002dDependent" accesskey="u" rel="up">CR16-Dependent</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="CR16-Operand-Qualifiers-1"></a>
<h4 class="subsection">9.7.1 CR16 Operand Qualifiers</h4>
<a name="index-CR16-Operand-Qualifiers"></a>
 
<p>The National Semiconductor CR16 target of <code>as</code> has a few machine dependent operand qualifiers.
</p>
<p>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>@</code> is required. CR16 architecture uses one of the following expression qualifiers:
</p>
<dl compact="compact">
<dt><code>s</code></dt>
<dd><p>- <code>Specifies expression operand type as small</code>
</p></dd>
<dt><code>m</code></dt>
<dd><p>- <code>Specifies expression operand type as medium</code>
</p></dd>
<dt><code>l</code></dt>
<dd><p>- <code>Specifies expression operand type as large</code>
</p></dd>
<dt><code>c</code></dt>
<dd><p>- <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.</code>
</p></dd>
<dt><code>got/GOT</code></dt>
<dd><p>- <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</code>
</p></dd>
<dt><code>cgot/cGOT</code></dt>
<dd><p>- <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.</code>
</p></dd>
</dl>
 
<p>CR16 target operand qualifiers and its size (in bits):
</p>
<dl compact="compact">
<dt>&lsquo;<samp>Immediate Operand: s</samp>&rsquo;</dt>
<dd><p>4 bits.
</p>
</dd>
<dt>&lsquo;<samp>Immediate Operand: m</samp>&rsquo;</dt>
<dd><p>16 bits, for movb and movw instructions.
</p>
</dd>
<dt>&lsquo;<samp>Immediate Operand: m</samp>&rsquo;</dt>
<dd><p>20 bits, movd instructions.
</p>
</dd>
<dt>&lsquo;<samp>Immediate Operand: l</samp>&rsquo;</dt>
<dd><p>32 bits.
</p>
</dd>
<dt>&lsquo;<samp>Absolute Operand: s</samp>&rsquo;</dt>
<dd><p>Illegal specifier for this operand.
</p>
</dd>
<dt>&lsquo;<samp>Absolute Operand: m</samp>&rsquo;</dt>
<dd><p>20 bits, movd instructions.
</p>
</dd>
<dt>&lsquo;<samp>Displacement Operand: s</samp>&rsquo;</dt>
<dd><p>8 bits.
</p>
</dd>
<dt>&lsquo;<samp>Displacement Operand: m</samp>&rsquo;</dt>
<dd><p>16 bits.
</p>
</dd>
<dt>&lsquo;<samp>Displacement Operand: l</samp>&rsquo;</dt>
<dd><p>24 bits.
</p>
</dd>
</dl>
 
<p>For example:
</p><div class="example">
<pre class="example">1   <code>movw $_myfun@c,r1</code>
 
    This loads the address of _myfun, shifted right by 1, into r1.
 
2   <code>movd $_myfun@c,(r2,r1)</code>
 
    This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
 
3   <code>_myfun_ptr:</code>
    <code>.long _myfun@c</code>
    <code>loadd _myfun_ptr, (r1,r0)</code>
    <code>jal (r1,r0)</code>
 
    This .long directive, the address of _myfunc, shifted right by 1 at link time.
 
4   <code>loadd  _data1@GOT(r12), (r1,r0)</code>
 
    This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
 
5   <code>loadd  _myfunc@cGOT(r12), (r1,r0)</code>
 
    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.
</pre></div>
 
<hr>
<div class="header">
<p>
Next: <a href="CR16-Syntax.html#CR16-Syntax" accesskey="n" rel="next">CR16 Syntax</a>, Up: <a href="CR16_002dDependent.html#CR16_002dDependent" accesskey="u" rel="up">CR16-Dependent</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>