Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Überschneidung von Word- und Bytevariablen Kategorie: C-Control I V1.1 (von Dietmar, Homepage - 8.09.2005 2:12)
 Als Antwort auf Re: Nein, das kann nicht funktionieren!! von Dierk - 7.09.2005 18:13
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini

Hallo miteinander

Word- und Bytevariablen, bei denen bei der Definition ein Index angegeben wird, können sich bei ungünstiger Wahl dieses Indexes überschneiden. Sie belegen also die gleichen Speicherzellen im RAM-Speicher, was nicht sofort ersichtlich ist.

Werden zwei Bytevariablen, die sich mit einer Wordvariable überlappen, mit folgender Pseudo-Syntax definiert...

define wordvariable1 word[w]
define bytevariable1 byte[b]
define bytevariable2 byte[b+1]

...kann der Index "b" aus dem Index "w" folgendermaßen berechnet werden:

b=(w-1)*2+1

Dazu ein Beispiel:

define wordvariable word[5]

b=(5-1)*2+1 = 9

Die Wordvariable mit dem Index 5 belegt also den gleichen Speicher wie die Bytevariablen mit dem Index 9 und 10.

Zur Verdeutlichung noch eine Tabelle:

Wordindex |   1   |   2   |   3   |   4   |   5    |    6    |    7    |    8    |    9    |  ...
----------|---------------------------------------------------------------------------------------
Byteindex | 1 & 2 | 3 & 4 | 5 & 6 | 7 & 8 | 9 & 10 | 11 & 12 | 13 & 14 | 15 & 16 | 17 & 18 |  ...

Gruß
Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: