Changes in upcoming compiler release

Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Changes in upcoming compiler release

 · 
Gepostet: 02.11.2021 - 10:59 Uhr  ·  #1
AVRCo has always defined {$DATA} as being the registers plus IO space.

In older chips this led to no ambiguity and a statement like

Code
{$DATA}
var
  x : byte;


would lead to x being stored in the register area.

For newer chips (XMEGA and UPDI chips) the registers have been moved out of normal data space. This also means that the IO page has moved in these chips.

This causes ambiguity issues in various parts of the compiler, because where previously the data space could be inferred from the address, in these later chips it cannot.

Therefore from the next release I will be prohibiting variable definitions in the DATA space, unless they are referenced.

so

Code
{$DATA}
var
  x : byte;


will be banned, but variables of the form

Code
{$DATA}
var
  x[_SCRATCH0] : byte;


will be allowed.

Older chips will not be affected.

=====================================

AVRCo hat {$DATA} immer als die Register plus IO Raum definiert.

In älteren Chips führte dies zu keiner Zweideutigkeit und eine Anweisung wie

Code
{$DATA}
var
  x : byte;


würde dazu führen, dass x im Registerbereich gespeichert wird.

Bei neueren Chips (XMEGA- und UPDI-Chips) wurden die Register aus dem normalen Datenbereich ausgelagert. Das bedeutet auch, dass die IO-Seite bei diesen Chips verschoben wurde.

Dies führt zu Mehrdeutigkeitsproblemen in verschiedenen Teilen des Compilers, denn wo früher der Datenbereich aus der Adresse abgeleitet werden konnte, ist dies bei diesen neueren Chips nicht mehr möglich.

Daher werde ich ab der nächsten Version Variablendefinitionen im DATA-Raum verbieten, es sei denn, sie werden referenziert.

also

Code
{$DATA}
var
  x : byte;


verboten sein, aber Variablen der Form

Code
{$DATA}
var
  x[_SCRATCH0] : byte;


werden erlaubt sein.

Ältere Chips werden davon nicht betroffen sein.

Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Changes in upcoming compiler release

 · 
Gepostet: 02.11.2021 - 17:42 Uhr  ·  #2
Sorry, aber hat das jemand verstanden und kann es mir erklaren? Und was bedeutet das für bestehende Projekte mit XMegas?

Was bewirkt/bedeutet dieses [ _SCRATCH0] ?

Gruss
Harry
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: Changes in upcoming compiler release

 · 
Gepostet: 02.11.2021 - 17:54 Uhr  ·  #3
Sorry Harry, not sure what went on there.

Code
x[ _SCRATCH0] : byte


should read

Code
x[@_SCRATCH0] : byte


_SCRATCHn is a location to store fast access bytes in some devices, but is just given as an example.

Existing XMEGA projects should be unaffected, but if they are affected then they are faulty.

Regards

Merlin

=========================================

Tut mir leid, Harry, ich weiß nicht, was da los war.

Code
x[ _SCRATCH0] : byte


sollte lauten

Code
x[@_SCRATCH0] : byte


_SCRATCHn ist ein Speicherplatz für schnell zugreifende Bytes in einigen Geräten, wird aber nur als Beispiel angegeben.

Bestehende XMEGA-Projekte sollten nicht betroffen sein, aber wenn sie betroffen sind, sind sie fehlerhaft.

Mit freundlichen Grüßen

Merlin
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: 15 · Cache Hits: 13   64   77 · Page-Gen-Time: 0.028665s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI