Bug compiler version 5.4.75 bei lo() und hi()

Thomas.AC
Benutzer
Avatar
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Bug compiler version 5.4.75 bei lo() und hi()

 · 
Posted: 26.06.2014 - 11:23  ·  #1
Hallo,

nach update auf Compiler Version 5.4.75 bekomme ich einen Assemblerfehler bei
Code
DMACH0TRFCNTL := lo(BLOCKSIZE);
DMACH0TRFCNTH := hi(BLOCKSIZE);

Blocksize ist eine Wordkonstante.
Betrifft vielleicht auch vorhergehende Versionen, da mein vorletztes Update vom 25.5.2012 ist

Bitte und Danke für eine Berichtigung.

Gruß

Thomas.AC



Code
program tryout;
// compiler version: 5.4.75

{ $BOOTRST $0F000}         {Reset Jump to $0F000}
{ $NOSHADOW}
{ $W+ Warnings}            {Warnings off}

Device = xmega128A4U, VCC = 3.3;
{ $BOOTRST $20000}         {Reset Jump to $20000}

Import SysTick;

Define
    OSCtype        = extXTAL=4096000, PLLmul=8, prescA=1, prescB=1, prescC=1,
                     overdrive;
    SysTick        = 10;
    StackSize      = 128, iData;
    FrameSize      = 256, iData;

Implementation
{$IDATA}

const
    BLOCKSIZE : word = 1024;

begin
    DMACH0TRFCNTL := lo(BLOCKSIZE);    // internal assembler error 1195 error: parameter error
    DMACH0TRFCNTH := hi(BLOCKSIZE);
end.
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Bug compiler version 5.4.75 bei lo() und hi()

 · 
Posted: 26.06.2014 - 12:00  ·  #2
Hi,

vielleicht hilft's rh bei der Fehlersuche:

5.4.72 und vorherige funktionieren
5.4.73 ??? (nicht archiviert)
5.4.74 und folgende: der beschriebene Fehler

Also wurde der Fehler bei .73 oder .74 eingebaut

Gruß
Gunter

5.4.72 hat folgendes generiert
Code

tryout.$_Main:
                        .BLOCK    26
                        .LINE     27
                        LDI       _ACCA, 0FFh
                        STS       DMACH0TRFCNTL, _ACCA
                        .LINE     28
                        LDI       _ACCA, 003h
                        STS       DMACH0TRFCNTH, _ACCA
                        .ENDBLOCK 29


seit 5.4.74:
Code


tryout.BLOCKSIZE        .EQU    00400h          ; const word     1024
...
tryout.$_Main:
                        .BLOCK    26
                        .LINE     27
                        LDI       _ACCA, tryout.BLOCKSIZE       <------------ Parameter Error
                        STS       DMACH0TRFCNTL, _ACCA
                        .LINE     28
                        LDI       _ACCA, tryout.BLOCKSIZE       <------------ Parameter Error
                        STS       DMACH0TRFCNTH, _ACCA
                        .ENDBLOCK 29

Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Bug compiler version 5.4.75 bei lo() und hi()

 · 
Posted: 26.06.2014 - 12:33  ·  #3
Hat wohl damit zutun:

Revision History
=========================

Compiler Revision 5.04.74 16.Jun.2014
-------------------------
Ansicht von Konstanten mit Namen statt mit Werten im ASM.
Thomas.AC
Benutzer
Avatar
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Re: Bug compiler version 5.4.75 bei lo() und hi()

 · 
Posted: 26.06.2014 - 12:36  ·  #4
@Gunter: Danke für Info

hier tritt ein ähnlicher Assemblerfehler ohne Verwendung von lo oder hi auf:
Code
DMACH1TRIGSRC := DMATRIGSRC;

DMACH1TRIGSRC ist ein Hardwareregister
DMATRIGSRC ist als lokale Konstante definiert.

Gruß
Thomas

und hier das vollständige Testprogramm:

Code
program tryout;
// compiler version: 5.4.75

{ $BOOTRST $0F000}         {Reset Jump to $0F000}
{ $NOSHADOW}
{ $W+ Warnings}            {Warnings off}

Device = xmega128A4U, VCC = 3.3;
{ $BOOTRST $20000}         {Reset Jump to $20000}

Import SysTick;

Define
    OSCtype        = extXTAL=4096000, PLLmul=8, prescA=1, prescB=1, prescC=1,
                     overdrive;
    SysTick        = 10;
    StackSize      = 128, iData;
    FrameSize      = 256, iData;

Implementation
{$IDATA}

const


var

procedure Init;
const
    DMATRIGSRC : byte = $4C;
begin
    DMACH1TRIGSRC := DMATRIGSRC;
end;


begin
    Init;
end.

rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bug compiler version 5.4.75 bei lo() und hi()

 · 
Posted: 26.06.2014 - 20:24  ·  #5
@all, Thomas, Gunter,

the above little problems were all introduced by the "named const" implementation.
Sorry about that. But they are fixed now, but maybe one or two of them will still remain...
They also will be fixed immediately after any notice from an user.

A new update can be downloaded, but REV num did not change.

rolf
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 14 · Cache Hits: 14   96   110 · Page-Gen-Time: 0.049005s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI