AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Delphi Internals: Exception Handling unter 64 Bit?
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Internals: Exception Handling unter 64 Bit?

Ein Thema von Zacherl · begonnen am 6. Mär 2014 · letzter Beitrag vom 7. Mär 2014
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Delphi Internals: Exception Handling unter 64 Bit?

  Alt 6. Mär 2014, 14:15
Hallo zusammen,

ich habe eine nicht ganz triviale Frage für die Leute, die gerne auch mal etwas unter die Haube schauen. Beim 64 Bit Compiler von Delphi wurde die Art, wie die kompilierten Programme Exceptions handlen laut diversen Quellen komplett überarbeitet.

Bei meinen Nachforschungen habe ich unter anderem festgestellt, dass die generierte PE Datei eine zusätzliche .pdata Section enthält.
Zitat:
The biggest difference in exception handling between Delphi 32 and 64-bit is that in Delphi XE2 64-bit you will gain more performance because of different internal exception mechanism. For 32-bit applications, the Delphi compiler (dcc32.exe) generates additional code that is executed any way and that causes performance loss. The 64-bit compiler (dcc64.exe) doesn’t generate such code, it generates metadata and stores it in the PDATA section of an executable file instead.
Hat jemand hierzu genauere Informationen (Struktur der Daten, Für was werden die zusätzlichen Daten verwendet, Wie werden sie verwendet, etc)?

Hintergrund ist, dass ich eine .dll per Manual Mapping in den Speicher lade und Funktionen daraus aufrufe. Unter 32 bit funktioniert dies mit Delphi DLLs wunderbar. C++ DLLs, welche ohne SafeSEH kompiliert wurden, kann ich sogar unter 32 und 64 Bit erfolgreich laden. Leider führt jeder try..except oder try..finally Block in einer 64 Bit Delphi DLL unmittelbar zu einer non continuable Exception, woraus ich schließe, dass dies mit dem neuen Exception Handling zusammenhängen muss (insbesondere, dass ich beim Mappen die .pdata Section noch parsen und anwenden muss).

Viele Grüße
Zacherl
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Delphi Internals: Exception Handling unter 64 Bit?

  Alt 6. Mär 2014, 21:14
Bin selbst auf die Lösung gekommen. Ein einfacher MSDN-Library durchsuchenRtlAddFunctionTable Aufruf reicht, um die Exception Table auf den aktuellen Programmkontext anzuwenden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Delphi Internals: Exception Handling unter 64 Bit?

  Alt 7. Mär 2014, 06:25
Delphi hält sich einfach nur an das Exception Handling, welches unter Win64 vorgeschrieben ist. Für mehr Informationen empfehle ich dir diese Links:
Ich hoffe das füllt ein wenig den Hintergrund, auch wenn du schon eine Lösung gefunden hast.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Delphi Internals: Exception Handling unter 64 Bit?

  Alt 7. Mär 2014, 12:19
Interessanter Lesestoff. Danke dir
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  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 01:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz