<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPCXpresso IDEのトピックRe: compiler generating incorrect code?</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568815#M19447</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by wmues on Mon Jun 23 01:39:37 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Aaron,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if you write:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;toAddress += 0x1000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and toAddress is a "long" pointer, you instruct the compiler to do:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;toAddress = toAddress + (0x1000 * sizeof(long)).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in words: "advance the pointer to the 0x1000th data item".&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Wolfgang&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 22:26:15 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T22:26:15Z</dc:date>
    <item>
      <title>compiler generating incorrect code?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568812#M19444</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by alager on Sun Jun 22 21:38:01 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm writing a boot loader, and in the function that loops through and copies from "upper" flash to the destination, the compiler appears to be adding incorrectly.&amp;nbsp; I've tried simplifying and re-arranging the loop, but the compiler is insistent on adding 0x4000 instead of 0x1000.&amp;nbsp; See address below 0x88e.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using LPCXpresso v6.1.4 [Build 194] [2014-01-15] &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any advice,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Aaron&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;198&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transferToFlash:
00000848:&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; {r7, lr}
0000084a:&amp;nbsp;&amp;nbsp; sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sp, #8
0000084c:&amp;nbsp;&amp;nbsp; add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r7, sp, #0
200&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long * fromAddress = (unsigned long *)0x40000; //starting location of our flash image
0000084e:&amp;nbsp;&amp;nbsp; mov.w&amp;nbsp;&amp;nbsp; r3, #262144&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x40000
00000852:&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r7, #4]
201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long toAddress = APPLICATION_START;
00000854:&amp;nbsp;&amp;nbsp; mov.w&amp;nbsp;&amp;nbsp; r3, #4096&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x1000
00000858:&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r7, #0]
204&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( ; (unsigned long)fromAddress &amp;lt;= 0x7efff;&amp;nbsp; )
0000085a:&amp;nbsp;&amp;nbsp; b.n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x894 &amp;lt;transferToFlash+76&amp;gt;
206&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy( buffer, fromAddress, MAX_BUFFER_SIZE);
0000085c:&amp;nbsp;&amp;nbsp; movw&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, #80 ; 0x50
00000860:&amp;nbsp;&amp;nbsp; movt&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, #4096&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x1000
00000864:&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r2, [r7, #4]
00000866:&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, r3
00000868:&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, r2
0000086a:&amp;nbsp;&amp;nbsp; mov.w&amp;nbsp;&amp;nbsp; r2, #4096&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x1000
0000086e:&amp;nbsp;&amp;nbsp; bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb6c &amp;lt;memcpy&amp;gt;
209&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myWriteFlash( toAddress, buffer, MAX_BUFFER_SIZE );
00000872:&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, [r7, #0]
00000874:&amp;nbsp;&amp;nbsp; movw&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, #80 ; 0x50
00000878:&amp;nbsp;&amp;nbsp; movt&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, #4096&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x1000
0000087c:&amp;nbsp;&amp;nbsp; mov.w&amp;nbsp;&amp;nbsp; r2, #4096&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0x1000
00000880:&amp;nbsp;&amp;nbsp; bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x44c &amp;lt;myWriteFlash&amp;gt;
212&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; toAddress+= 0x1000;
00000884:&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r7, #0]
00000886:&amp;nbsp;&amp;nbsp; add.w&amp;nbsp;&amp;nbsp; r3, r3, #4096&amp;nbsp;&amp;nbsp; ; 0x1000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-- this is correct
0000088a:&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r7, #0]
213&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fromAddress+= 0x1000;
0000088c:&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r7, #4]
0000088e:&amp;nbsp;&amp;nbsp; add.w&amp;nbsp;&amp;nbsp; r3, r3, #16384&amp;nbsp; ; 0x4000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-- this should be 0x1000 or #4096
00000892:&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r7, #4]
204&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( ; (unsigned long)fromAddress &amp;lt;= 0x7efff;&amp;nbsp; )
00000894:&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r2, [r7, #4]
00000896:&amp;nbsp;&amp;nbsp; movw&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, #61439&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0xefff
0000089a:&amp;nbsp;&amp;nbsp; movt&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, #7
0000089e:&amp;nbsp;&amp;nbsp; cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r2, r3
000008a0:&amp;nbsp;&amp;nbsp; bls.n&amp;nbsp;&amp;nbsp; 0x85c &amp;lt;transferToFlash+20&amp;gt;
215&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:26:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568812#M19444</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:26:13Z</dc:date>
    </item>
    <item>
      <title>Re: compiler generating incorrect code?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568813#M19445</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by capiman on Sun Jun 22 21:52:46 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Try changing &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long * fromAddress = ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;to&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned char * fromAddress = ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:26:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568813#M19445</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:26:14Z</dc:date>
    </item>
    <item>
      <title>Re: compiler generating incorrect code?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568814#M19446</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by alager on Sun Jun 22 22:15:09 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Doh!&amp;nbsp;&amp;nbsp; :bigsmile: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks capiman!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Aaron&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:26:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568814#M19446</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:26:14Z</dc:date>
    </item>
    <item>
      <title>Re: compiler generating incorrect code?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568815#M19447</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by wmues on Mon Jun 23 01:39:37 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Aaron,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if you write:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;toAddress += 0x1000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and toAddress is a "long" pointer, you instruct the compiler to do:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;toAddress = toAddress + (0x1000 * sizeof(long)).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in words: "advance the pointer to the 0x1000th data item".&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Wolfgang&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:26:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/compiler-generating-incorrect-code/m-p/568815#M19447</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:26:15Z</dc:date>
    </item>
  </channel>
</rss>

