Thema: Delphi Problem mit Overflow

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Problem mit Overflow

  Alt 11. Aug 2006, 20:03
Der Try/Except Block überprüft gar nix sondern kommt einfach nur zur Ausführung, wenn eine Exception auftritt.

So, ich habe mir das ganze mal angeschaut und musste feststellen, das die Überlaufprüfung nicht wirksam ist, wenn man Bytes addiert. Dadurch das die 32 Bit Register nutzt, wird das Overflow Flag nicht gesetzt, da auch 32-bittig addiert wird. Wenn aber nun die Bereichsprüfung mit eingeschaltet ist, dann überprüft er danach das Ergebnis, ob es kleiner gleich 255 ist und somit in ein Byte passt. Ist dies nicht der Fall, dann schmeisst er die ERangeError Exception.

Im Anhang ein Bild vom erzeugten Code beim addieren von 2 Bytes zu einem 3. Byte mit Überlauf. Man sieht gut den Sprung bei gesetztem Overflow Flag (jno), die Begrenzung der Werte vor der Addition (and xxx, $00ff) und den Sprung bei Werten kleiner gleich 255 über die BoundError Auslösung.
Miniaturansicht angehängter Grafiken
boundscheck_204.gif  
  Mit Zitat antworten Zitat