<?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: LPCXpresso 7.3 Assembler generates increased code size</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545621#M9299</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Mon Aug 18 00:56:48 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for responding, but my example are using the assembler directly; "C" and whatever new/changed options are used&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;do not not factor into my equation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 00:33:25 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T00:33:25Z</dc:date>
    <item>
      <title>LPCXpresso 7.3 Assembler generates increased code size</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545619#M9297</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Sun Aug 17 15:07:04 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The assembler included in 7.3 generates larger code for the same source file with the same options than that&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;which was included in 6.02.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The root cause seems to be where a forward branch to a label marked as a thumb function is now generating&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a wide branch where it used to generate a narrow branch. But not always!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have tried to find a changelog on the net to see if this behaviour is documented but I failed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried to see if there is a (new?) assembler switch to correct the problem but again I failed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As I understand things, the "C" compiler generates assembler code that is passed to the assembler,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;so this is a problem that will affect all users, not just those who write assembler directly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Given that branches are very common, this would apear to be a serious backward step.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Examples:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;New Assembler [2.23]&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;00002466 EnableIRQ:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2466:f45f 7380 movs.wr3, #256; 0x100
&amp;nbsp;&amp;nbsp;&amp;nbsp; 246a:f000 b804 b.w2476 &amp;lt;EnableDisable&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WIDE Branch

0000246e DisableIRQ:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 246e:f45f 73c0 movs.wr3, #384; 0x180
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2472:f000 b800 b.w2476 &amp;lt;EnableDisable&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WIDE Branch

00002476 EnableDisable:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2476:282a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpr0, #42; 0x2a
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2478:d20a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcs.n2490 &amp;lt;EnableDisable+0x1a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 247a:f113 23e0 adds.wr3, r3, #3758153728; 0xe000e000
&amp;nbsp;&amp;nbsp;&amp;nbsp; 247e:2820&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpr0, #32

But see here

00002220 ClkSet:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2220:2078&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movsr0, #120; 0x78
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2222:e7ff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.n2224 &amp;lt;ClkSetup&amp;gt;&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;&amp;nbsp;&amp;nbsp; NARROW Branch

00002224 ClkSetup:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2224:4b39&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldrr3, [pc, #228]; (230c &amp;lt;Pool&amp;gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2226:2220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movsr2, #32
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2228:f8d3 11a0 ldr.wr1, [r3, #416]; 0x1a0
&amp;nbsp;&amp;nbsp;&amp;nbsp; 222c:4311&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; orrsr1, r2
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Old Assembler [2.21]&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;00002466 EnableIRQ:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2466:f45f 7380 movs.wr3, #256; 0x100
&amp;nbsp;&amp;nbsp;&amp;nbsp; 246a:e002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.n2472 &amp;lt;EnableDisable&amp;gt;&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; NARROW Branch

0000246c DisableIRQ:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 246c:f45f 73c0 movs.wr3, #384; 0x180
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2470:e7ff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.n2472 &amp;lt;EnableDisable&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NARROW Branch

00002472 EnableDisable:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2472:282a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpr0, #42; 0x2a
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2474:d20a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcs.n248c &amp;lt;EnableDisable+0x1a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2476:f113 23e0 adds.wr3, r3, #3758153728; 0xe000e000
&amp;nbsp;&amp;nbsp;&amp;nbsp; 247a:2820&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmpr0, #32

But Again

00002220 ClkSet:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2220:2078&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movsr0, #120; 0x78
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2222:e7ff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.n2224 &amp;lt;ClkSetup&amp;gt;&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; NARROW Branch

00002224 ClkSetup:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2224:4b39&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldrr3, [pc, #228]; (230c &amp;lt;Pool&amp;gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2226:2220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movsr2, #32
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2228:f8d3 11a0 ldr.wr1, [r3, #416]; 0x1a0
&amp;nbsp;&amp;nbsp;&amp;nbsp; 222c:4311&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; orrsr1, r2
&amp;nbsp;&amp;nbsp;&amp;nbsp; 222e:f8c3 11a0 str.wr1, [r3, #416]; 0x1a0
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I really need a resolution for this, but if one is not forth comming in the near time,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;is it acceptable to copy the entire 'tools' directory structure from 6.02 to 7.3?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards, Mike&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:33:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545619#M9297</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:33:24Z</dc:date>
    </item>
    <item>
      <title>Re: LPCXpresso 7.3 Assembler generates increased code size</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545620#M9298</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by OldManVimes on Mon Aug 18 00:33:55 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Mike,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's good to see your attention to detail. I am not in a position to give you real support, but the difference you are seeing is the result of a newer GCC compiler version. On average I find that GCC improves with newer versions, so there might be a benefit that we can't identify here. If code size is a primary driver for you, ensure you select the "-Os" optimization level in your compiler settings. I've been playing with "-flto" as well, but it gets a bit aggressive and strips, what it thinks are, un-referenced symbols from my image causing it to fail.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Tip: Create a dummy project in 7.3 using the wizard from scratch and look at the compiler settings this generates. They contain some interesting settings (although they might not have changed that much since version 6). This might give you some other space saving options. The settings generated by the wizard are good with the exception of a generic Eclipse issue where dependency files are borked since there's no dependency between the object file and the dependencies of the source file (talk about frustration). There's a thread lurking somewhere on this forum describing this issue. It also contains a fix. Basically compiler generated dependency files is beyond the level of competence of the Eclispe CDT community.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Vimes&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;"And when the Patrician was unhappy, he became very democratic. He found intricate and painful ways of spreading that unhappiness as far as possible."&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:33:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545620#M9298</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:33:25Z</dc:date>
    </item>
    <item>
      <title>Re: LPCXpresso 7.3 Assembler generates increased code size</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545621#M9299</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Mon Aug 18 00:56:48 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for responding, but my example are using the assembler directly; "C" and whatever new/changed options are used&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;do not not factor into my equation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:33:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545621#M9299</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:33:25Z</dc:date>
    </item>
    <item>
      <title>Re: LPCXpresso 7.3 Assembler generates increased code size</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545622#M9300</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by lpcxpresso-support on Mon Aug 18 04:03:21 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Sorry - but if you want to guarantee the use of a wide or narrow form of an instruction when writing in assembly code, then you need to specify the width you want explicitly. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Otherwise the assembler can choose whichever it wishes, and there an no guarantees that the rules and heuristics used will not change between GNU tool releases.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPCXpresso Support.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:33:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545622#M9300</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:33:26Z</dc:date>
    </item>
    <item>
      <title>Re: LPCXpresso 7.3 Assembler generates increased code size</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545623#M9301</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Mon Aug 18 04:44:16 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Agreed, one can force a wide/narrow choice, but it has never been necessary until now.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can you point me to the changelog for the specific version of binutils that 7.3 installs where this difference in&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;behaviour is identified.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 00:33:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPCXpresso-7-3-Assembler-generates-increased-code-size/m-p/545623#M9301</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T00:33:27Z</dc:date>
    </item>
  </channel>
</rss>

