<?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>ColdFire/68K Microcontrollers and ProcessorsのトピックRe: assembly function embedded in C++ source file does not compile</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126540#M315</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Veter&lt;BR /&gt;&lt;BR /&gt;The in-line assembler code is for a PowerPC processor, not ColdFire! The ColdFire equivalent is something like:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;
int tm_asm_checksum (int loopCount,tt32Bit dataPtr,tt32Bit checksum)
{
 asm {
     move.l    checksum,d0       // Build result in D0
     move.l    dataPtr,a0        // A0 -&amp;gt; data
     move.l    loopCount,d1      // D1 holds loop count
     clr.l     d2
 CHECKSUM_LOOP:
     add.l     (a0)+,d0          // Add next value into checksum
     addx.l    d2,d0             // Also add in the carry
     subq.l    #1,d1
     bne       CHECKSUM_LOOP
 }
}   
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;This is not quite step-for-step equivalent - because the SUBQ instruction on ColdFire changes the Carry flag, it's been restructured slightly. However I believe (hope!) that it will give the same result.&lt;BR /&gt;&lt;BR /&gt;By the way, neither the PowerPC example nor the ColdFire version zeros out 'checksum' before executing. I assume that this is done by the caller. The code also doesn't check for a loop count of 0.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Hope this helps&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Simon&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 16 Mar 2007 17:15:22 GMT</pubDate>
    <dc:creator>SimonMarsden_de</dc:creator>
    <dc:date>2007-03-16T17:15:22Z</dc:date>
    <item>
      <title>assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126535#M310</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I have assembly function in C++ source. It compiles under DIAB, but does not compiles with CW for ColdFire. Could anyone tell what needs to be changes in the function in order for it to compile and work?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Function:&lt;/DIV&gt;&lt;DIV&gt;asm int tm_asm_checksum (register int loopCount,register tt32Bit dataPtr,register tt32Bit checksum)&lt;BR /&gt;{&lt;BR /&gt;%&amp;nbsp;&amp;nbsp; reg loopCount; reg dataPtr; reg checksum; lab CHECKSUM_LOOP&lt;/DIV&gt;&lt;DIV&gt;;/* Set branch counter to number of times to iterate through loop */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mtspr&amp;nbsp;&amp;nbsp; 9,loopCount&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;addi&amp;nbsp;&amp;nbsp;&amp;nbsp; dataPtr,dataPtr,0xFFFC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;;/* Clear the carry bit */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;addic&amp;nbsp;&amp;nbsp; checksum,checksum,0&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;&lt;BR /&gt;CHECKSUM_LOOP:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;lwzu&amp;nbsp;&amp;nbsp;&amp;nbsp; r6,4(dataPtr)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;adde&amp;nbsp;&amp;nbsp;&amp;nbsp; checksum,r6,checksum&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bdnz&amp;nbsp;&amp;nbsp;&amp;nbsp; CHECKSUM_LOOP&lt;/DIV&gt;&lt;DIV&gt;;/*&lt;BR /&gt;; * In case there was a carry due to the last addition, add the carry bit back&lt;BR /&gt;; * in to the sum ( checksum = checksum + 0 + XER[carry] ).&lt;BR /&gt;; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r6,r6,r6&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;adde&amp;nbsp;&amp;nbsp;&amp;nbsp; checksum,r6,checksum&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;addi&amp;nbsp;&amp;nbsp;&amp;nbsp; r3,checksum,0&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Mar 2007 00:00:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126535#M310</guid>
      <dc:creator>Veter</dc:creator>
      <dc:date>2007-03-16T00:00:21Z</dc:date>
    </item>
    <item>
      <title>Re: assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126536#M311</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Veter,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;It will be easier to&amp;nbsp;help if you can state the version of CW you are using and also to give the compiler error.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Cheers,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Paul.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Mar 2007 00:06:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126536#M311</guid>
      <dc:creator>mccPaul</dc:creator>
      <dc:date>2007-03-16T00:06:22Z</dc:date>
    </item>
    <item>
      <title>Re: assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126537#M312</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I'm using CodeWarrior Development Studio for ColdFire Architectures Version 6.3, Build 14&lt;/DIV&gt;&lt;DIV&gt;Below&amp;nbsp;are the compiler errors.&lt;/DIV&gt;&lt;DIV&gt;Thank you!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : illegal type qualifier(s)&lt;BR /&gt;trcsppcd.c line 51&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : illegal token&lt;BR /&gt;trcsppcd.c line 52&amp;nbsp;&amp;nbsp; %&amp;nbsp;&amp;nbsp; reg loopCount; reg dataPtr; reg checksum; lab CHECKSUM_LOOP&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 52&amp;nbsp;&amp;nbsp; %&amp;nbsp;&amp;nbsp; reg loopCount; reg dataPtr; reg checksum; lab CHECKSUM_LOOP&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : label 'reg' redefined&lt;BR /&gt;trcsppcd.c line 52&amp;nbsp;&amp;nbsp; %&amp;nbsp;&amp;nbsp; reg loopCount; reg dataPtr; reg checksum; lab CHECKSUM_LOOP&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 52&amp;nbsp;&amp;nbsp; %&amp;nbsp;&amp;nbsp; reg loopCount; reg dataPtr; reg checksum; lab CHECKSUM_LOOP&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 55&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mtspr&amp;nbsp;&amp;nbsp; 9,loopCount&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : function has no initialized stackframe&lt;BR /&gt;trcsppcd.c line 57&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addi&amp;nbsp;&amp;nbsp;&amp;nbsp; dataPtr,dataPtr,0xFFFC&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addic&amp;nbsp;&amp;nbsp; checksum,checksum,0&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 63&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lwzu&amp;nbsp;&amp;nbsp;&amp;nbsp; r6,4(dataPtr)&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adde&amp;nbsp;&amp;nbsp;&amp;nbsp; checksum,r6,checksum&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 65&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bdnz&amp;nbsp;&amp;nbsp;&amp;nbsp; CHECKSUM_LOOP&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : ':' expected&lt;BR /&gt;trcsppcd.c line 71&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r6,r6,r6&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : label 'adde' redefined&lt;BR /&gt;trcsppcd.c line 72&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adde&amp;nbsp;&amp;nbsp;&amp;nbsp; checksum,r6,checksum&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Error&amp;nbsp;&amp;nbsp; : illegal addressing mode&lt;BR /&gt;trcsppcd.c line 74&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addi&amp;nbsp;&amp;nbsp;&amp;nbsp; r3,checksum,0&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Mar 2007 00:55:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126537#M312</guid>
      <dc:creator>Veter</dc:creator>
      <dc:date>2007-03-16T00:55:53Z</dc:date>
    </item>
    <item>
      <title>Re: assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126538#M313</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Veter&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;I´m not sure what is wrong with the code warrior but you can edit the target settings for the C/C++ language by accessing the target settings (ALT+F7) and editing the Language Settings - C/C++ Language options as the ColdFire_Build_Tools_Reference.pdf tells to do.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Mar 2007 01:28:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126538#M313</guid>
      <dc:creator>Kremer</dc:creator>
      <dc:date>2007-03-16T01:28:57Z</dc:date>
    </item>
    <item>
      <title>Re: assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126539#M314</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Inline assembler is different between Diab and Freescale.&lt;/DIV&gt;&lt;DIV&gt;Please refer to the ColdFire_Build_Tools_Reference.pdf manual chapter "Inline Assembler" for information on supported inline assembler syntax.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;%&amp;nbsp;&amp;nbsp; reg loopCount; reg dataPtr; reg checksum; lab CHECKSUM_LOOP&lt;/DIV&gt;&lt;DIV&gt;for example is surely not understood by Freescale inline assembler.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If you are not able to get a compilable source code, you need to submit a service request&amp;nbsp; for that.&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;To log the issue please go to following URL:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.freescale.com/TechSupport" rel="nofollow" target="_blank"&gt;http://www.freescale.com/TechSupport&lt;/A&gt;&lt;BR /&gt;and click on "Submit a service request"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Make sure to attached a project reproducing the issue as well as installed products information.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp; To retrieve that info:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Start CodeWarrior&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Select Help -&amp;gt; About Freescale CodeWarrior&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Click on "Install Products"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Click on save as and save content of the dialog to a text file that you will attach to the SR.&lt;/P&gt;&lt;P&gt;Finally make sure to explain what you intend to do (i.e. what the Diab notation were supposed to do).&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;&lt;DIV&gt;CrasyCat&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Mar 2007 16:16:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126539#M314</guid>
      <dc:creator>CrasyCat</dc:creator>
      <dc:date>2007-03-16T16:16:30Z</dc:date>
    </item>
    <item>
      <title>Re: assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126540#M315</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Veter&lt;BR /&gt;&lt;BR /&gt;The in-line assembler code is for a PowerPC processor, not ColdFire! The ColdFire equivalent is something like:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;
int tm_asm_checksum (int loopCount,tt32Bit dataPtr,tt32Bit checksum)
{
 asm {
     move.l    checksum,d0       // Build result in D0
     move.l    dataPtr,a0        // A0 -&amp;gt; data
     move.l    loopCount,d1      // D1 holds loop count
     clr.l     d2
 CHECKSUM_LOOP:
     add.l     (a0)+,d0          // Add next value into checksum
     addx.l    d2,d0             // Also add in the carry
     subq.l    #1,d1
     bne       CHECKSUM_LOOP
 }
}   
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;This is not quite step-for-step equivalent - because the SUBQ instruction on ColdFire changes the Carry flag, it's been restructured slightly. However I believe (hope!) that it will give the same result.&lt;BR /&gt;&lt;BR /&gt;By the way, neither the PowerPC example nor the ColdFire version zeros out 'checksum' before executing. I assume that this is done by the caller. The code also doesn't check for a loop count of 0.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Hope this helps&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Simon&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Mar 2007 17:15:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126540#M315</guid>
      <dc:creator>SimonMarsden_de</dc:creator>
      <dc:date>2007-03-16T17:15:22Z</dc:date>
    </item>
    <item>
      <title>Re: assembly function embedded in C++ source file does not compile</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126541#M316</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Simon, thank you very much. This is the most helpfull unswer that could only hope for. Strength and Honor&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 17 Mar 2007 02:12:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/assembly-function-embedded-in-C-source-file-does-not-compile/m-p/126541#M316</guid>
      <dc:creator>Veter</dc:creator>
      <dc:date>2007-03-17T02:12:05Z</dc:date>
    </item>
  </channel>
</rss>

