eTPU_C Product News

eTPU_C |

eTPU_C Compiler Update V1.0.7.85

The eTPU C compiler V1.0.7.85 has been released and is available from the customer update depot on Byte Craft's website.

http://www.bytecraft.com/depot/depot.php

The following notes summarize the changes.

Corrections

  1. Saving of DIOB register in complex expressions. DIOB was being lost is some complex expressions.
  2. Condition codes properly set in the following code:
    int16 x;
    if (x == 0) { . . . }   // condition codes controlling the branch were
                            // not set for 16 bit variables
    

Changes

  1. Bit set or clear handling code generation.
  2. Byte access optimization in registers.
  3. "if (*h)" changed to load into void instead of AC.
  4. Consistently handling mixed mode between fract24 and int24. The following example generated the same code in previous versions. Starting with V1.0.7.80, assigning a int24 expression to a fract24 will start with aligning the decimal points. This will impact code written to take advantage of fract bit patterns.

    The fract bit patterns operations will need to use a union

                                              unsigned fract24 uf24;
                                              int   i24a,i24b;
    
    021C 9FEFFB01   ram p23_0 = 0005.         i24a = i24b * 32;
    0220 18087BAA   alu p = p <<4,ccs.
    0224 93F87A00   alu p = p <<1 ,ccs;
                      ram 0001 = p23_0.
    0228 9FEFFB01   ram p23_0 = 0005.         uf24 = i24b * 32;
    022C 18087BF2   alu p = p >>16,ccs.
    0230 18087B92   alu p = p >>2,ccs.
    
    0234 97F87A02   alu p = p >>1 ,ccs;
                      ram 0009 = p23_0. 
    
  5. Fixed code generation differences for constant array index calculation with indexes of 0 vs (0). The (0) previously did an array calculation and 0 treated the array the same as a variable access.

Additions

  1. #asm( ram p = prm1; return,noflush.); is now being allowed as a single instruction.
  2. Added dispatch call, jump, goto and return support to formats D1..D4 RAM.
  3. Added dispatch call, jump, goto and return support to formats D1..D4 CHAN.
  4. Added error to trap #asm ( GOTO 0x1234,FREE_G .);: "FREE_G is not a jump / call modifier."

    Validated FLUSH, NOFLUSH, NO_FLUSH in asm parser, added error "error Expected FLUSH, NOFLUSH, NO_FLUSH found ..."

  5. Added following a call or jump:
    FREE_G ;       FREE_P ;      LOCK_P0 ;
    LOCK_P1 ;     LOCK_P2 ;    LOCK_P3 ;
    LOCK_G0 ;     LOCK_G1 ;    LOCK_G2 ;
    LOCK_G3
    

    This is an alternative syntax for what is usually a RAM modifier but not always viewed as a RAM modifier.

  6. Alternative syntax support code for 'IF' statement following a RAM instruction.

Contacting Byte Craft Limited

eTPU C compiler support contact etpuc@bytecraft.com
Sales and extended support sales@bytecraft.com
Website eTPU C information http://www.bytecraft.com/eTPU_C
eTPU features list http://bytecraft.com/eTPU_C/Features
eTPU faq http://bytecraft.com/downloads/eTPU_C_FAQ.pdf
eTPU product summary http://bytecraft.com/downloads/ExecutiveSummary.swf

Byte Craft Limited
55 Northfield Drive East 213
Waterloo, Ontario
Canada N2K 3T6
1(519)888-6911