blob: 1999376bc23368e5227a0228199358fb72b27c1f [file] [log] [blame]
<html lang="en">
<head>
<title>SH64-Addressing - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="SH64-Syntax.html#SH64-Syntax" title="SH64 Syntax">
<link rel="prev" href="SH64_002dRegs.html#SH64_002dRegs" title="SH64-Regs">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 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''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="SH64-Addressing"></a>
<a name="SH64_002dAddressing"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="SH64_002dRegs.html#SH64_002dRegs">SH64-Regs</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="SH64-Syntax.html#SH64-Syntax">SH64 Syntax</a>
<hr>
</div>
<h5 class="subsubsection">9.34.2.3 Addressing Modes</h5>
<p><a name="index-addressing-modes_002c-SH64-1612"></a><a name="index-SH64-addressing-modes-1613"></a>
SH64 operands consist of either a register or immediate value. The
immediate value can be a constant or label reference (or portion of a
label reference), as in this example:
<pre class="example"> movi 4,r2
pt function, tr4
movi (function &gt;&gt; 16) &amp; 65535,r0
shori function &amp; 65535, r0
ld.l r0,4,r0
</pre>
<p><a name="index-datalabel_002c-SH64-1614"></a>Instruction label references can reference labels in either SHmedia or
SHcompact. To differentiate between the two, labels in SHmedia sections
will always have the least significant bit set (i.e. they will be odd),
which SHcompact labels will have the least significant bit reset
(i.e. they will be even). If you need to reference the actual address
of a label, you can use the <code>datalabel</code> modifier, as in this
example:
<pre class="example"> .long function
.long datalabel function
</pre>
<p>In that example, the first longword may or may not have the least
significant bit set depending on whether the label is an SHmedia label
or an SHcompact label. The second longword will be the actual address
of the label, regardless of what type of label it is.
</body></html>