<?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>Kinetis Design Studioのトピック Compiler Error with negative global variable shift parameter</title>
    <link>https://community.nxp.com/t5/Kinetis-Design-Studio/Compiler-Error-with-negative-global-variable-shift-parameter/m-p/686793#M9057</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Compiler Error with negative global variable shift parameter&lt;/P&gt;&lt;P&gt;Default Compiler using by&amp;nbsp; KDS 3.2.0 with FreeRTOS&lt;/P&gt;&lt;P&gt;When shifting&amp;nbsp; like following&lt;BR /&gt;Int32_t x ;&lt;BR /&gt;Int32_t y = 8 ;&lt;BR /&gt;Int8_t z = -1 ;&lt;BR /&gt;x = y &amp;lt;&amp;lt; z;&lt;BR /&gt;or&lt;BR /&gt;x = y &amp;gt;&amp;gt; z;&lt;/P&gt;&lt;P&gt;If the variables y or z are global and if z is negative the result in x becomes = 0 whatever the values it should take.&lt;BR /&gt;All variables to the right of the "=" must be local for the function to give a correct result with z negative.&lt;BR /&gt;for exemple :&lt;BR /&gt;x = y &amp;lt;&amp;lt; (u-w);&lt;BR /&gt;or&lt;BR /&gt;x = y &amp;gt;&amp;gt; (u-w);&lt;BR /&gt;In this case it is necessary that y, u and w be declared in local variable for correct operation with (u-w) negative.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Workaround:&lt;/P&gt;&lt;P&gt;The safest solution if we don't know the declaration zone, is to achieve a macro that results in always positive shift.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MACRO_LEFTSHIFTSIGNED_SAMEVALUE(value,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0)&amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;lt;&amp;lt;= (shift); \&lt;BR /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;gt;&amp;gt;= (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MACRO_LEFTSHIFTSIGNED(out,in,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0) &amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;lt;&amp;lt; (shift); \&lt;BR /&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; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;gt;&amp;gt; (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#define MACRO_RIGHTSHIFTSIGNED_SAMEVALUE(value,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0) &amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;gt;&amp;gt;= (shift); \&lt;BR /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;lt;&amp;lt;= (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MACRO_RIGHTSHIFTSIGNED(out,in,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0) &amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;gt;&amp;gt; (shift); \&lt;BR /&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; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;lt;&amp;lt; (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 28 Jul 2017 15:20:03 GMT</pubDate>
    <dc:creator>didierjeanjean</dc:creator>
    <dc:date>2017-07-28T15:20:03Z</dc:date>
    <item>
      <title>Compiler Error with negative global variable shift parameter</title>
      <link>https://community.nxp.com/t5/Kinetis-Design-Studio/Compiler-Error-with-negative-global-variable-shift-parameter/m-p/686793#M9057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Compiler Error with negative global variable shift parameter&lt;/P&gt;&lt;P&gt;Default Compiler using by&amp;nbsp; KDS 3.2.0 with FreeRTOS&lt;/P&gt;&lt;P&gt;When shifting&amp;nbsp; like following&lt;BR /&gt;Int32_t x ;&lt;BR /&gt;Int32_t y = 8 ;&lt;BR /&gt;Int8_t z = -1 ;&lt;BR /&gt;x = y &amp;lt;&amp;lt; z;&lt;BR /&gt;or&lt;BR /&gt;x = y &amp;gt;&amp;gt; z;&lt;/P&gt;&lt;P&gt;If the variables y or z are global and if z is negative the result in x becomes = 0 whatever the values it should take.&lt;BR /&gt;All variables to the right of the "=" must be local for the function to give a correct result with z negative.&lt;BR /&gt;for exemple :&lt;BR /&gt;x = y &amp;lt;&amp;lt; (u-w);&lt;BR /&gt;or&lt;BR /&gt;x = y &amp;gt;&amp;gt; (u-w);&lt;BR /&gt;In this case it is necessary that y, u and w be declared in local variable for correct operation with (u-w) negative.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Workaround:&lt;/P&gt;&lt;P&gt;The safest solution if we don't know the declaration zone, is to achieve a macro that results in always positive shift.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MACRO_LEFTSHIFTSIGNED_SAMEVALUE(value,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0)&amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;lt;&amp;lt;= (shift); \&lt;BR /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;gt;&amp;gt;= (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MACRO_LEFTSHIFTSIGNED(out,in,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0) &amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;lt;&amp;lt; (shift); \&lt;BR /&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; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;gt;&amp;gt; (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#define MACRO_RIGHTSHIFTSIGNED_SAMEVALUE(value,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0) &amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;gt;&amp;gt;= (shift); \&lt;BR /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(value) &amp;lt;&amp;lt;= (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MACRO_RIGHTSHIFTSIGNED(out,in,shift) &amp;nbsp;&amp;nbsp; &amp;nbsp;if ((shift) &amp;gt;= 0) &amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;gt;&amp;gt; (shift); \&lt;BR /&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; &amp;nbsp;else &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(out) = (in) &amp;lt;&amp;lt; (-shift)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Jul 2017 15:20:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Design-Studio/Compiler-Error-with-negative-global-variable-shift-parameter/m-p/686793#M9057</guid>
      <dc:creator>didierjeanjean</dc:creator>
      <dc:date>2017-07-28T15:20:03Z</dc:date>
    </item>
    <item>
      <title>Re:  Compiler Error with negative global variable shift parameter</title>
      <link>https://community.nxp.com/t5/Kinetis-Design-Studio/Compiler-Error-with-negative-global-variable-shift-parameter/m-p/686794#M9058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello didier,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot for your sharing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Alice&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Aug 2017 03:37:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Design-Studio/Compiler-Error-with-negative-global-variable-shift-parameter/m-p/686794#M9058</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2017-08-02T03:37:05Z</dc:date>
    </item>
  </channel>
</rss>

