Forum: Mikrocontroller und Digitale Elektronik Variablen überlauf Problem?


von Ralf (Gast)


Lesenswert?

Mit ist gerade aufgefallen, dass ich scheinbar doch noch ein paar 
Verstäntnissprobleme habe. Wenn ich in C eine 16Bit Variable definiere 
in einem 32Bit System und diese überlaufen lasse bis zur Unendlichkeit. 
Gibt es dann mögliche Auswirkungen auf andere Speicherbereiche, etwa 
weil die Highbyte der Speicherbank anderes genutzt werden, oder durch 
eventuell enstehende Flags die sich setzen?
Die zweite Frage ist nach den gebrauchten Zyklen pro Operation, gibt es 
da Übersichten oder müsste man sich das aus dem Assampler selbst 
zusammen reimen? Dann wüsste man z.B. ob if Anfragen mehr  zeit brauchen 
als Invertierer und Bitmasken zu benutzen ect.

Gruß Ralf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ralf schrieb:
> Wenn ich in C eine 16Bit Variable definiere
> in einem 32Bit System und diese überlaufen lasse bis zur Unendlichkeit.
"Unendlich" gibt es bei 16- oder 32-Bit Werten nicht. Die einen können 
von -2^15...2^15-1 (bzw. 0...2^16-1), die anderen von -2^31...2^31-1 
(bzw. 0...2^32-1) zählen, dann kommt jeweils ein Überlauf auf den 
negativsten Wert. Und dieses Verhalten ist unabhängig davon, ob du das 
auf einem 8, 16, 32 oder 64 Bit System machst. Es ist in der Sprache C 
so definiert. Und alles, was sich C-Compiler schimpft muss das können.

> Gibt es dann mögliche Auswirkungen auf andere Speicherbereiche, etwa
> weil die Highbyte der Speicherbank anderes genutzt werden, oder durch
> eventuell enstehende Flags die sich setzen?
Wie gesagt: uninteressant, denn der C-Compiler muss das korrekt 
umsetzen.

> Die zweite Frage ist nach den gebrauchten Zyklen pro Operation, gibt es
> da Übersichten oder müsste man sich das aus dem Assampler selbst
> zusammen reimen?
Du kannst das Assemblerlisting ansehen, und daraus nachrechnen, wieviele 
Takte der Code braucht. Oder du schreibst eine Routine, die vorher und 
nachher einen Zeitstempel nimmt und dann die Zeitdifferenz ausrechnet.

> Assampler
Hoppala... :-o

von Ralf (Gast)


Lesenswert?

jaja Assembler versaut .... ich habe eben meine eigene Sprache (viel 
besser als Assembler^^).. danke dir und mit Unendlichkeit habe ich 
gemeint ich zähle immer eins drauf und möchte hat den Überlauf bzw. er 
ist geduldet, möchte aber keine Auswirkungen davon sehen. Dann bin ich 
erst mal beruhigt ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.