AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) ShellExecute liefert ERROR_ACCESS_DENIED
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute liefert ERROR_ACCESS_DENIED

Ein Thema von Amateurprofi · begonnen am 23. Dez 2017 · letzter Beitrag vom 17. Jan 2018
 
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.111 Beiträge
 
Delphi XE2 Professional
 
#9

AW: ShellExecute liefert ERROR_ACCESS_DENIED

  Alt 24. Dez 2017, 14:57
Achtung. Die X86-64 FPU hat keine Unterstützung mehr für 80-Bit Floats (Extended). Entweder wird unter 64-Bit also emuliert, was fürchterlich langsam sein wird, oder deine Werte werden einfach truncated.
Meine 64Bit CPU beinhaltet eine FPU, die 80-Bit Floats verarbeitet.
Da wird nichts emuliert oder fürchterlich langsam oder einfach truncated.
Aber: Delphi, im 64Bit Modus, unterstützt die FPU nicht mehr.
Gibt es irgendwelche Systeme die 80-Bit im 64-Modus unterstützen?

Die Kommentare im Lazarus-Forums sind hier ganz gut (http://forum.lazarus.freepascal.org/...?topic=29678.0)

Zitat:
The logic behind it is that the previous 80bit float is supported on the 32bit intel instruction set, but NOT on the 64bit AMD/Intel instruction set, so you would have to revert to soft float anyway. Technically one could use the FPU87 instruction set but it will conflict with the more modern fp units in that they use the same register space, i.e. you can use 1 and loose the benefits of the other.
Weiß nicht, on irgendwelche Systeme die 80-Bit im 64-Modus unterstützen.
Das ist in diesem Zusammenhang auch irrelevant, denn es ging nicht um die Frage ob irgendwelche Systeme die im 64 Bit Mode unterstützen, sondern darum ob eine X86-64 FPU sie unterstützt.
Und meine tut das! Wie das bei den neuesten CPUs ist weiß ich nicht.
Auch der obige Kommentar aus dem Lazarus Forum scheint mir fehlerhaft zu sein.
Im "Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M" steht z.B. für die FPU-Instruction FCOS (Cosinus berechnen):

Opcode = D9 FF
Instruction = FCOS
64-Bit Mode = Valid
Compat/Leg Mode = Valid
Description = Replace ST(0) with its cosine.

Also auch im 64 Bit Mode gültig, und das gilt für alle FPU-Befehle.
Die Aussage "Technically one could use the FPU87 instruction set but it will conflict with the more modern fp units in that they use the same register space" ist nur bedingt richtig.
Richtig ist, dass die FPU-Register und die 64 Bit MMX-Register den gleichen Adressraum belegen.
Richtig ist aber auch dass das bei den 128Bit XMM-Registern NICHT der Fall ist, d.h. FPU- und SSE-Register sind voneinander getrennt.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  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 09:24 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