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: <a rel="next" accesskey="n" href="i960.html#i960">i960</a>, 45Up: <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 ‘<samp><span class="samp">--relax</span></samp>’ 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 ‘<samp><span class="samp">mov.b </span><code>@</code><var>aa</var><span class="samp">:16</span></samp>’ into 66‘<samp><span class="samp">mov.b </span><code>@</code><var>aa</var><span class="samp">:8</span></samp>’ 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 ‘<samp><span class="samp">bset #xx:3,</span><code>@</code><var>aa</var><span class="samp">:32</span></samp>’ into 74‘<samp><span class="samp">bset #xx:3,</span><code>@</code><var>aa</var><span class="samp">:8</span></samp>’ 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 ‘<samp><span class="samp">ldc.w </span><code>@</code><var>aa</var><span class="samp">:32,ccr</span></samp>’ into 81‘<samp><span class="samp">ldc.w </span><code>@</code><var>aa</var><span class="samp">:16,ccr</span></samp>’ whenever the address <var>aa</var> is in 82the top page of memory). 83</dl> 84 85 </body></html> 86 87