AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Seltsames Phänomen: Unterschied zwischen Integer und Int64
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsames Phänomen: Unterschied zwischen Integer und Int64

Ein Thema von hschmid67 · begonnen am 9. Jan 2021 · letzter Beitrag vom 9. Jan 2021
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.663 Beiträge
 
Delphi 12 Athens
 
#1

AW: Seltsames Phänomen: Unterschied zwischen Integer und Int64

  Alt 9. Jan 2021, 13:59
Obwohl ich persönlich kein Freund des Fluent-Interfaces bin, würde ich schon meinen, dass der Code so korrekt ist. Schaut man sich aber den erzeugten Assembler-Code an, wird schnell klar warum das nicht so ist. Da werden erst alle Parameter auf den Stack gelegt und dann die einzelnen Aufrufe ausgeführt. Weil der Rückgabewert ja eh schon auf dem Stack liegt, ist das eigentlich gar nicht so dumm gelöst. Faktisch wird die Fluent-Aufruf-Kette aber dann so behandelt wie ein einzelner Aufruf mit zwei Parametern - wie in dem Link beschrieben mit den entsprechenden Nebeneffekten.
Code:
Project765.dpr.44: lTest.SetTo2(lCount).SetI(lCount + 1).WriteInt;
0041D30F 8B45F8           mov eax,[ebp-$08]
0041D312 8B55FC          mov edx,[ebp-$04]
0041D315 83C001           add eax,$01
0041D318 83D200           adc edx,$00
0041D31B 52               push edx
0041D31C 50               push eax
0041D31D 8D55F8           lea edx,[ebp-$08]
0041D320 8B45F4           mov eax,[ebp-$0c]
0041D323 E800FFFFFF      call TTest.SetTo2
0041D328 E827FFFFFF      call TTest.SetI
0041D32D E84AFFFFFF      call TTest.WriteInt
0041D332 33C0             xor eax,eax
0041D334 5A              pop edx
0041D335 59               pop ecx
0041D336 59               pop ecx
0041D337 648910           mov fs:[eax],edx
0041D33A 684FD34100       push $0041d34f
Project765.dpr.46: lTest.Free;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:00 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