• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2011.09/share/doc/arm-arm-none-eabi/html/ld.html/
1<html lang="en">
2<head>
3<title>H8/300 - Untitled</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Untitled">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="Machine-Dependent.html#Machine-Dependent" title="Machine Dependent">
9<link rel="next" href="i960.html#i960" title="i960">
10<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
11<!--
12This file documents the GNU linker LD
13(Sourcery CodeBench Lite 2011.09-69)
14version 2.21.53.
15
16Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
172001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
18
19Permission is granted to copy, distribute and/or modify this document
20under the terms of the GNU Free Documentation License, Version 1.3
21or any later version published by the Free Software Foundation;
22with no Invariant Sections, with no Front-Cover Texts, and with no
23Back-Cover Texts.  A copy of the license is included in the
24section entitled ``GNU Free Documentation License''.-->
25<meta http-equiv="Content-Style-Type" content="text/css">
26<style type="text/css"><!--
27  pre.display { font-family:inherit }
28  pre.format  { font-family:inherit }
29  pre.smalldisplay { font-family:inherit; font-size:smaller }
30  pre.smallformat  { font-family:inherit; font-size:smaller }
31  pre.smallexample { font-size:smaller }
32  pre.smalllisp    { font-size:smaller }
33  span.sc    { font-variant:small-caps }
34  span.roman { font-family:serif; font-weight:normal; } 
35  span.sansserif { font-family:sans-serif; font-weight:normal; } 
36--></style>
37<link rel="stylesheet" type="text/css" href="../cs.css">
38</head>
39<body>
40<div class="node">
41<a name="H8%2f300"></a>
42<a name="H8_002f300"></a>
43<p>
44Next:&nbsp;<a rel="next" accesskey="n" href="i960.html#i960">i960</a>,
45Up:&nbsp;<a rel="up" accesskey="u" href="Machine-Dependent.html#Machine-Dependent">Machine Dependent</a>
46<hr>
47</div>
48
49<h3 class="section">4.1 <samp><span class="command">ld</span></samp> and the H8/300</h3>
50
51<p><a name="index-H8_002f300-support-569"></a>For the H8/300, <samp><span class="command">ld</span></samp> can perform these global optimizations when
52you specify the &lsquo;<samp><span class="samp">--relax</span></samp>&rsquo; command-line option.
53
54     
55<a name="index-relaxing-on-H8_002f300-570"></a>
56<dl><dt><em>relaxing address modes</em><dd><samp><span class="command">ld</span></samp> finds all <code>jsr</code> and <code>jmp</code> instructions whose
57targets are within eight bits, and turns them into eight-bit
58program-counter relative <code>bsr</code> and <code>bra</code> instructions,
59respectively.
60
61     <p><a name="index-synthesizing-on-H8_002f300-571"></a><br><dt><em>synthesizing instructions</em><dd><!-- FIXME: specifically mov.b, or any mov instructions really? -->
62<samp><span class="command">ld</span></samp> finds all <code>mov.b</code> instructions which use the
63sixteen-bit absolute address form, but refer to the top
64page of memory, and changes them to use the eight-bit address form. 
65(That is: the linker turns &lsquo;<samp><span class="samp">mov.b </span><code>@</code><var>aa</var><span class="samp">:16</span></samp>&rsquo; into
66&lsquo;<samp><span class="samp">mov.b </span><code>@</code><var>aa</var><span class="samp">:8</span></samp>&rsquo; whenever the address <var>aa</var> is in the
67top page of memory).
68
69     <br><dt><em>bit manipulation instructions</em><dd><samp><span class="command">ld</span></samp> finds all bit manipulation instructions like <code>band, bclr,
70biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor</code>
71which use 32 bit and 16 bit absolute address form, but refer to the top
72page of memory, and changes them to use the 8 bit address form. 
73(That is: the linker turns &lsquo;<samp><span class="samp">bset #xx:3,</span><code>@</code><var>aa</var><span class="samp">:32</span></samp>&rsquo; into
74&lsquo;<samp><span class="samp">bset #xx:3,</span><code>@</code><var>aa</var><span class="samp">:8</span></samp>&rsquo; whenever the address <var>aa</var> is in
75the top page of memory).
76
77     <br><dt><em>system control instructions</em><dd><samp><span class="command">ld</span></samp> finds all <code>ldc.w, stc.w</code> instructions which use the
7832 bit absolute address form, but refer to the top page of memory, and
79changes them to use 16 bit address form. 
80(That is: the linker turns &lsquo;<samp><span class="samp">ldc.w </span><code>@</code><var>aa</var><span class="samp">:32,ccr</span></samp>&rsquo; into
81&lsquo;<samp><span class="samp">ldc.w </span><code>@</code><var>aa</var><span class="samp">:16,ccr</span></samp>&rsquo; whenever the address <var>aa</var> is in
82the top page of memory). 
83</dl>
84
85   </body></html>
86
87