1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- This file documents the GNU Assembler "as".
4
5Copyright (C) 1991-2021 Free Software Foundation, Inc.
6
7Permission is granted to copy, distribute and/or modify this document
8under the terms of the GNU Free Documentation License, Version 1.3
9or any later version published by the Free Software Foundation;
10with no Invariant Sections, with no Front-Cover Texts, and with no
11Back-Cover Texts.  A copy of the license is included in the
12section entitled "GNU Free Documentation License".
13 -->
14<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
15<head>
16<title>Using as: Xtensa Syntax</title>
17
18<meta name="description" content="Using as: Xtensa Syntax">
19<meta name="keywords" content="Using as: Xtensa Syntax">
20<meta name="resource-type" content="document">
21<meta name="distribution" content="global">
22<meta name="Generator" content="makeinfo">
23<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
24<link href="index.html#Top" rel="start" title="Top">
25<link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
26<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
27<link href="Xtensa_002dDependent.html#Xtensa_002dDependent" rel="up" title="Xtensa-Dependent">
28<link href="Xtensa-Opcodes.html#Xtensa-Opcodes" rel="next" title="Xtensa Opcodes">
29<link href="Xtensa-Options.html#Xtensa-Options" rel="previous" title="Xtensa Options">
30<style type="text/css">
31<!--
32a.summary-letter {text-decoration: none}
33blockquote.smallquotation {font-size: smaller}
34div.display {margin-left: 3.2em}
35div.example {margin-left: 3.2em}
36div.indentedblock {margin-left: 3.2em}
37div.lisp {margin-left: 3.2em}
38div.smalldisplay {margin-left: 3.2em}
39div.smallexample {margin-left: 3.2em}
40div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
41div.smalllisp {margin-left: 3.2em}
42kbd {font-style:oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47pre.smalldisplay {font-family: inherit; font-size: smaller}
48pre.smallexample {font-size: smaller}
49pre.smallformat {font-family: inherit; font-size: smaller}
50pre.smalllisp {font-size: smaller}
51span.nocodebreak {white-space:nowrap}
52span.nolinebreak {white-space:nowrap}
53span.roman {font-family:serif; font-weight:normal}
54span.sansserif {font-family:sans-serif; font-weight:normal}
55ul.no-bullet {list-style: none}
56-->
57</style>
58
59
60</head>
61
62<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
63<a name="Xtensa-Syntax"></a>
64<div class="header">
65<p>
66Next: <a href="Xtensa-Optimizations.html#Xtensa-Optimizations" accesskey="n" rel="next">Xtensa Optimizations</a>, Previous: <a href="Xtensa-Options.html#Xtensa-Options" accesskey="p" rel="previous">Xtensa Options</a>, Up: <a href="Xtensa_002dDependent.html#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-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>
67</div>
68<hr>
69<a name="Assembler-Syntax"></a>
70<h4 class="subsection">9.55.2 Assembler Syntax</h4>
71<a name="index-syntax_002c-Xtensa-assembler"></a>
72<a name="index-Xtensa-assembler-syntax"></a>
73<a name="index-FLIX-syntax"></a>
74
75<p>Block comments are delimited by &lsquo;<samp>/*</samp>&rsquo; and &lsquo;<samp>*/</samp>&rsquo;.  End of line
76comments may be introduced with either &lsquo;<samp>#</samp>&rsquo; or &lsquo;<samp>//</samp>&rsquo;.
77</p>
78<p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
79line is treated as a comment, but in this case the line could also be
80a logical line number directive (see <a href="Comments.html#Comments">Comments</a>) or a preprocessor
81control command (see <a href="Preprocessing.html#Preprocessing">Preprocessing</a>).
82</p>
83<p>Instructions consist of a leading opcode or macro name followed by
84whitespace and an optional comma-separated list of operands:
85</p>
86<div class="smallexample">
87<pre class="smallexample"><var>opcode</var> [<var>operand</var>, &hellip;]
88</pre></div>
89
90<p>Instructions must be separated by a newline or semicolon (&lsquo;<samp>;</samp>&rsquo;).
91</p>
92<p>FLIX instructions, which bundle multiple opcodes together in a single
93instruction, are specified by enclosing the bundled opcodes inside
94braces:
95</p>
96<div class="smallexample">
97<pre class="smallexample">{
98[<var>format</var>]
99<var>opcode0</var> [<var>operands</var>]
100</pre><pre class="smallexample"><var>opcode1</var> [<var>operands</var>]
101</pre><pre class="smallexample"><var>opcode2</var> [<var>operands</var>]
102&hellip;
103}
104</pre></div>
105
106<p>The opcodes in a FLIX instruction are listed in the same order as the
107corresponding instruction slots in the TIE format declaration.
108Directives and labels are not allowed inside the braces of a FLIX
109instruction.  A particular TIE format name can optionally be specified
110immediately after the opening brace, but this is usually unnecessary.
111The assembler will automatically search for a format that can encode the
112specified opcodes, so the format name need only be specified in rare
113cases where there is more than one applicable format and where it
114matters which of those formats is used.  A FLIX instruction can also be
115specified on a single line by separating the opcodes with semicolons:
116</p>
117<div class="smallexample">
118<pre class="smallexample">{ [<var>format</var>;] <var>opcode0</var> [<var>operands</var>]; <var>opcode1</var> [<var>operands</var>]; <var>opcode2</var> [<var>operands</var>]; &hellip; }
119</pre></div>
120
121<p>If an opcode can only be encoded in a FLIX instruction but is not
122specified as part of a FLIX bundle, the assembler will choose the
123smallest format where the opcode can be encoded and
124will fill unused instruction slots with no-ops.
125</p>
126<table class="menu" border="0" cellspacing="0">
127<tr><td align="left" valign="top">&bull; <a href="Xtensa-Opcodes.html#Xtensa-Opcodes" accesskey="1">Xtensa Opcodes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcode Naming Conventions.
128</td></tr>
129<tr><td align="left" valign="top">&bull; <a href="Xtensa-Registers.html#Xtensa-Registers" accesskey="2">Xtensa Registers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Naming.
130</td></tr>
131</table>
132
133<hr>
134<div class="header">
135<p>
136Next: <a href="Xtensa-Optimizations.html#Xtensa-Optimizations" accesskey="n" rel="next">Xtensa Optimizations</a>, Previous: <a href="Xtensa-Options.html#Xtensa-Options" accesskey="p" rel="previous">Xtensa Options</a>, Up: <a href="Xtensa_002dDependent.html#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-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>
137</div>
138
139
140
141</body>
142</html>
143