Changes in upcoming compiler release

Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1372
Registered: 03 / 2005
Subject:

Changes in upcoming compiler release

 · 
Posted: 02.11.2021 - 10:59  ·  #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
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: Changes in upcoming compiler release

 · 
Posted: 02.11.2021 - 17:42  ·  #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
Gender:
Age: 24
Posts: 1372
Registered: 03 / 2005
Subject:

Re: Changes in upcoming compiler release

 · 
Posted: 02.11.2021 - 17:54  ·  #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
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: 15 · Cache Hits: 13   64   77 · Page-Gen-Time: 0.02641s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI