AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EIntOverflow bei LongWord, nicht aber bei Word

Ein Thema von Der schöne Günther · begonnen am 28. Mai 2018 · letzter Beitrag vom 29. Mai 2018
 
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#11

AW: EIntOverflow bei LongWord, nicht aber bei Word

  Alt 28. Mai 2018, 19:03
Für 16-Bit wird der 'falsche' Opcode benutzt (eigentlich der richtige aber wg. der 32-Bit Arithmetik wird in beiden Fällen das Overflow-Bit nicht gesetzt, also netto falscher Code)
Code:
Unit2.pas.38: a := 1000;
005CE68A 66C745FEE803     mov word ptr [ebp-$02],$03e8
Unit2.pas.39: b := 10000;
005CE690 66C745FC1027     mov word ptr [ebp-$04],$2710
Unit2.pas.40: acceptDouble(a-b);
005CE696 0FB745FE        movzx eax,[ebp-$02]
005CE69A 0FB755FC        movzx edx,[ebp-$04]
005CE69E 2BC2             sub eax,edx
005CE6A0 7105             jno $005ce6a7
005CE6A2 E80595E3FF      call @IntOver
Da OF nicht gesetzt ist, gibt's keinen Int-Overflow. Bei 32-Bitwird nicht OF getestet sondern CF, und das ist in beiden Fällen gesetzt.
Code:
Unit2.pas.44: acceptDouble(x-y); // << EIntOverflow
005CE6CA 8B45F8           mov eax,[ebp-$08]
005CE6CD 2B45F4           sub eax,[ebp-$0c]
005CE6D0 7305             jnb $005ce6d7
005CE6D2 E8D594E3FF       call @IntOver
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz