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: Literal Position Directive</title> 17 18<meta name="description" content="Using as: Literal Position Directive"> 19<meta name="keywords" content="Using as: Literal Position Directive"> 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-Directives.html#Xtensa-Directives" rel="up" title="Xtensa Directives"> 28<link href="Literal-Prefix-Directive.html#Literal-Prefix-Directive" rel="next" title="Literal Prefix Directive"> 29<link href="Literal-Directive.html#Literal-Directive" rel="previous" title="Literal Directive"> 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="Literal-Position-Directive"></a> 64<div class="header"> 65<p> 66Next: <a href="Literal-Prefix-Directive.html#Literal-Prefix-Directive" accesskey="n" rel="next">Literal Prefix Directive</a>, Previous: <a href="Literal-Directive.html#Literal-Directive" accesskey="p" rel="previous">Literal Directive</a>, Up: <a href="Xtensa-Directives.html#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> [<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="literal_005fposition"></a> 70<h4 class="subsubsection">9.55.5.5 literal_position</h4> 71<a name="index-literal_005fposition-directive"></a> 72 73<p>When using ‘<samp>--text-section-literals</samp>’ to place literals inline 74in the section being assembled, the <code>.literal_position</code> directive 75can be used to mark a potential location for a literal pool. 76</p> 77<div class="smallexample"> 78<pre class="smallexample"> .literal_position 79</pre></div> 80 81<p>The <code>.literal_position</code> directive is ignored when the 82‘<samp>--text-section-literals</samp>’ option is not used or when 83<code>L32R</code> instructions use the absolute addressing mode. 84</p> 85<p>The assembler will automatically place text section literal pools 86before <code>ENTRY</code> instructions, so the <code>.literal_position</code> 87directive is only needed to specify some other location for a literal 88pool. You may need to add an explicit jump instruction to skip over an 89inline literal pool. 90</p> 91<p>For example, an interrupt vector does not begin with an <code>ENTRY</code> 92instruction so the assembler will be unable to automatically find a good 93place to put a literal pool. Moreover, the code for the interrupt 94vector must be at a specific starting address, so the literal pool 95cannot come before the start of the code. The literal pool for the 96vector must be explicitly positioned in the middle of the vector (before 97any uses of the literals, due to the negative offsets used by 98PC-relative <code>L32R</code> instructions). The <code>.literal_position</code> 99directive can be used to do this. In the following code, the literal 100for ‘<samp>M</samp>’ will automatically be aligned correctly and is placed after 101the unconditional jump. 102</p> 103<div class="smallexample"> 104<pre class="smallexample"> .global M 105code_start: 106</pre><pre class="smallexample"> j continue 107 .literal_position 108 .align 4 109</pre><pre class="smallexample">continue: 110 movi a4, M 111</pre></div> 112 113 114 115 116</body> 117</html> 118