Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

ICEMAN42
 
Avatar
 
Betreff:

Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 17.07.2012 - 10:15 Uhr  ·  #1
Hallo.
Ich habe noch einen kleinen Bug im Compiler gefunden, wenn man für einen XMEGA übersetzt:

Code

program Test;

Device = xmega32a4u, VCC=3.3;

Define
  //>> CPU=32MHz, PeripherX4=32MHz, PeripherX2=32MHz
  OSCtype       = int32MHz, PLLmul=4, prescB=1, prescC=1;
  StackSize     = $0100, iData;
  FrameSize     = $0100, iData;

Implementation

{$DATA}
var   Reg10[$10]          : byte;
      TempBit[@Reg10,0]   : bit;

{$PDATA}
var   PReg10[$10]         : byte;
      PTempBit[@PReg10,0] : bit;

{$IDATA}

begin
  Reg10 := 0;         //IST OK
  TempBit := TRUE;    //IST nicht OK
  PReg10 := 0;        //IST OK
  PTempBit := TRUE;   //IST OK

  loop
  endloop;
end Test.


Die Bitbearbeitung für $PDATA ist OK (IN; SBR; OUT), aber für $DATA wird auch der Code IN/SBR/OUT erzeugt. Müsste doch eigentlich MOV/SBR/MOV sein :'(
SETBIT erzeugt den selben Code.
Wenn man das komplette Byte schreibt, wird aber richtig unterschieden.

Im Compiler-Handbuch steht zwar auf Seite 201, dass $DATA beim XMEGA vermieden werden sollte, aber ansich ist ja durch die Deklaration eindeutig, ob ich das Register ($DATA) oder den IO-Bereich ($PDATA) benutzen möchte.

Ist ja nur ein kleiner Fehler, hat mich aber verdammt viel Zeit gekostet, als ich mein Programm vom MEGA auf den XMEGA portiert habe :'(

Projekt ist dabei.
Viele Grüsse

Jürgen
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 17.07.2012 - 15:05 Uhr  ·  #2
Hallo Jürgen,
diese Konstruktion:
Code
{$DATA}
var   Reg10[$10]          : byte;
      TempBit[@Reg10,0]   : bit;

ist leider beim XMega nicht möglich. Register R0..R31 sind ausgeschlossen.
Hier gibt es in Zukunft eine Fehlermeldung.

rolf
ICEMAN42
 
Avatar
 
Betreff:

Re: Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 18.07.2012 - 09:31 Uhr  ·  #3
Hallo Rolf.

Warum ist es beim XMEGA eigendlich nicht möglich?
IO-Bereich und Register überlagern sich zwar, aber durch $DATA bzw. $PDATA ist ja eindeutig, worauf ich zugreifen möchte.
Wie schon gesagt, wenn man das Byte anspricht, wird ja schon richtig unterschieden.

Grüsse Jürgen
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 18.07.2012 - 12:02 Uhr  ·  #4
Hallo Jürgen,
der Grund dafür ist die Compiler interne Verarbeitung von Bits.
Im Gegensatz zum AVR liegen die Register ja nichtmehr im linearen
Adress Raum. Das bringt in diesem Fall das Problem mit sich.
Ich denke das ist keine Einschränkung da Bits in den Registern
m.E. wenig Sinn machen.

rolf
ICEMAN42
 
Avatar
 
Betreff:

Re: Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 18.07.2012 - 12:26 Uhr  ·  #5
Hallo Rolf.

OK, dann werde ich die Bitmanipulation witerhin in Assembler machen.
Ich dachte nur, es wäre schöner wegen der Lesbarkeit des Codes.

Grüsse
Jürgen
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 18.07.2012 - 15:17 Uhr  ·  #6
Hallo Jürgen,

wieso eigentlich bit Manipulation in Registern ???

rolf
ICEMAN42
 
Avatar
 
Betreff:

Re: Noch ein kleiner Bug im Compiler für XMEGA bei der Bitverarbeitung

 · 
Gepostet: 18.07.2012 - 17:03 Uhr  ·  #7
Hallo Rolf.

Mache ich in einer ISR. Wegen der Geschwindigkeit. Ist eine 'Altlast' aus dem ATMEGA.
Muss ich nochmal überlegen, ob ich mir das jetzt sparen kann.

Grüsse Jürgen
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 14 · Cache Hits: 14   122   136 · Page-Gen-Time: 0.024866s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI