Variablen überlauf Problem?

Gast #2271639
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
Moderator (Firma: Titel) Persönliche Seite #2271657
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
Gast #2271663
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 ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren