• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Microcontrollers » C2000™ Microcontrollers » C2000 32-bit Microcontrollers Forum » Is this a C compiler bug?
Share
C2000™ Microcontrollers
  • Forums
  • Announcements
  • E2E Wiki
Options
  • Subscribe via RSS
C2000 Resources
  • Product Folder
  • C2000 Training Portal
  • C2000 Technical Training Catalog
  • C2000 Datasheets, App Notes, User Guides
  • C2000 Hardware Design Kits
  • controlSUITE for C2000 Software Library


  • InstaSPIN Resources
  • What is InstaSPIN?
  • Videos and Support


  • InstaSPIN-FOC and InstaSPIN-MOTION Resources
  • What is InstaSPIN-FOC?
  • What is InstaSPIN-MOTION?
  • InstaSPIN Simulation Tool
  • Product Folder: F28069F, F28068F, F28062F, F28068M, F28069M
  • User’s Guide
  • Technical User’s Manual
  • Tools
  • Forums

    Is this a C compiler bug?

    • EricM
      Posted by EricM
      on Sep 13 2008 01:29 AM
      Prodigy140 points

      I've got some C code that looks like:

        if( minuteCount > 0x3)
        {
            i = 0xAA;  // debug
        }

      For some reason, it jumps into this code (setting i to 0xAA) even when minuteCount is set to 0.  I set the view in Code Composer Studio to "Mixed Source/ASM" and I'm seeing:

        if( minuteCount > 0x3)
      00B72F 761F MOVW       DP,#0x02FA
      00B731 9203 MOV        AL,@3
      00B732 5203 CMPB       AL,#3
        {
             i = 0xAA;  // debug
      00B733 56B2 MOVB       *-SP[3],#0x08,GT

      }

      I'm not an assembly expert, but shouldn't there be some kind of conditional jump made after the CMPB test of AL, when comparing it to #3?

      I'm running Code Composer Studio 3.3.59.4

      Code Generation Tools v5.0.0B2

      Compiler settings:

      -g -q -pdr -fr"$(Proj_dir)\Debug" -fs"$(Proj_dir)\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -i"C:\tidcs\c28\C28x_FPU_Lib\beta1\include" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 --float_support=fpu32

      Any ideas?

      Thanks,

      Eric

       

       

       

       

       

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Raffaele Tegas
      Posted by Raffaele Tegas
      on Sep 13 2008 02:35 AM
      Intellectual475 points

      Are you sure minuteCount is defined as int?

      Then, to view complete asm code for your instructions, you should read more lines, because the assembly code you read is not in 1 to 1 sequentially correspondent to your C code. Try to read few lines forward and you'll see the branch instruction.

      Regards,

      Raffaele

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • EricM
      Posted by EricM
      on Sep 15 2008 01:18 AM
      Prodigy140 points

      Hi Raffaele,

      Here's a simplified version that shows the compiler output:

       

      int minuteCount = 0;
      int i;

      main()
      {
       if( minuteCount > 0x3)
       {
      000040      __text, .text, main:
      000040 761F MOVW       DP,#0x0000
      000042 9200 MOV        AL,@0
      000043 5203 CMPB       AL,#3
        i = 0x55;
      000044 56B2 MOVB       @1,#0x55,GT
       }
      000046 9A00 MOVB       AL,#0
      }
      000047 0006 LRETR

       

      I still don't seem to see any conditional branching.

      Thanks,

      Eric

       

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Mitja Nemec
      Posted by Mitja Nemec
      on Sep 15 2008 01:59 AM
      Genius4175 points

      Hi Eric

      The instuction at address 0x0044 MOVB @1,0x55,GT is a conditional move (move if GT (greater))

      Hope this clears things up

       

      Regards, Mitja

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • EricM
      Posted by EricM
      on Sep 15 2008 15:21 PM
      Prodigy140 points

      Mitja,

      Yes, that clears things up! 

      I apologize for my assembly language ignorance, I've been doing most of my development in "C".

      Thanks,

      Eric

       

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Raffaele Tegas
      Posted by Raffaele Tegas
      on Sep 16 2008 00:03 AM
      Intellectual475 points

      Oops, didn't see the GT... sorry :P

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use